Truffle Ropsten Migración en ejecución: 2_deploy_contracts.js falla con: TypeError: no se puede convertir indefinido o nulo en objeto

Error encontrado, rescate. Estado de la red desconocido. Revise las transacciones exitosas manualmente.

Así que revisé las transacciones TxHash manualmente, está aquí: https://ropsten.etherscan.io/tx/0x3b5415de9584f43aa6155843a64e453a49189e16fc83cf00e2323935c045f460

truffle(development)> migrate --network ropsten
Using network 'ropsten'.

Running migration: 2_deploy_contracts.js
  Deploying SafeMath...
  ... 0x9eb2ce16e8ed3e0dbb4a7e286a148f5c8dbca7233cfa49a61a02cc6df6214725
  SafeMath: 0x29373c7174c28927a127a156f4f4e1ea4ba89e0c
  Deploying Ownable...
  ... 0x20ea24cf646cb77e11ea35861f073486e2a392ffbe04b0f86766b48bb696dd89
  Ownable: 0x656f2084ff1916a887e138248452ae93b15fb74d
  Deploying Pausable...
  ... 0x0ada99f10d0e25ad37929cf7f2ab03f41d10a84e47dbc4dec83a1db40b5e2560
  Pausable: 0xed152244733a6d06679d9c5f9e6ba9afd970ff22
  Deploying BasicToken...
  ... 0x8b253db846b5c4411ac9dbb0c85654416a4e0010f016317b8faff4322d227bb6
  BasicToken: 0xcd4460ca0f93f078cafbbc4b7ddfa9d95f4c3530
  Deploying StandardToken...
  ... 0x3b5415de9584f43aa6155843a64e453a49189e16fc83cf00e2323935c045f460
  StandardToken: 0x678fd6ebdbb9dbbb961384c89bcc856c726a04ba
Error encountered, bailing. Network state unknown. Review successful transaction
s manually.
TypeError: Cannot convert undefined or null to object
    at C:\Users\ROBERT\AppData\Roaming\npm\node_modules\truffle\build\webpack:\.
-deployer\src\actions\deploy.js:16:1
    at <anonymous>
    at process._tickDomainCallback (internal/process/next_tick.js:228:7)

Standardtoken se implementó con éxito a pesar del error, pero el proceso se detuvo y no se completó la implementación de PatadiseToken.sol y ParadiseTokenSale.sol.

1_initial_migration.js, ¡funciona bien!

var Migrations = artifacts.require("./Migrations.sol");

module.exports = function(deployer) {
  deployer.deploy(Migrations);
};

2_deploy_contratos.js

module.exports = function(deployer, network, accounts) {
    // Use the accounts within your migrations.
    //console.log("Accounts: " + accounts);

    var userAddress = accounts[1];

    deployer.deploy(SafeMath);
    deployer.deploy(Ownable);
    deployer.link(Ownable, Pausable);
    deployer.deploy(Pausable);

    deployer.deploy(BasicToken);
    deployer.link(BasicToken, SafeMath);
    deployer.link(BasicToken, ERC20Basic);

    deployer.deploy(StandardToken);
    deployer.link(StandardToken, BasicToken);
    deployer.link(StandardToken, ERC20);

    deployer.deploy(ParadiseToken, userAddress);
    deployer.link(ParadiseToken, StandardToken);
    deployer.link(ParadiseToken, Ownable);
    deployer.link(ParadiseToken, SafeMath);

    var time = new Date().getTime() / 1000;

    var monkey = 1234;

    deployer.deploy(ParadiseToken, accounts[1]).then(function() {
        return deployer.deploy(ParadiseTokenSale, accounts[1], 10, 20, 1, time, 2, 15000, ParadiseToken.address);
    });

};

Creo que el problema está en 2_deploy_contracts.js

trufa.js está aquí:

var HDWalletProvider = require("truffle-hdwallet-provider");
var infura_apikey = "<My key is here> "; 
var mnemonic = "<My MetaMask Seed Phrases is Here>";

module.exports = {
  networks: {
    development: {
    provider: new HDWalletProvider(mnemonic, "http://127.0.0.1:8545/"),
      network_id: "*" // Match any network id
    },
    ropsten:  {
      provider: new HDWalletProvider(mnemonic, "https://ropsten.infura.io/" + infura_apikey),
      network_id: 3,
    }
  },
};

salida de testrpc:

EthereumJS TestRPC v6.0.3 (ganache-core: 2.0.2)

HD Wallet
==================
Mnemonic:      venue denial battle taxi park army into reform spice situate frie
nd mango
Base HD Path:  m/44'/60'/0'/0/{account_index}

Listening on localhost:8545

Estoy usando frases mnemotécnicas de semillas de MetaMask

¡La compilación de trufas funciona bien!

ParadiseToken.sol y ParadiseTokenSale.sol están aquí:

https://ropsten.etherscan.io/address/0xbe1121b96da695cbe68cf8e41f2fba6ea9eb80e9#código

¿Podría alguien señalar por qué es así? Es aquí un error obvio. ¿Me he perdido algo? Gracias, Roberto.

aparentemente algo anda mal con ParadiseTokenel despliegue, pero no veo exactamente qué. Escribiría pruebas unitarias o intentaría implementar a través de Remix, puede ayudar a encontrar una causa raíz.
¿Se supone que debe implementar contratos importados? (por ejemplo, SafeMath). Estoy usando SafeMath y no lo estoy implementando y funciona bien.

Respuestas (1)

Recibí exactamente el mismo error. En mi caso, resultó que olvidé establecer un valor que se pasa al constructor de un contrato.