錯誤:Rinkeby 網路中 truffle 遷移過程中的地址無效
我無法通過
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 控制台成功連接到該節點。
當我執行時
truffle migrate --reset --network rinkeby
出現錯誤:執行遷移: 1_initial_migration.js 部署遷移… … 0x076235e944e70e561a0b9b6b14307157d07775d67a46689e44ffaf7675829b84 /home/admin/.nvm/versions/node/v8.2.1/lib/node_modules/truffle/build/cli.bund(error.led) ‘無效地址’); ^
錯誤:/home/admin/.nvm/ 的 inputAddressFormatter (/home/admin/.nvm/versions/node/v8.2.1/lib/node_modules/truffle/build/cli.bundled.js:30534:11) 地址無效Array.map (native) at Method.formatInput (/home/admin/.nvm/versions/node/v8) 的versions/node/v8.2.1/lib/node_modules/truffle/build/cli.bundled.js:36660:28 .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
$$ as 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/節點/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/build/cli.bundled.js:78847:11
輸出的合約創建交易可以在這裡建立:0x076235e944e70e561a0b9b6b14307157d07775d67a46689e44ffaf7675829b84
有一個調試cli.bundled.js文件的結果。
這是我嘗試在testrpc網路中部署時得到的結果:
… 0x34865735e70707919805f2850b823e67adb25ff0fe059d5ece5836d9430a7208
$$ [Function: inputAddressFormatter $$, $$ Function: inputDefaultBlockNumberFormatter $$]$$ ‘0x97280c75faa2e7e1b2a182e34fffcb77c58b9b56’ $$ 遷移:0x97280c75faa2e7e1b2a182e34fffcb77c58b9b56
在Rinkeby網路中:
… 0xa2a4697161936052f320bbce9171600741cf155785d25ecf45d914f1445be648
$$ [Function: inputAddressFormatter $$, $$ Function: inputDefaultBlockNumberFormatter $$]$$ null $$
正如我們所看到的,在 Rinkeby 的情況下,我們有 null 而不是有效的合約地址。但是……為什麼會這樣?
好的,我更深入了。
因此,當執行web3.js 程式碼的這一行( https://github.com/ethereum/web3.js/blob/7560f273359071afae31d010b97fa1872dacd66c/lib/web3/contract.js#L119 )時(Truffel 的cli.bundled.js中的第 222802 行) ) 我們在contractAddress欄位中得到null的答案。
例如:
{ 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: [] }
我找到了原因。 contractAddress為空,因為我在嵌入式/輕型模式下使用 geth 節點 - 它沒有足夠的關於區塊鏈的資訊。問題可能已關閉。