После загрузки скрипта Solidity я получаю null [object Object]. Что я должен делать?

Я написал контракт гриферу и морталу, они такие:

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;
    }
}

Затем я скомпилировал код с помощью онлайн-компилятора Solidity. Я скопировал скомпилированный код и вставил его в текстовый файл с именем «helloworld.js» следующим образом:

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);
    }
  }
)

Я пошел в cmd и запустил свою сеть блокчейнов. В консоли geth я разблокировал свою учетную запись с помощью etherbase и использовал loadScript ("C:/Rahul13615/blockchain/node1/contracts/helloworld.js").

В идеале должно вернуться: Контракт заминирован! адрес: какой-то адрес

но он возвращает:

loadScript("C:/Rahul13615/blockchain/node1/contracts/helloworld.js") null [object Object] true

Что я должен делать?

Вы можете ответить на свой вопрос и добавить, какие шаги вы предприняли, чтобы заставить его работать, а затем принять свой ответ самостоятельно. Чтобы другие, столкнувшиеся с той же проблемой, могли использовать ваше решение.

Ответы (1)

Я разместил этот вопрос неделю назад, и с помощью моих сверстников я смог его решить. Подробный ответ выглядит следующим образом:

Шаг 1:

Используя следующую команду, запустите свою частную сеть блокчейнов (измените каталоги данных и другие параметры в соответствии с вашими пользовательскими настройками).

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"

Оставьте этот терминал как есть (но не закрывайте его) после выполнения вышеуказанной команды.

Шаг 2

Откройте другой терминал и введите:

geth attach

Это откроет консоль geth. Теперь вы, должно быть, создали несколько учетных записей. Мы установим etherbase для любой учетной записи и выполним скрипт, используя его адрес. Итак, введите следующие команды.

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

Теперь в helloworld.js я сохранил скомпилированный код, который я скопировал из онлайн-компилятора солидности браузера. Измените первую строку кода на:

var _greeting = "Hello World" ;

Сохраните helloworld.js и выполните следующую команду

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

greeter.greet();
>Hello World

miner.stop()
>true

Пожалуйста, прокомментируйте любые сомнения или вопросы.