我在修一座简单的桥。每当我试图在国外的桥梁合同的外国链上存款,它工作得很好。但是每当我试图把令牌存入本地的连锁桥合同。我知道这个错误:
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"
}我的桥梁存款功能:
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薄荷合同。
// 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);
} 发布于 2022-12-06 12:26:08
你应该核对一下帐户的余额。那个钱包里似乎没有足够的记号(这通常是当它抛出那个信息时的意思)。你应该把一张支票放在那里,看看余额是否足以支付费用,如果不足够,则恢复。这将给您一个提示,并帮助您调试。
https://ethereum.stackexchange.com/questions/140689
复制相似问题