Контракт успешно развернут в Ganache через Truffle, не удается развернуть в действующей сети

Я в основном следовал этому руководству по краудсейлу Zeppelin , просто изменил названия контрактов. Мне удалось успешно развернуться на локальном Ganache, но затем при попытке развернуть в действующей сети ethereum он терпит неудачу, по- invalid addressвидимому, вызванную миграцией 1_initial_migration.js, которая выглядит следующим образом:

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

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

и Migrations.sol выглядит так:

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

Вот скриншот из терминала, где происходит truffle migrationсбой:

введите описание изображения здесь

Как это возможно, что я могу выполнить развертывание в Ganache, но не в действующей сети? Я делаю что-то неправильно? Какие-либо предложения?

видимо я запускаю geth с --lightмодификатором. это может быть причиной?
это может быть причиной, см.: ethereum.stackexchange.com/questions/41028/…
Можете ли вы выполнить развертывание в тестовой сети, например Ropsten? В любом случае, вы всегда должны сначала развернуться в тестовой сети перед запуском.

Ответы (1)

Я столкнулся с подобной проблемой, я могу решить ее после удаления файлов JSON из /build/contracts. Затем я попытался повторно развернуть контракт, и это было сделано успешно.