区块见闻 区块见闻
Ctrl+D收藏区块见闻

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

作者:

时间:

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

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

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

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

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

文艺复兴科技的大奖章基金2020年上涨76%,曾被允许进行BTC期货交易:全球知名的对冲基金之一Renaissance Technologies(文艺复兴科技)旗下的大奖章基金在2020年上涨76%,这是该基金表现最好的年份之一,只有2000年98.5%的涨幅和2008年82.4%的涨幅能超过今年表现。大奖章基金只允许文艺复兴科技的现有和早前合作伙伴参与,2020年4月份,大奖章基金被允许进行BTC期货交易。

据悉,文艺复兴科技下面的另两只基金,文艺复兴机构股票基金今年下跌22.62%,另一只新基金Renaissance Institutional Diversified Alpha今年下跌33.58%,两只基金位列汇丰银行评出的2020年表现最差的20大投资品表单。(institutionalinvestor.com)[2021/1/14 16:10:08]

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

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

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

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

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

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

标签:PRYETHEETHERNetherPRY价格etherparty币前景ethereumuniswa

比特币最新价格热门资讯
外媒:数字人民币有望“迅速扩散”

据路透社上海4月26日报道,在中国的商业中心城市上海,6家国有大型银行正在5月5日购物节前夕悄悄推广数字人民币,以向消费者提供一种支付宝和微信支付之外的替代支付方式。 报道称,这几家银行正在说服商家和零售客户下载数字钱包,以便在试点计划开展期间可以直接用数字人民币进行交易。

碎片化会是解决NFT市场流动性的良药吗?

NFT已经获得不少投资人的青睐。现阶段的NFT市场仍初级,面临着诸如用户匮乏、资产短缺等问题,而流动性是限制NFT市场规的重大因素之一。目前NFT流动性较低,而流动性差将难以支持资产的估值,资产将丧失流动性溢价。

金色观察|以太坊2.0信标链的“15ETH损失”小插曲

4月25日,金色财经消息,以太坊2.0客户端的执行团队Prysmatic Labs在推特上表示,请将Prysm更新到v1.3.8-hotfix-6c0942版本。据悉,该版本包含两个关键的修复,以解决主网中正在出现的问题。 关于消息中提及的“正在出现的问题”,据金色财经此前报道可知。

4.28早行情:比特币站上55000美元 ETH和Uni双双新高

据欧易OKEx的数据显示,当前BTC/USDT现货报价为55318美元,24小时涨幅为3.1%。

同质化代币和非同质化代币、ERC-20 、ERC-721和ERC-1155的区别

区块链技术的潜力远不止像加密货币这样的数字资产,用户和公司可以将数据(如其个人 ID,证书,公司财产数据,注册数据,房地产数据以及其他有关现实世界资产的信息)放置在区块链网络上。而实现这一切的源头——非同质化代币,无疑会在区块链经济的未来发展中扮演者重要角色。

5.4午间行情:冲高回落后 价格能否继续上行

据欧易OKEx的数据显示,当前BTC/USDT现货报价为56000美元,24小时跌幅3.5%。 比特币快速上冲至59000美金位置后遇阻回落,最低回踩到54563美金附近,这也是震荡区间下沿的日线MA83线位置。