本页面使用机器翻译自英语,可能包含错误或不清楚的语言。如需 最准确的信息,请参阅英文原文。由于更新频繁,部分内容可能与英文原文有出入。请加入我们在 Crowdin 上的努力,帮助我们改进本页面的翻译。 (Crowdin translation page, Contributing guide)
执行气体
气体是 "内在气体 "和 "执行气体 "的总和。 在这里,我们将重点讨论如何计算 "执行气体"。
备注
执行气体相关硬分叉更改可在本页底部找到。 转到 Hardfork Changes。
概述
在三种不同的情况下,执行合同时会收取执行费。 有时,某些政策可能会被省略。
- 第一种也是最常见的一种是 "constantGas"。 这是计算操作的固有费用。
- 其次 ,气体可被扣除,以形成从属报文调用或合同创建的付款;这构成 "CREATE"、"CALL "和 "CALLCODE "付款的一部分。
- 最后,由于内存使用量增加,可能会收取气体费用。
在一个账户的执行过程中,应支付的内存使用费总额与 32 字节的最小倍数成正比,而 32 字节的最小倍数是包括所有内存索引(无论是读取还是写入)的范围。 这笔费用是按时支付的;因此,如果引用的内存区域至少比先前索引的内存区域大 32 字节,就会产生额外的内存使用费。 由于这笔费用,地址超过 32 位界限的可能性很小。 尽管如此,实施方案必须能够管理这种可能发生的情况。
存储费的行为略有细微差别。 为了鼓励最大限度地减少存储空间的使用(这与所有节点上都有一个更大的状态数据库直接对应),从存储空间中清除条目的操作的执行费用不仅可以免除,而且还可以获得合格的退款;事实上,这种退款实际上是提前支付的,因为初始使用存储位置的成本要比正常使用高得多。
操作码气体时间表
费用表 G
是由 37 个标量值组成的元组,这些标量值与交易可能产生的若干抽象操作的相对费用(以瓦斯为单位)相对应。 此外,还有气体项目,用于计算由 CALL_*
操作码调用的预编译合约的气体。