Gas-Price
極高的gas費用
我在這個功能中支付了 0.38 的汽油費。有什麼問題嗎?
function claim() external { require(allowed[msg.sender] == true, 'This address is not allowed to perform withdrawns'); require(BUSD.balanceOf(address(this)) > block.timestamp - moment[msg.sender] * allowance[msg.sender], 'Not enough balance'); uint amount = moment[msg.sender] * allowance[msg.sender]; BUSD.transferFrom(address(this), msg.sender, amount); allowance[msg.sender] = 0; emit claimed(msg.sender, amount); }
當功能應該失敗時,EVM 會提供如此高的費用。在這種情況下,罪魁禍首是
transferFrom()
。我認為你不應該在BUSD.transferFrom()
這裡使用。您想向 msg.sender 發送從合約地址計算的金額。由於在這種情況下合約將是 BUSD 合約呼叫者,因此您應該使用:BUSD.transfer(msg.sender, amount);