簡體   English   中英

我的合約未能通過以太幣交易但收到 ERC20 代幣

[英]My contract is failing ether transactions but receiving ERC20 tokens

我試圖通過元掩碼支付合約地址並讓它調用 buyTokens function 但交易一直失敗。 合約有足夠的代幣余額,因為我通過元掩碼成功地將 ERC20 代幣發送到了合約地址。 只有當我將以太幣發送到合約地址時,它才會失敗。 我嘗試了默認的氣體限制,並嘗試在 metamask 中將氣體設置為 200000。 請幫我。

我在本地主機 genache 上運行

pragma solidity ^0.5.0;

import "./Token.sol";

// rate is 1 token = 0.01 ether

contract Crowdsale {

    constructor() public {
        rate = 100;
        on = true;
    }

    Token public token;
    address payable wallet;
    uint256 public rate;
    bool on;

    event TokenPurchase(address recipient, uint256 numPaid, uint256 numTokensPurchased);

    function buyTokens() public payable {
        
        require(msg.value > 0 && on == true);
        uint256 tokenAmount = _getTokenAmount(msg.value);
        require(token.balanceOf(address(this)) >= tokenAmount);
        token.transfer(msg.sender, tokenAmount);
        emit TokenPurchase( msg.sender, msg.value, tokenAmount);

    }
    
    function () external payable{
        buyTokens();
    }

嘗試直接調用buyTokens 后備function 只能依靠 2300 gas 可用,這不足以調用buyTokens

https://solidity.readthedocs.io/en/v0.5.0/contracts.html?highlight=fallback#fallback-function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM