После загрузки скрипта прочности я получаю 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 [объект объекта]   правда

Что мне делать?

6 голосов | спросил Rahul Sharma 7 12016vEurope/Moscow11bEurope/MoscowMon, 07 Nov 2016 07:02:16 +0300 2016, 07:02:16

1 ответ


3

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

Шаг 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

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

ответил Rahul Sharma 9 32016vEurope/Moscow11bEurope/MoscowWed, 09 Nov 2016 07:28:11 +0300 2016, 07:28:11

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132