同一交易的不同燃气量

时间:2018-04-30 15:16:09

标签: blockchain solidity gas smartcontracts

我想知道如何准确计算交易中使用的天然气量。

在Remix中,我使用了第一个帐户并在我的智能合约中调用了一个方法,其中包含2个参数,带有值的字符串" p1"和值为101的uint。

交易成本为198996天然气,执行成本为176892天然气

我使用了第二个帐户并使用相同的参数调用相同的方法{string with value" p1"和价值101的uint,但交易成本为145032天然气,执行成本为122928

我的问题是:消耗的气体总量如何不同?虽然我使用了相同的输入负载(相同的字符串长度和相同的uint值)?如果他们通过相同的参数和相同的方法但成本不同,我如何计算网络中每个节点的天然气成本?

如果网络中的2个节点使用相同的参数调用相同的方法,则假设两者都支付相同数量的气体,我写了吗?如果不是,我如何分析每个节点与智能合约交互所需的燃气量。

谢谢

1 个答案:

答案 0 :(得分:2)

如果您共享智能合约代码,则可以更轻松地提供帮助。

作为一个有根据的猜测,我假设每个事务都设置一个状态变量?这涉及SSTORE操作码,SSTORE的气体成本取决于存储的值和先前存储的值。在过去曾经为零的情况下存储非零(例如,曾经是空字符串的非空字符串)会花费20,000个气体,而在已经存在非零的情况下存储非零仅需要5,000个气体。