五问以太坊:客户端多样性问题从何而来?_ETH:GET

编者按:本文来自以太坊爱好者,作者:PiperMerriam,翻译&校对:闵敏&阿剑,Odaily星球日报经授权转载。最近举行的第90期核心开发者会议几乎全程都在讨论一个问题。我强烈建议大家亲自听一下这场会议。在这场会议上,Alexey提出了客户端开发者负荷过重的问题。虽然我认为这场讨论是一个重要的开始,但是我们太急于寻求解决方案了,充分理解这个问题才是当务之急。重要的是,我们需要花点时间来分析问题。在问题内涵的分析上,“五问法”是最简单有效的方法之一。事不宜迟,先来看看第一问是什么。第一问:为什么Geth开发团队的压力如此之大,甚至到了超负荷的地步?

通过etherscan,我们可以看到各个客户端的装机量所占份额的统计数据如下所示:Geth:75%Parity&OpenEthereum:20%Nethermind:1%剩下4%由一些市场份额不到1%的客户端组成,因此忽略不计。重要的是,有超过51%的算力都集中在Geth客户端上。假设在即将到来的柏林硬分叉中,Geth在实现其中一个EIP时出现了bug。即使这个客户端的其它实现都没出bug,只要有区块碰上了这个bug,就会导致以太坊网络分叉。按理来说,这个区块是无效的,其他客户端也会将其视为无效块。但是,有超过51%的挖矿节点都运行的Geth客户端,因此整个网络都会被带到错误的分叉链上去。这就要求Geth客户端和开发团队绝对不能犯错。因此,第一问的答案是:因为以太坊网络的客户端缺乏足够的多样性。值得一提的是,客户端多样化不会突然将客户端开发变成一项轻松的工作。但客户端多样性本身依然是一个值得探索的领域,有助于我们找到提高客户端开发的效益,同时减轻开发团队负担的方法。不可否认的一点是,只在Geth团队上下功夫不太可能解决这个问题。第二问:为什么以太坊网络缺乏客户端多样性?

观点:Facebook元宇宙与区块链行业最初提出的元宇宙愿景几乎无关:10月30日消息,CoinDesk发表分析文章《Facebook以其荒谬的更名再次窃取加密创意》。文章称,马克·扎克伯格(Mark Zuckerberg)关于元宇宙的愿景与区块链行业首次提出的开放、可互操作的愿景几乎没有关系。尽管Facebook的在线虚拟现实(VR)将有某种形式的NFT集成,但更广泛的愿景并不是扎克伯格提出的。其发布会主要集中在他对苹果应用商店和Facebook计划建立以在线VR体验为重点的竞争性平行围墙花园(CoinDesk作者表示不打算称之为元宇宙)的失望。他们将向设计虚拟衣服的创作者收取费用。扎克伯格昨天甚至警告说,平台上的费用在一段时间内会很高。扎克伯格解释称,Facebook将在一段时间内亏本建设其在线VR业务(包括通过补贴设备),以此来证明其高额费用是合理的。CoinDesk作者还提到用户隐私、垄断、法律和监管方面的问题,并最后总结称,Facebook正在建造的元宇宙是数字版本的地狱。

去中心化借贷平台Dharma联合创始人Brendan Forster昨日发推称,“因此,基本上这是一场创造引人注目的元宇宙的竞赛中,以太坊与Facebook的对决。开放vs.封闭;透明vs.不透明;无需许可vs.许可;社区所有vs.扎克伯格所有。我下注了。让我们一起建设美好的未来。”

据此前报道,Facebook宣布更名为Meta,其元宇宙将支持NFT。(CoinDesk)[2021/10/30 6:21:25]

