以太坊?OpenEthereum?单客户端在区块?#12244294?处发生的Bug导致当时的以太坊网络停机,并在问题区块产生后无法与网络保持同步。那么造成这个事故的原因究竟是什么呢?
先看触发了这个事故的交易:
https://eth.tokenview.com/cn/tx/0x7006f38fa2e6654fae1a781aefc5885fe0cb8f778b1add10636eaf7e34279247
AOFEX正式启动API Maker挖矿活动,平台币OT日内上涨2.74%:据官方数据显示,AOFEX交易所今日正式启动API Maker挖矿活动,用户通过API进行Maker挂单成交即可参与,并享受手续费全免福利。活动期间平台将按规则回购OT并注入OT矿池,矿池内100,000?OT作为Maker挖矿奖励。活动结束后,矿池剩余OT将全部销毁。
活动启动后,OT日内上涨2.74%,现报价16.75AQ,24小时成交量达1411万OT。
AOFEX数字货币金融衍生品交易所,旨在为用户提供优质服务和资产安全保障。[2020/9/25]
这是一笔合约调用交易,是从KuCoin交易所向其他地址分发ETH。
AOFEX交易所平台币OT抢购新币第1期,15,000PD售罄:据官方消息,AOFEX交易所在2020年7月21日15:00开放了第1期平台币OT抢购新币权益,限量15,000PD用时仅2秒即售罄。
A网将持续增加平台币流通场景,打造平台币价值,并保证市场流通量不超过2000万枚。
AOFEX是全球领先数字货币金融衍生品交易所之一,旨在为用户提供优质服务和资产安全保障。[2020/7/21]
我们仔细分析一下合约调用过程:
AOFEX即将上线AP中心:据官方消息,AOFEX将于2020年4 月7日14:00(GMT+8)上线AP中心。AOFEX将于2020年4 月7日14:00(GMT+8)上线AP中心。通过 APP?端首页顶部进入AP中心,可详细了解AP权益。通过AP中心可参与平台活动兑换AP权益,包括AP 抢购新币、砸金蛋、兑换小 A 吉祥物(即将开放)、兑换 AOFEX 平台币(即将开放)等专属权益活动。
AP是AOFEX生态系统中的重要一环,持有者将享受生态系统内的多项权益。AOFEX交易所位于英国伦敦,是领先的数字货币金融衍生品交易所,已获得美国MSB数字货币交易牌照,以及新加坡金管局(MAS)数字货币交易服务豁免许可,24小时为75万社区成员提供优质服务和更安全的加密数字货币交易环境。[2020/4/7]
在浏览器的“数据输入”栏展示的是合约调用的参数,第一行表示地址列表从“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”发送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希望携手更多的开发者打造更好的区块链世界。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。