Gas-Price

極高的gas費用

  • June 28, 2022

我在這個功能中支付了 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);

引用自:https://ethereum.stackexchange.com/questions/130844