У меня есть контракт Crowdsale, написанный на основе OpenZepelin Crowdsale.sol
мой контракт:
contract MoonShardToken is StandardToken, Ownable {
string public name = "MyContract";
uint8 public decimals = 18;
string public symbol = "My";
/// this constructor added as a test
constructor() public {
totalSupply_ = (36000000 * (10 ** 18));
balances[msg.sender] = totalSupply_;
}
}
мой краудсейл - это копия OpenZepelin Crowdsale.sol, я развернул свой контракт с трюфелем, я могу console.log в тестах мой рейтинг: 200000000000000
TotalSupply моих токенов: 3.6e + 25, все функции в тестах из контракта работают правильно, но когда я использую функцию buyTokens со значением массажа больше нуля, я становлюсь ошибкой VM Exception при обработке транзакции: возвращаться; когда msg.value равен нулю, я становлюсь ошибок нет, а событие в func выдается
это функция buyTokens:
function buyTokens(address _beneficiary) public payable {
uint256 weiAmount = msg.value;
// _preValidatePurchase(_beneficiary, weiAmount); this is function with required msg.value>0 was commented for test
uint256 tokens = _getTokenAmount(weiAmount);
weiRaised = weiRaised.add(weiAmount);
_processPurchase(_beneficiary, tokens);
emit TokenPurchase(
msg.sender,
_beneficiary,
weiAmount,
tokens
);
_forwardFunds();
}
в трюфельных тестах я использую эту функцию как: await Crowdsale.buyTokens (кошелек, {from: кошелек, значение: web3.toWei (0.0001, "ether")});
кошелек - это аккаунт (1) с балансом токенов 0. Я использую Ganache Cli, и все мои ACS имеют эфир? простая транзакция работает правильно.