月亮链 月亮链
Ctrl+D收藏月亮链
首页 > Uniswap > 正文

区块链:科普 | OpenEthereum客户端 “柏林” 升级后出错始末_ethereumuniswap

作者:

时间:1900/1/1 0:00:00

AlexStokes@ralexstokes:

你可能已经听说了,@OpenEthereum客户端的一个错误导致了一些支撑以太坊网络的重要服务宕机。

我们来琢磨一下那笔造成事故的交易。

首先,我想感谢所有快速反应到事故并解决了问题的工程师:https://twitter.com/OpenEthereumOrg/status/1382719444833726470?s=20…

另外,我没有自己跟踪所有的细节,下文中的重要事实都由用户eb在EthR&Ddiscord服务器里提出。

先从那笔触发了错误的交易开始:https://etherscan.io/tx/0x7006f38fa2e6654fae1a781aefc5885fe0cb8f778b1add10636eaf7e34279247

欧科云链集团正式启动区块链科普行动“星途计划”:欧科云链集团于4月26日,正式宣布启动了区块链科普行动——“星途计划”,行动包括将在全国范围展开系列沙龙,加大力度推进区块链科普进机关、进国企、进校园等,联合政府部门、行业协会等共同构建起更加完善和有效的区块链科普教育生态,与此同时,直击区块链科普现存痛点,推出简单易懂的“秒懂区块链”公益短视频课。

该计划旨在全维度推动社会建立对产业更清晰的认知,与“鲲鹏计划”一道助力数字经济及区块链产业本身健康发展夯实“人才”和“产业认知”两大基础。[2021/4/26 20:59:37]

这是一笔合约调用交易,从KuCoin交易所发出,向许多地址分发ETH。该笔交易的calldata的ABI编码错误,最终导致了链分裂。你可以在Etherscan上看看这笔交易的“InputData”。

人民数字FINTECH推出区块链科普动画:人民日报数字传播发布微博称,人民数字FINTECH出品《趣味科普|区块链动画》。[2020/3/31]

1/在合约中调用sendEths时,需要提供两个参数:一个是关于目标地址的不定长数组;一个是关于转账数额的不定长数组;两者相搭配才知道要转移多少钱给哪个地址。

2/我们可以解析calldata来看看到底哪里出了错:第一行表示地址列表从字节64开始。第二行表示转移数额的列表从字节416开始。

3/因此,大体上,我们是希望成对成对地、从上往下、向某个地址发送一定数量的ETH——看起来很直接嘛。

4/然而,当我们开始遍历这个列表,我们先跳转到calldata的正确字节,而SolidityABI声明了数据的第一个字是整个不定长数组的长度。

动态 | 人民日报官方微博科普区块链 强调区块链不等于比特币:人民日报官方微博今早发表9图科普区块链。其中涉及区块链的特点有:1、安全;2、不可篡改;3、可访问;4、无第三方。区块链对未来的影响:1、不需繁琐个人证明;2、看病避免反复检查;3、旅行消费更加便捷;4、交易无需第三方。同时强调,区块链不等于比特币。比特币只是区块链技术的一种应用,区块链还有医疗卫生、食品安全、版权保护等诸多应用领域。[2019/10/28]

5/这就是最终bug的根源:因为calldada中的值是“0x10”,但是calldata只给出了10个地址-数值对。对这个calldata的正确ABI编码应该是“0xA”——不是“0x10”!

6/你可能已经猜到了那时候会发生什么事,我们可以通过执行情况跟踪器来看看:https://etherscan.io/vmtrace?txhash=0x7006f38fa2e6654fae1a781aefc5885fe0cb8f778b1add10636eaf7e34279247&type=parity

动态 | 美国演说家Anthony Robbins开始科普什么是比特币:美国演说家安东尼·罗宾(Anthony Robbins)在自己的网站上发布了一篇比特币的科普文章,并在推特上向自己的粉丝介绍什么是比特币,目前他的推特账户共有粉丝304万人。[2019/1/1]

7/合约成功地遍历了前10个地址。本来合约应该在此时停止执行,但根据calldata的声明,还有很多个地址!那就继续执行吧。

但是,根据calldata的结构,“第11个地址”是用于编码列表长度的0x10,所以合约就尝试发送0ETH到地址0x10。

8/此外,似乎,当合约尝试读取并不存在的calldata时,会返回0ETH——你可以想象成合约在这里跑出了一个错误,但它却继续发送0ETH到它从calldata中读取的另外6个“地址”。

金色财经独家分析 监管机构、媒体、业界提示风险 区块链科普道阻且长:新华社今日发文表示,近来“区块链”类案件频发,不法分子以“投资虚拟货币周期短、收益高、风险低”为借口,取用户信任并诱使其转账进行投资。无独有偶,同日消息,腾讯手机管家安全专家也提醒此类风险,并从技术上提出防建议。在美国,监管机构警示加密货币欺诈现象普遍承诺高收益而不披露潜在风险。金色财经独家分析,不法分子假借新技术之名进行,一方面是抓住民众趋利的心理,一方面反映出区块链科普的欠缺。区块链是新兴科技和底层技术并有改变社会生产关系的潜力,应该进行系统性的科普教育,当前,部分大学已经开始设置了区块链课程,但对于普通民众仍然有科普的需求,人们应该了解到系统和正确的知识,不仅要了解区块链的好,也要明确局限和弊端,以在高收益的诱惑下,保持清醒客观。[2018/4/11]

