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

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

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

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

SBF对法官披露债券共同签署人提出上诉:金色财经报道,FTX前首席执行官Sam Bankman-Fried(SBF) 正在努力对共同签署他的债券的两个人的名字保密。 周二,这位前FTX首席执行官在一份法庭文件中对法官解封两名共同签署人姓名的决定提出上诉。SBF因持有2.5亿美元的债券而被软禁,因涉嫌不当处理FTX客户资金而面临刑事指控。

在一群媒体机构要求法院公开姓名后,美国地区法官Lewis Kaplan上个月批准了一项解封共同签名人姓名的动议。Bankman-Fried的律师称,如果他们的名字被泄露,共同签名者可能会面临隐私和安全问题。 开封名字的动议被搁置到周二,以防上诉,现在将被搁置到2月14日。[2023/2/8 11:53:50]

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

以太坊信标链验证者数量突破47万,总质押量超1590万枚ETH:11月19日消息,据以太坊官方网站最新数据显示,以太坊信标链验证者总数量已突破 47 万,截止目前为 470,045 个。此外,以太坊总质押量达到 15,924,942 枚 ETH。按照当前 ETH 价格计算,质押 ETH 总价值约为 193 亿美元。[2022/11/19 13:23:32]

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

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

毕马威美国和加拿大团队推出元宇宙协作中心:6月22日消息,国际四大会计师事务所之一毕马威(KPMG)的美国和加拿大业务部门在元宇宙推出协作中心,旨在帮助其客户制定元宇宙领域的战略。

一位发言人表示,这个私人中心是其员工、合作伙伴和客户进行虚拟团队会议和分享想法的地方。他们还将能够在元宇宙中进行培训课程、工作面试和员工评估,以及展示毕马威服务和功能的会议。

毕马威加拿大数字总裁兼管理合伙人Armughan Ahmad表示,“元宇宙让我们有可能体验现实世界和数字世界相融合的‘phygital’世界。元宇宙提供价值13万亿美元的市场机会,到2030年将拥有多达50亿用户。”

毕马威在美国和加拿大的业务部门已经组建一支拥有技术和创新经验的专业团队,为元宇宙设计、NFT用例、加密资产、社区互动和更广泛的Web3集成提供支持。(Blockworks)[2022/6/22 1:24:43]

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

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

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

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

那么在柏林硬分叉中给“0x10”发送0ETH会造成什么呢?会造成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希望携手更多的开发者打造更好的区块链世界。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金星链

USDTEFI:空投盛宴:市场总是偏爱探索者

作者|谷昱 4月22日,算法稳定币项目Ampleforth宣布发行治理代币FORTH并进行空投,曾与AMPL智能合约进行过交互的任何地址都可以申领FORTH代币空投.

KuCoinSDT:币安矿池第40期双币投资理财产品上线

亲爱的用户: 币安矿池上线第40期“双币投资”理财产品,邀您体验!申购方式:先到先得申购时间:2021年04月28日中午12:00至2021年04月29日中午12:00理财产品列表 数字资产 周.

[0:31ms0-0:544ms