Error: dirección no válida durante el proceso de migración de trufas en la red Rinkeby

No puedo implementar mi contrato en la red de Rinkeby a través de truffle migrate --reset --network rinkeby.

Mi archivo truffle.js se ve así:

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

El nodo Geth se ejecuta dentro de Docker en el mismo host donde intento implementar. Me conecté con éxito a este nodo a través de la consola de trufas.

Cuando ejecuto truffle migrate --reset --network rinkebytengo un error:

Ejecutando migración: 1_initial_migration.js Implementando migraciones... ... 0x076235e944e70e561a0b9b6b14307157d07775d67a46689e44ffaf7675829b84 /home/admin/.nvm/versions/node/v8.2.1/lib/node_modules/truffle/build/cli3 throw new Error5 'dirección inválida'); ^

Error: dirección no válida en inputAddressFormatter (/home/admin/.nvm/versions/node/v8.2.1/lib/node_modules/truffle/build/cli.bundled.js:30534:11) en /home/admin/.nvm/ versions/node/v8.2.1/lib/node_modules/truffle/build/cli.bundled.js:36660:28 en Array.map (nativo) en Method.formatInput (/home/admin/.nvm/versions/node/v8 .2.1/lib/node_modules/truffle/build/cli.bundled.js:36659:32) en Method.toPayload (/home/admin/.nvm/versions/node/v8.2.1/lib/node_modules/truffle/build/ cli.bundled.js:36685:23) en Eth.send [como getCode] (/home/admin/.nvm/versions/node/v8.2.1/lib/node_modules/truffle/build/cli.bundled.js:36710 :30) en Object.callback (/home/admin/.nvm/versions/node/v8.2.1/lib/node_modules/truffle/build/cli.bundled.js:241521:39) en /home/admin/.nvm /versions/node/v8.2.1/lib/node_modules/truffle/build/cli.bundled.js:36713:25 en /home/admin/.nvm/versions/node/v8.2.1/lib/node_modules/truffle/build/cli.bundled.js:243485:9 en /home/admin/.nvm/versions/node/v8.2.1/lib/node_modules/truffle/ build/cli.bundled.js:78847:11

La transacción de creación de contrato desde la salida se puede encontrar aquí: 0x076235e944e70e561a0b9b6b14307157d07775d67a46689e44ffaf7675829b84

Hay un resultado de poca depuración del archivo cli.bundled.js .

Esto es lo que obtengo cuando trato de implementar en la red testrpc :

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

Y en la red Rinkeby :

... 0xa2a4697161936052f320bbce9171600741cf155785d25ecf45d914f1445be648 [ [Función: inputAddressFormatter], [Función: inputDefaultBlockNumberFormatter] ] [null]

Como podemos ver, en el caso de Rinkeby tenemos una dirección de contrato nula en lugar de válida. Pero... ¿por qué ha sucedido?

Ok, fui más profundo.

Entonces, cuando ejecuta esta línea ( https://github.com/ethereum/web3.js/blob/7560f273359071afae31d010b97fa1872dacd66c/lib/web3/contract.js#L119 ) del código web3.js (línea 222802 en cli.bundled.js de Truffel ) recibimos una respuesta nula en el campo contractAddress .

Por ejemplo:

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

Y ejemplo para testrpc que funciona correctamente:

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

También subido en GitHub .

Respuestas (1)

He encontrado la razón. contractAddress es nulo porque estoy usando el nodo geth en modo incrustado/ligero; no tiene suficiente información sobre la cadena de bloques. El problema puede estar cerrado.