我想知道如何准确计算交易中使用的天然气量。
在Remix中,我使用了第一个帐户并在我的智能合约中调用了一个方法,其中包含2个参数,带有值的字符串" p1"和值为101的uint。
交易成本为198996天然气,执行成本为176892天然气
我使用了第二个帐户并使用相同的参数调用相同的方法{string with value" p1"和价值101的uint,但交易成本为145032天然气,执行成本为122928
我的问题是:消耗的气体总量如何不同?虽然我使用了相同的输入负载(相同的字符串长度和相同的uint值)?如果他们通过相同的参数和相同的方法但成本不同,我如何计算网络中每个节点的天然气成本?
如果网络中的2个节点使用相同的参数调用相同的方法,则假设两者都支付相同数量的气体,我写了吗?如果不是,我如何分析每个节点与智能合约交互所需的燃气量。
谢谢
答案 0 :(得分:2)
如果您共享智能合约代码,则可以更轻松地提供帮助。
作为一个有根据的猜测,我假设每个事务都设置一个状态变量?这涉及SSTORE操作码,SSTORE的气体成本取决于存储的值和先前存储的值。在过去曾经为零的情况下存储非零(例如,曾经是空字符串的非空字符串)会花费20,000个气体,而在已经存在非零的情况下存储非零仅需要5,000个气体。