你可以用发送到回退功能的气体做什么

what can you do with the gas that is sent to a fall back function

我正在学习 solidity 中的传输和发送,以及回退功能。据我了解,当你将以太币发送到智能合约时,你也会向回退函数发送一些气体。为什么会有这个机制?我以为 gas 是用来支付验证者费用的,怎么现在合约中存储了 gas + 合约中的 gas 现在是干什么用的?谢谢

每个操作都会消耗一些预定义的气体量。合并金额 - 无论在主交易中执行了多少内部交易 - 始终由主交易发送方支付。

transfer() 函数(在当前 Solidity 0.8 版本中)允许被调用地址仅花费 2300 gas,防止 reentrancy 攻击。

此数量足以发出一个事件,但不足以执行另一个调用 - 例如返回调用者合约,这将允许重入攻击。

所以回答你原来的问题:

what can you do with the gas that is sent to a fall back function

从被调用合约的角度来看:您只能将其用于执行一些基本操作,例如发出事件。但是不能卖回ETH存入被调用的合约,也不能调用另一个合约(包括发送方)。

contract Called {
    event Received(uint256 amount);

    fallback() external payable {
        // ok
        emit Received(msg.value);

        // fail - costs more than the 2300 limit
        msg.sender.call("");
    }
}