Я работаю над тем, чтобы заставить работать краудсейл-контракт с использованием библиотеки 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)
};
Любая помощь будет очень признательна!
Попробуйте увеличить времяНачало:
const startTime = web3.eth.getBlock(web3.eth.blockNumber).timestamp + 10
Возможно, проверка в контракте Crowdsale не удалась из-за времени, необходимого для развертывания контракта.
Кроме того, как вы отправляете средства? Возможно, добавьте немного времени для сна после миграции.