以太坊主网上线时,我们有多个客户端。其中最主要的两个是Geth和CPPEthereum。之后又出现了Parity,CPPEthereum被淘汰。从那时起,除了Parity之外,没有一个客户端能获得较大的市场份额。去年,Nethermind异军突起,成为了一颗冉冉上升的新星,但是目前只占据了1%的市场份额。最近,由于Parity遭遇了一些波折,前途一片黯淡,Parity的市场份额大幅下降。我们认为,在理想情况下,以太坊网络需要有3个及以上的客户端、每个客户端占有的客户端份额都不至于太高、没有任何一个客户端能占据远远超过51%市场份额。虽然在理想情况下应该实现客户端多元化,但是我们已经习惯了客户端霸权的局面。那么,我们为什么需要多个客户端?从我个人的经验角度来看,构建以太坊客户端难比登天。Geth之所以能在以太坊网络上稳定运行,是因为它引入了很多复杂的优化。Geth团队花费了数年时间才达到了如此高的复杂度,目前仍在继续优化中。有人可能会立即建议我们想办法为落后的客户端提供支持和帮助。我很警惕这种“人月神话”式的解决方案——在软件开发过程中,让更多工程师来解决一个难题很少会成功,而且我不指望这种方案会取得成功。相反,我认为应该将关注点放在复杂性上。注:人月神话,mythicalman-month,指出以大量人员和较短的时间,并不能缩短软件的开发进度。一窝蜂的作业方式无助于软件生产,且会制造麻烦,产生出更差的软件。向进度落后的项目追加人力,只会使进度更加落后。第三问:为什么构建以太坊客户端会这么难?

观点:在认定BTC参与之前,希望看到加密货币大规模证据:1月14日,针对此前欧洲央行行长拉加德指责比特币是一种参与活动的高度投机资产的表态,Galaxy Digital创始人兼首席执行官Mike Novogratz发推表示:“在过去的十年里,银行已经因和其他不轨行为支付了数十亿美元的罚款。我敢肯定超过1000亿美元。在我们得到这样的评论之前,我希望看到加密货币大规模的证据。”[2021/1/14 16:10:28]

现在,我们正越来越接近问题的根源。事实证明,大部分困难都来自于组网协议,即以太坊客户端软件用于相互连接并分享区块链信息的那一组工具。以太坊的组网规则,最终影响甚至决定了以太坊客户端的设计和要求。一些组网工具指定了未经优化的架构,甚至要求以太坊客户端运行不必要的功能。客户端开发者需要在这些限制下工作。第四问:为什么网络互联协议提高了客户端实现的难度?

观点:如果没有山寨币 比特币的价值可能会高得多:9月11日消息,宏观投资者、10T Holdings联合创始人Dan Tapiero在推特上转发了一份山寨币前十名单并写道,“令人惊讶的是,许多另类投资仍然有价值,但想象一下,如果所有浪费的注意力都集中在比特币上。”他认为,在黄金之后,比特币是唯一标准化的其他真正全球资产。Chainalysis的新“加密货币采用”指数显示了其深远的全球影响。(Coingape)[2020/9/11]

我相信,这个问题的答案基本上可以分为两个部分。状态管理整体网络互联要求就状态管理而言,以太坊客户端必须能够同步网络上的完整状态,并维护该状态的本地副本。这两点都很难做到。对客户端以及读取并处理状态要求的服务器来说,同步状态需要提出数百万个请求,并且会导致磁盘I/O饱和。新同步的状态需要经过维护和删减,以便数据库能足够快地执行新区块。从工程上来说,这是一项严峻挑战!GetNodeData是我们用来同步状态的唯一网络互联工具,针对特定的状态数据库格式进行了优化。由TurboGeth推广的“扁平式”数据库布局在状态维护方面具有极大的性能优势,但是使用这种布局会加大GetNodeData请求的处理难度。一旦我们将注意力转向网络技术,尤其是DevP2PETH协议,我们会发现还有其他因素提高了客户端的复杂性。要想加入这个网络,客户端需要具备以下能力:处理访问最近区块所生成的状态的GetNodeData请求;处理访问链上数据历史记录的请求,包括区块头、区块体和收据。从根本上来说,对于许多客户端操作而言,处理这些请求所需的基础数据不是必需的,但是现在却强制它们支持这些功能。这就需要所有客户端在除了满足自己本身的需求之外,还要另外构建大量功能。例如,主要作为交易发送网关的客户端并不需要历史链上数据,可能只需要一个很小的状态子集。但是,就当前的以太坊版本而言,客户端依然需要保存完整的副本。第五问:为什么……

