繁体   English   中英

同一笔交易的不同gas量

[英]Different gas amount for the same transaction

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

在 Remix 中,我使用了第一个帐户并使用 2 个参数调用了智能合约中的方法,字符串值为“p1”,uint 值为 101。

交易成本为198996 gas,执行成本为176892 gas

我使用了第二个帐户并使用相同的参数调用相同的方法 {string with value "p1" and uint with value 101} 但交易成本是 145032 gas 并且执行成本是 122928

我的问题是:消耗的气体总量如何不同? 尽管我使用了相同的输入负载(相同的字符串长度和相同的 uint 值)? 如果网络中的每个节点传递相同的参数和相同的方法但成本不同,我如何计算它们将花费多少gas?

如果网络中的 2 个节点使用相同的参数调用相同的方法,则假设它们都支付相同数量的 gas,我写吗? 如果不是,我如何分析每个节点与智能合约交互将花费多少天然气..

谢谢

如果您共享智能合约代码,将更容易提供帮助。

作为有根据的猜测,我假设每笔交易都设置了一个状态变量? 这涉及 SSTORE 操作码,SSTORE 的 gas 成本取决于存储的值和之前存储的值。 在曾经有零的地方存储非零(例如,在曾经有空字符串的地方存储非空字符串)需要 20,000 gas,而在已经有非零的地方存储非零只需要 5,000 gas。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM