Развертывание смарт-контракта в тестовой сети Ethereum

Я следил за этим руководством https://ethereum.stackexchange.com/a/2787/2426 ( или эквивалентно https://www.ethereum.org/greeter ) при попытке развернуть простой Smart Contract в тестовую сеть Ethereum. Я использую geth CLI на testnet. Все работает, кроме последнего шага, загружая код в блок-цепочку. Это то, что я сделал:

GETH SECOND INSTANCE:

geth --testnet --unlock 0 attach ipc:.ethereum/testnet/geth.ipc
    instance: Geth/v1.4.10-stable-5f55d95a/linux/go1.6.2
    coinbase: 0x47978a69f410d0f61850c92acdb0d4c464d70937
    at block: 1697809 (Mon, 26 Sep 2016 07:10:20 UTC)
     datadir: .ethereum/testnet
     modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

> web3.fromWei(eth.getBalance(eth.accounts[0]).toNumber(), "ether")
"5.024681313417504"

COMPILE:

> var greeterSource = 'contract mortal { address owner; function mortal() { owner = msg.sender; } function kill() { if (msg.sender == owner) suicide(owner); } } contract greeter is mortal { string greeting; function greeter(string _greeting) public { greeting = _greeting; } function greet() constant returns (string) { return greeting; } }'

> var greeterCompiled = web3.eth.compile.solidity(greeterSource)

ВСТАВЛЯЙТЕ КОД КОНТРАКТА В БЛОКЧАЙН:

> var _greeting = "Good Morning, Smart Contract!"

> var greeterContract = web3.eth.contract(greeterCompiled.greeter.info.abiDefinition);

> var greeter = greeterContract.new(_greeting, {from: eth.accounts[0], data: greeterCompiled.greeter.code, gas: 4000000}, function(e, contract) { if (!e) { if (!contract.address) { console.log("Contract transaction send: TransactionHash: " + contract.transactionHash + " waiting to be mined..."); } else { console.log("Contract mined! Address: " + contract.address); console.log(contract); } } })

> debug.verbosity(4)

При изучении greeter это результат:

> greeter
    {
      abi: [{
          constant: false,
          inputs: [],
          name: "kill",
          outputs: [],
          payable: false,
          type: "function"
      }, {
          constant: true,
          inputs: [],
          name: "greet",
          outputs: [{...}],
          payable: false,
          type: "function"
      }, {
          inputs: [{...}],
          type: "constructor"
      }],
      address: undefined,
      transactionHash: null
    }

> greeter.greet();
    TypeError: 'greet' is not a function
        at <anonymous>:1:1

Я подождал минуту и ​​не получил такого сообщения:

Contract mined! address: 0x...

Итак, контракт, похоже, правильно скомпилирован, но я не могу получить ни адрес, ни адрес, ни txHash после загрузки в блок-цепочку. Возможно, он не был загружен или заминирован. Как я могу понять это? Я пропустил что-то важное?

Изменить: сразу после попытки развернуть журнал сообщает много сообщений вроде этого:

I0926 10:31:13.097817 core/state/state_object.go:160] 47978a69f410d0f61850c92acdb0d4c464d70937: #1048576 631783523629846744286 (+ 420000000000000)

Будучи 0x47978a69f410d0f61850c92acdb0d4c464d70937 адресом coinbase узла geth.

5 голосов | спросил Juan Ignacio Pérez Sacristán 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 26 Sep 2016 12:40:48 +0300 2016, 12:40:48

1 ответ


4

Проблема в том, что ваша команда geth --testnet --unlock 0 attach ipc:.ethereum/testnet/geth.ipc фактически не разблокирует учетную запись. Эта команда просто присоединяет консоль к исполняемому экземпляру geth.

Если вы использовали geth --testnet --unlock 0 console, вам будет предложено разблокировать вашу учетную запись со следующим сообщением:

Unlocking account 0 | Attempt 1/3
Passphrase: 
I0926 21:48:25.702979 cmd/geth/accountcmd.go:189] Unlocked account 3b44...a400

Если вы хотите использовать команду geth ... attach, запустите следующую команду перед выполнением транзакций:

personal.unlockAccount(eth.accounts[0], "{your password}");

Это разблокирует вашу учетную запись, а затем включит оплату транзакции.

ответил The Officious BokkyPooBah 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 26 Sep 2016 14:54:26 +0300 2016, 14:54:26

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

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

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