一个区块里包含的内容 这是一个区块里的固有内容,在交易部分,有 237 笔转账和 39 笔合约内部交易,如果具体查看交易就可以看到更详细的 Gas 费花销。也可以看到燃料限制为 12493113,文章开头提到的 EIP-3382 中,将每个块的 Gas 限制限制在 12500000,就是这个部分。这样,每个块里拿到的奖励总和会比较可控。 关于 ETH1.0 链,有一个每个操作码的 Gas 费计算,我们截取了其中价格较高的部分,供读者参考。操作码最终会决定了链的执行和资源的使用。例如,一个基本的思路是,假如创建合约。成本计算如下: 固有成本 = Gtransaction + Gtxdatazero * Nzeros + Gtxdatanonzero * Nnonzeros + Gtxcreate 其中: Gtransaction = 21,000 WeiGtxcreate = 32,000 WeiGtxdatazero = 4 WeiGtxdatanonzero = 68 Wei (在伊斯坦布尔升级时会改为 16 wei)大家可以对以下的操作码对号入座。 以太坊 1.0 链的操作码对应的 gas 值消耗 据以上的介绍,我们可以得到的基本理解是,Gas 费是因为使用以太坊的链上资源产生的,计算越多,Gas 越高,在智能合约合约操作里,每个单独的步骤都需要支付 Gas。另外,补充一点,如果发送者把 Gas 设置的很高,矿工会优先执行交易,因为矿工可以选择优先打包某些交易。 21 个与 Gas 费息息相关的 EIP 接下来我们就可以详细看一下关于 Gas 的 EIP 提案。提案大约根据时间先后排列。 EIP-5: 调整 RETURN 和 CALL 的 Gas 用量此 EIP 使得调用 RETURN 字符串和其他动态大小的数组的函数成为可能。当前,当从以太坊虚拟机内部调用另一个合约 / 功能时,必须预先指定输出的大小。还必须为未写入的内存支付费用,这使得返回动态大小的数据既昂贵又不灵活,以至于实际上无法使用。此 EIP 中提出的解决方案是仅对 CALL 返回时实际写入的内存支付。 EIP-150:大量 IO 操作的 Gas 成本变化将 EXTCODESIZE 的 Gas 费用从 20 增加到 700。将 EXTCODECOPY 的基础 Gas 成本从 20 增加到 700。将 BALANCE 的 Gas 费用从 20 增加到 400。将 SLOAD 的 Gas 成本从 50 增加到 200。将 CALL,DELEGATECALL,CALLCODE 的 Gas 费用从 40 增加到 700。将 SELFDESTRUCT 的 Gas 成本从 5000 增加到 5000。如果 SELFDESTRUCT 命中一个新创建的帐户,则会触发 25000 的额外 Gas 费用(类似于 CALL)。将建议的 Gas 限制目标提高到 550 万。EIP-158:状态清除在任何情况下,call 余额等都为 0 的账户都不再消耗 25000 个帐户创建 Gas 的成本 EIP-1108:降低 alt_bn128 预编译 Gas 成本椭圆曲线计算预编译当前价格过高。对预编译进行重新定价将大大有助于以太坊上的许多隐私解决方案和扩展解决方案。对于基于以太坊的基于 zk-SNARK 的协议,EIP-1108 不仅会大大降低验证 zk-SNARK 的 Gas 成本,而且还可以帮助将多个 zk-SNARK 证明批量组合在一起。这也是一种可用于将单片 zk-SNARK 电路拆分为一批具有较小单个电路尺寸的 zk-SNARK 的技术,这使得 zk-SNARK 都更易于构造和部署。 (责任编辑:admin) |