“0x10”地址的Gas消耗分歧

因 “0x10” 地址的 Gas 消耗分歧产生的柏林硬分叉 Bug

以太坊 OpenEthereum 单客户端在区块 #12244294 处发生的 Bug 导致当时的以太坊网络停机,并在问题区块产生后无法与网络保持同步。那么造成这个事故的原因究竟是什么呢?

先看触发了这个事故的交易:

https://eth.tokenview.com/cn/tx/0x7006f38fa2e6654fae1a781aefc5885fe0cb8f778b1add10636eaf7e34279247

这是一笔合约调用交易,是从 KuCoin 交易所向其他地址分发ETH。

我们仔细分析一下合约调用过程:

  1. 在浏览器的“数据输入”栏展示的是合约调用的参数,第一行表示地址列表从“40”(16进制)字节,也就是 64 字节开始,图中第4行,第二行表示转移数额的列表从“1a0”(16进制)字节,也就是 416 字节开始,数据输入栏第15行。

  2. 转账是按照地址列表的顺序进行的,往每个地址转入的数额和转移数据的列表一一对应的。

  3. 现在我们开始遍历地址列表,看第三行的“10” (16进制),表示的是即将为接下来的 16 个地址转入 ETH。

按照图上顺序,当数到第11个地址的时候,发现值是“10”。这个值会被认为是地址列表中的第11个地址,然而事实上是表示转移数额的列表长度。那么按照第三行的指示,应该向 16 个地址转入,合约会把“0x10”当成地址继续执行转账操作,向地址“0x10”转入 0 个 ETH。

注意,“0x10”是EVM “特殊地址” 之一,它完全处在 EVM 的预编译合约列表内。它是一个由 EIP-2537 断言的预编译合约,是为 BLS 配对密码学程序而设的,但这个 EIP 还未部署到主网上。

那么在柏林硬分叉中给“0x10”发送 0 ETH 会造成什么呢?会造成 Gas 消耗产生分歧。

“0x10”地址的Gas消耗分歧

柏林硬分叉改变了 EVM 中 Gas 消耗量的计量方法。在 EIP-2929 实施后,如果在一笔交易中对同一个存储槽多次执行状态存储操作,第一次执行会消耗更多 Gas,后续执行的消耗会更少。

这就是OpenEthereum 在区块 #12244294 处发生 Bug 的根源:OpenEthereum包含了EVM已实现的预编译列表。所以OpenEthereum 会对该笔交易中访问了“0x10”的交易给gas 折扣。但网络的绝大部分活跃客户端都不是这样实现 EIP-2929 的,它们只会给访问了已激活预编译合约的交易提供 gas 折扣。

由此,OpenEthereum 客户端对该交易消耗了多少 Gas 的计算与网络中其他客户端发生了分歧。

这场由Gas消耗分歧引起的 OpenEthereum 单客户端停机,虽没有严重到导致重大的链分叉,但也提醒我们利用多客户端实现来提升节点稳定性。

不可否认,区块链技术仍然处于不断尝试不断前进的过程中,2021 年爆发的Defi和NFT也以前所未有的速度普及给更多的受众,Tokenview希望携手更多的开发者打造更好的区块链世界。

24小时热点

热点专题

NFT艺术品到底是什么?

Beeple,“EVERYDAYS: THE FIRST 5 ...

2324085

Opera House

了解CHIA这篇就够了

这些清单旨在作为信息来源和研究的出发点,为你的研究提供常识性 ...

638486

Kusama 测试网

什么是 Infura?

11 月 11 日,因以太坊和 IPFS 的 API 服务供 ...

628877

IDG资本

OpenSea 为例子教大家如何购买 NFT

就如同流动性挖矿刚起步时候一样,大多数用户并不了解 NFT ...

612892

CryptoSpells

绿地集团数字化战略的NFT形象——8302款无聊猿!

30年前,绿地还是一家注册资本2000万元的小型绿化公司,历 ...

496120

Bybit

什么是私钥?

私钥是怎么来的,它跟你的密码学货币资产有何关联。

487848

芝麻开门交易所

2024年模因币牛巿SHIB是否能达到1美元?市场另外3个meme币也在热卖

SHIB是仅次于DOGE的第二大流行模因币,它能否达到1美元 ...

477873

Business2Community

数字人直播软件多少钱

数字人直播软件根据您使用的平台、功能范围不同,价格也不尽相同 ...

462043

MXC交易所

被朋友骗去弄数字货币

  有一次,一个朋友突然给我说他有一种可以赚钱的新方法,他说 ...

452333

DigiFinex

链圈百科:环境影响评价信用平台

环境影响评价信用平台是指一种使用信用技术来评估环境影响并对社 ...

418777

Tokhun