Функция buyTokens в контракте Crowdsale OpenZeppelin не работает с msg.value больше нуля - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть контракт 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 имеют эфир? простая транзакция работает правильно.

1 Ответ

0 голосов
/ 15 ноября 2018

При попытке buyTokens эта функция вызывает _getTokenAmount(weiAmount), что возвращает weiAmount.mul(_rate). Можете ли вы опубликовать файл миграции? Возможно, во время развертывания _rate задано неправильно.

...