0
votes

I have Crowdsale contract written on the basis of OpenZepelin Crowdsale.sol my contract:

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

my crowdsale is copy of OpenZepelin Crowdsale.sol, i deploy my contract with truffle, i can console.log in tests my rate: 200000000000000 TotalSupply of my tokens: 3.6e+25, all functions in tests from contract works correctly, but when i use function buyTokens whith massage value more then zero i become error VM Exception while processing transaction: revert;when msg.value is zero i become no errors, and event in func emited this is function 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();
   }

in truffle tests i use this function as: await Crowdsale.buyTokens(wallet, {from: wallet, value: web3.toWei(0.0001, "ether")}); wallet is account(1) with token balance 0. i use ganache cli and all my accs have ether? simple transaction works correctly.

1

1 Answers

0
votes

When attempting buyTokens, this function calls _getTokenAmount(weiAmount) which returns weiAmount.mul(_rate). Can you post your migrations file? It may be that _rate is not set properly during deployment.