此时,你可能会注意到,0x10有可能是我们所谓的“特殊地址”之一,它完全在EVM预编译合约的范围内。

而我们也并不期望预编译合约0x10能够返回ETH。如此,它就成了一个ETH黑洞。但是,这也并不必然造成任何问题。到底是什么导致了整个客户端崩溃?

原因在于,0x10实际上是一个由EIP-2537断言的预编译合约,是为BLS配对密码学程序而设的,但这个EIP还未部署到主网上。所以虽然你能够跟这个地址互动,但主网上的这个地址里没有任何合约,不会有任何进一步的动作。

此外,我们还需要一个事实来解释这次分裂,你可能也猜到了,就是“柏林”硬分叉:它改变了EVM中Gas消耗量的计量方法。

在EIP-2929实施后,如果你在一笔交易中对同一个存储槽多次执行状态存储操作,第一次执行会消耗更多Gas,后续执行的消耗会更少。这种重定价理论上能更准确地反映当前的客户端访问存储项的成本……

而且,要知道,在所有客户端的执行中,这些数据通常都换存在更便宜的硬件层中。

现在我们终于找到了OpenEthereum在区块#12244294处发生的Bug:该客户端包含了所有已实现的预编译,作为EIP-2929访问清单的一部分。

因为EIP-2537在大部分客户端中都已经实现就绪了,OpenEthereum对所有访问了0x10的交易都给了gas折扣。

但网络的绝大部分活跃客户端都不是这样实现EIP-2929的,它们只会给访问了已激活预编译合约的交易提供gas折扣——而EIP-2537属于还未激活的预编译合约!所以,OpenEthereum客户端对该交易消耗了多少Gas的计算与网络中其他客户端发生了分歧。

所幸,@mhswende很快找出了该bug,而@sorpaas出力修复了该bug:https://github.com/openethereum/openethereum/pull/364

还有很多东西可说,我也预期会有比我更能观察到全貌人来撰写更好的时候报告。

我能说的只是,这个bug彰显了硬分叉的内在风险,以及持续致力于建设更有弹性的基础设施的重要性。

依赖于OpenEthereum客户端的单客户端系统在今天停机了一段时间,因为客户端无法在问题区块出现后与网络保持同步。Etherscan自身也因此停机。

庆幸的是,这个bug没有严重到导致重大的链分叉,但这样的可能性并不是不存在。我们可以利用多客户端实现来提升抗性——多客户端本身就是我们以太坊生态的一大长处——并推动您的基础设施提供商也这样做。

我们已经看到,2021年的普及速度已经前所未有地快,而且前景非常光明。我们要从这个事故中吸取教训,一起打造更好的以太坊。

原文链接:https://twitter.com/ralexstokes/status/1382750001026146304作者:AlexStokes翻译:阿剑

标签:区块链ETHTHEETHE区块链运用的技术中不包括哪一项项TruthGPT (ETH)ethereum和erc20的地址一样吗ethereumuniswap

Uniswap热门资讯
深脑链:DBC主网上线在即, 开启AI云计算波卡新征程丨链节点AMA_人工智能

传统云计算领域主要分为计算、存储以及网络CDN,其中计算所占体量最大。在区块链云计算赛道中,Filecoin是去中心化存储、THETA是去中心化网络CDN,Dfinity是去中心化CPU计算,深.

1900/1/1 0:00:00
区块链:佟掌柜的朋友们:头部海外项目 成都站_ASP

佟掌柜的朋友们·海外项目专场,成都站热辣约饭时间:北京时间2021年4月26日14:30~20:00地点:四川成都世纪城新会展中心附近冠名:Beer联合主办:CasperLabs协办方:币小白协.

1900/1/1 0:00:00
DEF:论再平衡:DeFi实现指数基金的正确方式_AMM

作者:比原链研究院 DeFi三年来的发展创新创造了很多原生的金融形态,如AMM、Pool、CDP、虚拟合成等,这些金融形态均支撑起了高市值、高活跃的新项目和新加密代币.

1900/1/1 0:00:00
NFT:NFT Insider周报:Eminem跨界NFT,Pak苏富比拍卖总成交额1660万美元_ITA

了解NFT,读NFTInsider周报就够了。 NFT市场新闻OpenSea用户总数突破10万人据DuneAnalytics数据显示,NFT交易平台OpenSea用户总数突破10万人,创历史新高.

1900/1/1 0:00:00
比特币:比特币暴跌后引发抄底潮?_point币最新消息

注:原文作者是glassnode数据分析师CHECKMATE。上周比特币经历了大幅波动,在备受期待的Coinbase直接上市之前,BTC价格一度创下了64717美元的历史新高,然而这是短暂的,到.

1900/1/1 0:00:00
区块链:“十四五”展望:供应链区块链“双链融合”大有可为_数字人虚拟主播

原标题:从“十四五”规划解读中国区块链金融科技应用创新发展回顾国内区块链技术发展中的政策支持,从2019年中共中央局将区块链技术确定为国家核心技术自主创新的重要突破口.

1900/1/1 0:00:00