小编sun*_*hul的帖子

以太坊智能合约批准另一个合约的支出者

我有一个 erc20 代币,在另一个合约中我想创建一个代币交换功能。所以很容易,发送一个 usdc 代币并以 1:1 的比例交换我的 erc20 代币。问题是如何批准使用我的 erc20 代币。我尝试了几次但找不到方法。

interface IERC20 {...} 

contract AnotherContract {

function approve(address _spender, uint256 _amount) public returns(bool) {
    return IERC20(MyToken).approve(_spender, _amount);
}
Run Code Online (Sandbox Code Playgroud)

我部署了另一个合同,当我从中调用批准功能时。所以当我将“_spender”设置为这个合约地址时。结果很奇怪。所以这个合约既是所有者又是消费者。我认为用户应该是所有者,而这个合约应该是消费者。但是函数是从链上调用的。msg.sender 将是该合约地址本身。

我不明白并且很困惑。有人知道或者有一些资源吗?谢谢。

blockchain ethereum solidity smartcontracts binance-smart-chain

2
推荐指数
1
解决办法
5016
查看次数