首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Smart合同- BEP20:转移金额超过备用额

Smart合同- BEP20:转移金额超过备用额
EN

Stack Overflow用户
提问于 2021-12-01 12:14:04
回答 2查看 3.4K关注 0票数 0

我是新来的,我正在尝试把代币从“地址A”换成“地址B”。

我使用了transferFrom和BEP20函数,但仍然收到错误:“错误:处理事务时的VM异常:用字符串'BEP20:传输量超过允许‘恢复”。

你能帮我解决这个问题吗?

代码语言:javascript
复制
// SPDX-License-Identifier: MIT OR Apache-2.0
pragma solidity ^0.8.3;

import "./CryptoPlinkoBall.sol";
import "./CryptoPlinko.sol";

import "hardhat/console.sol";

contract TokenSwap {
    address admin;
    address public owner;
    address private _token;

    constructor(address token) {
        admin = msg.sender;
        _token = token;
    }

    function swapTokens(address recipient, uint256 amount) external {
         BEP20(_token).approve(msg.sender, amount);
        BEP20(_token).allowance(msg.sender, address(this));
        BEP20(_token).transferFrom(msg.sender, recipient, amount);
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-02 02:25:06

当您调用BEP20(_token).approve(msg.sender, amount);时,您正在批准用户移动契约所拥有的令牌数量--如果您想从用户转移令牌,用户应该在调用此函数之前调用令牌契约并批准该金额,如果您正在执行与契约交互的前端操作,则需要先调用令牌契约,然后调用此合同。

票数 0
EN

Stack Overflow用户

发布于 2021-12-01 13:35:29

approve必须在transferFrom获取called.You不能在相同的调用中同时执行之前进行挖掘,这意味着在进入swapTokens函数之前应该进行审批。

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

https://stackoverflow.com/questions/70183999

复制
相关文章

相似问题

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