如何在智能合约中获取交易成本 - Solidity、以太坊

piz*_*r0b 2 ethereum solidity

我如何在合同中获得交易成本?只会是:tx.gasprice?这将始终是 gwei 的值还是 wei ?

use*_*559 5

在执行完成之前,交易的成本是未知的。在一个极端的例子中,也许你正在计算 this 的函数被另一个函数调用,并且在你返回后,那个函数throws 消耗了所有剩余的气体。您无法提前知道这会发生。

要计算交易成本,您需要两条信息:

  1. 气价。
  2. 将消耗多少气体。

如果您知道两者,则可以将它们组合在一起并获得总成本。tx.gasprice告诉你(1),但如上所述,你不能真正知道(2)。您能做的最好的事情可能是msg.gas在函数的顶部和底部使用它来大致告诉您该函数消耗了多少 gas 。