Vertrag erfolgreich über Truffle in Ganache bereitgestellt, kann nicht im Live-Netzwerk bereitgestellt werden

Ich habe im Grunde dieses Zeppelin-Crowdsale-Tutorial befolgt , nur die Namen der Verträge geändert. Ich konnte erfolgreich auf einem lokalen Ganache bereitstellen, aber wenn ich dann versuche, es im Live-Ethereum-Netzwerk bereitzustellen, schlägt es auf fehl invalid address, anscheinend durch Migration ausgelöst 1_initial_migration.js, was so aussieht:

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

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

und Migrations.sol sieht so aus:

pragma solidity ^0.4.17;

contract Migrations {
  address public owner;
  uint public last_completed_migration;

  modifier restricted() {
    if (msg.sender == owner) _;
  }

  function Migrations() public {
    owner = msg.sender;
  }

  function setCompleted(uint completed) public restricted {
    last_completed_migration = completed;
  }

  function upgrade(address new_address) public restricted {
    Migrations upgraded = Migrations(new_address);
    upgraded.setCompleted(last_completed_migration);
  }
}

Hier ist ein Screenshot vom Terminal, wo truffle migrationfehlschlägt:

Geben Sie hier die Bildbeschreibung ein

Wie ist es möglich, dass ich Ganache bereitstellen kann, aber nicht im Live-Netzwerk? Mache ich etwas falsch? Irgendwelche Vorschläge?

anscheinend laufe ich geth mit --lightModifikator. kann das der grund sein?
das kann der Grund sein, siehe: ethereum.stackexchange.com/questions/41028/…
Können Sie in einem Testnetz bereitstellen, z. B. Ropsten? Sie sollten sowieso immer zuerst in einem Testnetz bereitstellen, bevor Sie live gehen.

Antworten (1)

Ich hatte ein ähnliches Problem, das ich lösen kann, nachdem ich JSON-Dateien aus /build/contracts. Dann habe ich versucht, den Vertrag erneut bereitzustellen, und es wurde erfolgreich durchgeführt.