观点:一个看跌交叉正在形成,此前出现在比特币3月暴跌时期:除了测试9500美元受阻,比特币在过去几天的宏观表现相当不错。截至发稿时,比特币位于9200美元上方,获得8500-9000美元区域支撑。对多头来说不幸的是,BTC据称正在形成一个信号,上次出现类似信号是在3月份资产暴跌60%之前。

分析师FizeekMoney相信,很可能还会有另一次下跌,并在推特分享了图表。它显示一个未命名的技术指标(似乎是两个移动平均线)即将经历看跌交叉。短期移动平均线即将跌至长期移动平均线下方,表明看涨势头有所减弱。这种潜在的交叉很重要,因为上一次出现该交叉时,比特币在几天之内从9000美元区间暴跌到3700美元。(Bitcoinist)[2020/7/12]

看来我只问了四个“为什么”就找到了根本原因。以太坊协议还没有完全成熟。在设计以太坊协议时,我们并没有意识到现如今发现的大多数问题,或者因为当时状态规模较小、发展历史较短,这些问题还不成问题。解决方案

观点:区块链技术将加速气象环境社会化观测:近日,中国气象局印发《便捷式自动气象观测仪分级技术规范(试行)》,鼓励观测技术创新发展。有业内人士表示,气象环境数据一旦上区块链,时间和内容均公开透明且难以篡改,上链的内容也将逐步具有法律效力,可溯源追责,这就为不同机构进行数据交换和共享提供了信任基础,用技术解决了信任问题。区块链技术还会鼓励更多的社会团体、企业和用户加入社会化观测系统,通过对气象数据上链、创建仲裁节点剔除不良数据、气象数据的分布式存储,贡献气象环境数据来获取相应的数字经济权益。(环球网)[2020/6/9]

过去一整年,我都在关注这个问题。令我震惊的是,以太坊上许多问题的根源其实都可以追溯到网络层。或许最明显的例子是,磁盘I/O历来都是客户端的一个瓶颈。这个瓶颈之所以存在,是因为客户端倾向于使用树结构的朴素表示来执行其状态数据库。状态数据库的构建方式由GetNodeData网络元件决定。为了解决这个问题,我们需要对以太坊共识层以及网络层的各个部分进行检修。目前,检修工作已经启动。大量工作已经在Alexey和我共同领导了8个月的“无状态以太坊”名义下开展。我们所做的一些工作至少减轻了Geth团队的负担,因为他们用上自己开发了经年之久的SNAP同步协议。还有一部分工作需要深入理解这个问题并想到可行方案的才俊来承担。目前,这样一个庞大的DevP2PETH协议尚未完全解构。我们对于如何将这个网络拆分成三个独立的专用网络有了基础了解,但是目前还没有人直接着手这块。另外,还有像re-genesis之类的想法,提供了完全回避这些问题的机制。这是一种激进的方法,如果能成功的话,或将为我们带来很大的优势。首先,我们应该清楚的是,以太坊网络还有许多艰巨的任务需要完成,只有少数人能够胜任这些任务。虽然每天都有越来越多的开发者参与进来,但是他们需要投入时间和精力来学习必备技能。客户端开发者在专注于解决日常用户看不到的底层问题时,还要抽出时间来开发新的EVM功能。如果我们希望以太坊网络能够取得长远的成功,我认为整个社区都要就解决这些问题展开合作,给予其根本原因足够的关注和讨论。最重要的是,我们要携手打造出有效的技术解决方案。

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

金智博客

[0:0ms0-3:171ms