Неверный код операции при отправке Eth для открытия краудсейла zeppelin на testrpc

Я работаю над тем, чтобы заставить работать краудсейл-контракт с использованием библиотеки Open Zeppelin и Truffle уже пару дней.

Я могу заставить работать базовую краудсейл, но как только я пытаюсь реализовать RefundableCrowdsale или CappedCrowdsale, код перестает работать.

Я могу успешно скомпилировать и перенести код с помощью Truffle, но когда я отправляю средства на контрактный счет, я получаю сообщение об ошибке:

Произошла ошибка, спасение. Состояние сети неизвестно. Просмотрите успешные транзакции вручную. Ошибка: Исключение виртуальной машины при обработке транзакции: неверный код операции в Object.InvalidResponse (/usr/lib/node_modules/truffle/build/cli.bundled.js:37295:16)

Любые идеи, что может быть причиной этой проблемы? Код для краудсейла:

> pragma solidity ^0.4.15;
> 
> import './CBIToken.sol'; import
> 'zeppelin-solidity/contracts/crowdsale/Crowdsale.sol'; import
> 'zeppelin-solidity/contracts/crowdsale/CappedCrowdsale.sol'; import
> 'zeppelin-solidity/contracts/crowdsale/RefundableCrowdsale.sol';
> 
> 
> contract CBITokenCrowdsale is CappedCrowdsale, RefundableCrowdsale {
>   function CBITokenCrowdsale(uint256 _startTime, uint256 _endTime,
> uint256 _rate, uint256 _goal, uint256 _cap, address _wallet)
>       CappedCrowdsale(_cap)       FinalizableCrowdsale()
>       RefundableCrowdsale(_goal)      Crowdsale(_startTime, _endTime, _rate,
> _wallet) {            require(_goal <=_cap);      }
> 
>   //Create token  function createTokenContract() internal returns
> (MintableToken) {         return new CBIToken();  } }

и миграции:

const CBITokenCrowdsale = artifacts.require("./CBITokenCrowdsale.sol")

module.exports = function(deployer, network, accounts) {
  const startTime = web3.eth.getBlock(web3.eth.blockNumber).timestamp + 1 // one second in the future
  const endTime = startTime + 180//(86400 * 20) // 20 days
  const rate = new web3.BigNumber(1000)
  const goal = new web3.BigNumber(200)
  const cap = new web3.BigNumber(20000)
  const wallet = accounts[0]
  //const gas = 1000000

  deployer.deploy(CBITokenCrowdsale, startTime, endTime, rate, goal, cap, wallet)
};

Любая помощь будет очень признательна!

Ответы (1)

Попробуйте увеличить времяНачало:

  const startTime = web3.eth.getBlock(web3.eth.blockNumber).timestamp + 10

Возможно, проверка в контракте Crowdsale не удалась из-за времени, необходимого для развертывания контракта.

Кроме того, как вы отправляете средства? Возможно, добавьте немного времени для сна после миграции.