Después de cargar el script de solidez, obtengo nulo [objeto Objeto]. ¿Qué tengo que hacer?

Escribí un contrato de bienvenida y mortal, son los siguientes:

contract mortal {

    address owner;

    function mortal() { owner = msg.sender; }

    function kill() { if (msg.sender == owner) selfdestruct(owner); }
}

contract greeter is mortal {

    string greeting;

    function greeter(string _greeting) public {
        greeting = _greeting;
    }

    /* main function */
    function greet() constant returns (string) {
        return greeting;
    }
}

Luego compilé el código usando el compilador en línea Solidity. Copié el código compilado y lo pegué en un archivo de texto con el nombre "helloworld.js" de la siguiente manera:

var _greeting = /* var of type string here */ ;
var greeterContract = web3.eth.contract([
  {"constant":false,"inputs": [], "name":"kill", "outputs":[], "payable":false, "type":"function"}, 
  {"constant":true, "inputs": [], "name":"greet", "outputs":[{"name":"", "type":"string"}], "payable":false, "type":"function"},
  {"inputs": [{"name":"_greeting", "type":"string"}], "type":"constructor"}]);

var greeter = greeterContract.new(_greeting, 
  {
    from: web3.eth.accounts[0], 
    data: 'data (some numbers and alphabets)', 
    gas: 4700000
  }, function (e, contract) {
    console.log(e, contract);
    if (typeof contract.address !== 'undefined') {
      console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
    }
  }
)

Fui al cmd y comencé mi red blockchain. En la consola geth, desbloqueé mi cuenta con etherbase y usé loadScript("C:/Rahul13615/blockchain/node1/contracts/helloworld.js")

Idealmente debería devolver: ¡Contrato minado! dirección: alguna dirección

pero vuelve:

loadScript("C:/Rahul13615/blockchain/node1/contracts/helloworld.js") nulo [objeto Objeto] verdadero

¿Qué tengo que hacer?

Es posible que desee responder su propia pregunta y agregar los pasos que tomó para que funcione, luego acepte su respuesta. Para que otros que se encuentren con el mismo problema puedan trabajar en su solución.

Respuestas (1)

Publiqué esta pregunta hace una semana y con la ayuda de mis compañeros pude resolverla. La respuesta detallada es la siguiente:

Paso 1:

Con el siguiente comando, inicie su red blockchain privada (cambie los directorios de datos y otros parámetros de acuerdo con su configuración personalizada)

geth --identity "node1" --rpc --rpcport "8000" --rpccorsdomain "*" --datadir     "C:\Rahul13615\blockchain\node1" --port "30303" --nodiscover --ipcapi "admin,db,eth,debug,miner,net,shh,txpool,personal,web3" --rpcapi "db,eth,net,web3" --autodag --networkid 100 --nat "any"

Deje este terminal como está (pero no lo cierre) después de ejecutar el comando anterior.

Paso 2

Abre otra terminal y escribe:

geth attach

Esto abrirá la consola geth. Ahora debe haber creado algunas cuentas. Configuraremos etherbase para cualquier cuenta y ejecutaremos el script usando su dirección. Entonces ingrese los siguientes comandos.

primary = eth.accounts[0]
>true (this is the output of above command)

web3.miner.setEtherbase(primary)
>true

personal.unlockAccount(primary,"passphrase") //here passphrase is the string you used while creating an account
>true

miner.start()
>true

Ahora, en helloworld.js, guardé el código compilado que copié del compilador de solidez del navegador en línea. Cambie la primera línea de código a:

var _greeting = "Hello World" ;

Guarde helloworld.js y ejecute el siguiente comando

loadScript("helloworld.js")
>null [object Object]
Contract mined! Address : someAddress, Txhash : somevalue

greeter.greet();
>Hello World

miner.stop()
>true

Por favor comente para cualquier duda o pregunta.