智能合约燃气成本

问题描述 投票:0回答:3

我在测试网络(rinkeby 和 ropsten)上运行智能合约“n”次,通过它,我得到了某些功能的不同 Gas 使用量。我的理解是,天然气成本根据该功能的运行是“恒定的”。我可以理解时间变化,但不确定气体用量的变化。对于某些函数来说,它是恒定的,但对于某些函数来说,它有轻微的变化。这是正常的吗?我应该忽略这种变化吗?请问有什么想法吗?

blockchain ethereum solidity smartcontracts
3个回答
0
投票

我也注意到了同样的情况。可能它还取决于所使用的计算能力,即我们传递的输入。假设如果我们传递大得多的值作为函数的输入,那么计算能力将比小值大得多,这反过来又会改变气体的使用。


0
投票

请参考这个ethereum stackexchange上的答案

此外,只是一个小小的建议,ethereum.stackexchange.com 是比 stackoverflow 更好的地方,可以专门询问与以太坊相关的问题,您将在那里获得更好的联系、更多的专家和更快的答案。


0
投票

多个调用之间的 Gas 成本变化通常来自于各州。截至目前,存储槽首次写入需要花费 20k Gas,更新需要花费 5k,删除时需要退款 10k。冷读取一个槽需要 2100 Gas,热读取需要 100 Gas。

如果你的 Gas 成本有所变化,你首先需要查看你的代码,看看是否有任何不确定的东西,例如基于区块编号或时间或某些东西或变量输入的哈希,这会导致不同的时隙在每个交易上被写入、更新或读取。

我们有一个项目(elephants.fun),我们想将物品作为薄荷糖随机掉落,但遇到了这个问题。事实证明,因为我们有一些嵌套存储,所以当在一批(如 7 个薄荷糖)中随机选择索引时,tx 会有不同的 Gas 成本,因为根据不同的情况会有不同的数字或冷读和热读。由于种子使用最后一个块号,因此随机选择的索引集。这导致交易失败,因为气体估计与实际交易不同。我们将其更改为伪随机,其中气体估计始终与交易匹配。

© www.soinside.com 2019 - 2024. All rights reserved.