一、 目的 想要限制单笔转入合约账号的ERC20代币的数量。
二、途径 通过msg.value可以限制eth的转入数量,不可以限制ERC20代币。 听过可以调用transferFrom实现限制ERC20代币。 于是就是先授权,在转币,发现失败,通过测试发现
contract Gov账号创造合约contract 主要代码如下:
constructor(address _rewardtoken,address _A) {
Gov = tx.origin;
A = _A;
rewardtoken = IERC20(_rewardtoken);
}
function approve() public payable {
rewardtoken.approve(A, 1234);
}
function allowancecontract() public view returns(uint256) {
return rewardtoken.allowance(address(this), A) ;
}
function allowancemsgsender() public view returns(uint256) {
return rewardtoken.allowance(msg.sender, A) ;
}
存币账号B调用contract中approve(),授权给A地址。
结果A获得了contract的授权。
我懵了 这是什么鬼。