首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EVM:事务已恢复

EVM:事务已恢复
EN

Ethereum用户
提问于 2022-12-06 11:32:11
回答 1查看 99关注 0票数 0

我在修一座简单的桥。每当我试图在国外的桥梁合同的外国链上存款,它工作得很好。但是每当我试图把令牌存入本地的连锁桥合同。我知道这个错误:

代码语言:javascript
复制
Gas estimation errored with the following message (see below). The transaction execution will likely fail. Do you want to force sending?
Internal JSON-RPC error.
{
"code": 3,
"message": "execution reverted: BEP20: burn amount exceeds balance",
"data": "0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002242455032303a206275726e20616d6f756e7420657863656564732062616c616e6365000000000000000000000000000000000000000000000000000000000000"
}

我的桥梁存款功能:

代码语言:javascript
复制
function _deposit(
        address token,      // token that user send (if token address < 32, then send native coin)
        uint256 value,      // tokens value
        uint256 toChainId   // destination chain Id where will be claimed tokens
    ) 
        internal 
        returns (address pair_token) 
    {
        Token memory pair = tokenPair[toChainId][token];
        require(pair.token != address(0), "There is no pair");
        pair_token = pair.token;
        uint256 fee = msg.value;
        if (token <= MAX_NATIVE_COINS) {
            require(value <= msg.value, "Wrong value");
            fee -= value;
        } else {
            if(pair.isWrapped) {
                IBEP20TokenCloned(token).burnFrom(msg.sender, value);
            } else {
                tokenDeposits[token] += value;
                token.safeTransferFrom(msg.sender, address(this), value);
            }
        }
        if (fee != 0) {
            feeTo.safeTransferETH(fee);
            emit Fee(msg.sender, fee);
        }
    }

我的BEP20Cloned薄荷合同。

代码语言:javascript
复制
  // initialize contract. Used instead of constructor in cloned contract
  function initialize(address newOwner, string calldata name, string calldata symbol, uint8 decimals) external {
    require(!_isInitialized, "Already Initialized");
    _isInitialized = true;
    minter = _msgSender();  // set bridge as minter
    emit SetMinter(address(0), minter);
    _name = name;
    _symbol = symbol;
    _decimals = decimals;
    _owner = newOwner;
    emit OwnershipTransferred(address(0), newOwner);
  } 
EN

回答 1

Ethereum用户

回答已采纳

发布于 2022-12-06 12:26:08

你应该核对一下帐户的余额。那个钱包里似乎没有足够的记号(这通常是当它抛出那个信息时的意思)。你应该把一张支票放在那里,看看余额是否足以支付费用,如果不足够,则恢复。这将给您一个提示,并帮助您调试。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/140689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档