Ошибка: неверный адрес во время миграции трюфелей в сети Ринкеби.

Я не могу развернуть свой контракт в сети Rinkeby через truffle migrate --reset --network rinkeby.

Мой файл truffle.js выглядит так:

{ networks: { rinkeby: { { from : 'my_unlocked_and_non_empty_wallet_address', network_id : 4, gas : 2700000, gasPrice : 20000000000, host : "localhost", port : 8545 } } } }

Узел Geth работает внутри Docker на том же хосте, на котором я пытаюсь его развернуть. Я успешно подключился к этому узлу через консоль трюфеля.

При запуске truffle migrate --reset --network rinkebyу меня ошибка:

Запуск миграции: 1_initial_migration.js Развертывание миграции... ... 0x076235e944e70e561a0b9b6b14307157d07775d67a46689e44ffaf7675829b84 /home/admin/.nvm/versions/node/v8.2.1/lib/node_modules/truffle.3jthrow/build. «неверный адрес»); ^

Ошибка: неверный адрес в inputAddressFormatter (/home/admin/.nvm/versions/node/v8.2.1/lib/node_modules/truffle/build/cli.bundled.js:30534:11) в /home/admin/.nvm/ version/node/v8.2.1/lib/node_modules/truffle/build/cli.bundled.js:36660:28 в Array.map (собственный) в Method.formatInput (/home/admin/.nvm/versions/node/v8 .2.1/lib/node_modules/truffle/build/cli.bundled.js:36659:32) в Method.toPayload (/home/admin/.nvm/versions/node/v8.2.1/lib/node_modules/truffle/build/ cli.bundled.js:36685:23) в Eth.send [как getCode] (/home/admin/.nvm/versions/node/v8.2.1/lib/node_modules/truffle/build/cli.bundled.js:36710 :30) в Object.callback (/home/admin/.nvm/versions/node/v8.2.1/lib/node_modules/truffle/build/cli.bundled.js:241521:39) в /home/admin/.nvm /versions/node/v8.2.1/lib/node_modules/truffle/build/cli.bundled.js:36713:25 в /home/admin/.nvm/versions/node/v8.2.1/lib/node_modules/truffle/build/cli.bundled.js:243485:9 в /home/admin/.nvm/versions/node/v8.2.1/lib/node_modules/truffle/ сборка/cli.bundled.js:78847:11

Транзакция создания контракта из вывода может быть основана здесь: 0x076235e944e70e561a0b9b6b14307157d07775d67a46689e44ffaf7675829b84

Есть результат небольшой отладки файла cli.bundled.js .

Вот что я получаю при попытке развернуть в сети testrpc :

... 0x34865735e70707919805f2850b823e67adb25ff0fe059d5ece5836d9430a7208 [ [Function: inputAddressFormatter], [Function: inputDefaultBlockNumberFormatter] ] [ '0x97280c75faa2e7e1b2a182e34fffcb77c58b9b56' ] Migrations: 0x97280c75faa2e7e1b2a182e34fffcb77c58b9b56

А в сети Ринкеби :

... 0xa2a4697161936052f320bbce9171600741cf155785d25ecf45d914f1445be648 [[Function: inputAddressFormatter], [Function: inputDefaultBlockNumberFormatter]] [null]

Как видим, в случае с Ринкеби у нас вместо действительного адреса контракта нуль. Но... почему это произошло?

Хорошо, я пошел глубже.

Итак, когда выполняется эта строка ( https://github.com/ethereum/web3.js/blob/7560f273359071afae31d010b97fa1872dacd66c/lib/web3/contract.js#L119 ) кода web3.js (строка 222802 в cli.bundled.js Truffel ) мы получаем ответ с нулевым значением в поле contractAddress .

Например:

{ blockHash: '0xd08cee7ec0d9e50185099ca403b53798081f94ba73bbb9caa7a72fa2afb2591f', blockNumber: 696482, contractAddress: null, cumulativeGasUsed: 201492, from: '0xdc2e0c6e3d08bc53200ea0a90ec4f550d9d1f616', gasUsed: 0, logs: [], logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', root: '0x4ae760bf36bd646016db7018f16f6e5fadc2200aee17a89337b6d0a26534fb03', to: null, transactionHash: '0x6863a10cc9e42f62056f5defebd9f249ced92c024c1cb2ed94ae1a1efb1a5cc5', transactionIndex: 0 }

И пример для testrpc, который работает правильно:

{ transactionHash: '0x55bb0dc39488b897ced17831ff6308741045b463993d3b2d239748434b134b89', transactionIndex: 0, blockHash: '0xa04dc4a145b6884dfa78cfc4d55888b4e6c2ed41b8888cff72458728b474f6da', blockNumber: 15, gasUsed: 201262, cumulativeGasUsed: 201262, contractAddress: '0x0bfed93fdbcd00323918ad1d361cd999ba291ce4', logs: [] }

Ответы (1)

Я нашел причину. ContractAddress имеет значение null , потому что я использую узел geth во встроенном/облегченном режиме — у него недостаточно информации о блокчейне. Тему можно закрыть.