Truffle Ropsten Laufende Migration: 2_deploy_contracts.js schlägt fehl mit: TypeError: Cannot convert undefined or null to object

Fehler aufgetreten, Bailing. Netzwerkstatus unbekannt. Überprüfen Sie erfolgreiche Transaktionen manuell.

Also habe ich TxHash-Transaktionen manuell überprüft, ist hier: 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 wurde trotz des Fehlers erfolgreich bereitgestellt, aber der Prozess wurde gestoppt und die Bereitstellung von PatadiseToken.sol und ParadiseTokenSale.sol nicht abgeschlossen.

1_initial_migration.js , Funktioniert gut!

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

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

2_deploy_contracts.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);
    });

};

Ich denke, das Problem liegt in 2_deploy_contracts.js

truffle.js ist hier:

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,
    }
  },
};

testrpc-Ausgabe:

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

Ich verwende mnemonische MetaMask Seed Phrases

Trüffel kompilieren funktioniert gut!

ParadiseToken.sol und ParadiseTokenSale.sol sind hier:

https://ropsten.etherscan.io/address/0xbe1121b96da695cbe68cf8e41f2fba6ea9eb80e9#code

Könnte jemand darauf hinweisen, warum das so ist. Ist hier ein offensichtlicher Fehler. Habe ich etwas verpasst? Danke, Robert.

Anscheinend stimmt etwas mit ParadiseTokender Bereitstellung nicht, aber ich sehe nicht, was genau. Ich würde Komponententests schreiben oder versuchen, über Remix bereitzustellen, es kann helfen, eine Grundursache zu finden.
Sollen importierte Verträge bereitgestellt werden? (zB SafeMath). Ich verwende SafeMath und setze es nicht ein und es funktioniert gut.

Antworten (1)

Ich habe genau den gleichen Fehler. In meinem Fall stellte sich heraus, dass ich vergessen hatte, einen Wert festzulegen, der an den Vertragsersteller übergeben wird.