广告

以太坊客户端多样性问题!

5问以太坊客户端多样性问题从何而来?

最近举行的第 90 期核心开发者会议几乎全程都在讨论一个问题。我强烈建议大家亲自听一下这场会议。

在这场会议上,Alexey 提出了客户端开发者负荷过重的问题。虽然我认为这场讨论是一个重要的开始,但是我们太急于寻求解决方案了,充分理解这个问题才是当务之急。重要的是,我们需要花点时间来分析问题。在问题内涵的分析上,“五问法(Five Whys)” 是最简单有效的方法之一。

事不宜迟,先来看看第一问是什么。


第一问:为什么 Geth 开发团队的压力如此之大,甚至到了超负荷的地步?

通过 etherscan,我们可以看到各个客户端的装机量所占份额的统计数据如下所示:

  • Geth: 75%

  • Parity & OpenEthereum: 20%

  • Nethermind: 1%

剩下 4% 由一些市场份额不到 1% 的客户端组成,因此忽略不计。

重要的是,有超过 51% 的算力都集中在 Geth 客户端上。假设在即将到来的柏林硬分叉中,Geth 在实现其中一个 EIP(以太坊改进提案)时出现了 bug 。即使这个客户端的其它实现都没出 bug ,只要有区块碰上了这个 bug ,就会导致以太坊网络分叉。按理来说,这个区块是无效的,其他客户端也会将其视为无效块。但是,有超过 51% 的挖矿节点都运行的 Geth 客户端,因此整个网络都会被带到错误的分叉链上去。

这就要求 Geth 客户端和开发团队绝对不能犯错。

因此,第一问的答案是:

因为以太坊网络的客户端缺乏足够的多样性。

值得一提的是,客户端多样化不会突然将客户端开发变成一项轻松的工作。但客户端多样性本身依然是一个值得探索的领域,有助于我们找到提高客户端开发的效益,同时减轻开发团队负担的方法。不可否认的一点是,只在 Geth 团队上下功夫不太可能解决这个问题。

第二问:为什么以太坊网络缺乏客户端多样性?

以太坊主网上线时,我们有多个客户端。其中最主要的两个是 Geth 和 CPPEthereum 。之后又出现了 Parity ,CPPEthereum 被淘汰。

从那时起,除了 Parity 之外,没有一个客户端能获得较大的市场份额。去年,Nethermind 异军突起,成为了一颗冉冉上升的新星,但是目前只占据了 1% 的市场份额。最近,由于 Parity 遭遇了一些波折,前途一片黯淡,Parity 的市场份额大幅下降。我们认为,在理想情况下,以太坊网络需要有 3 个及以上的客户端、每个客户端占有的客户端份额都不至于太高、没有任何一个客户端能占据远远超过 51% 市场份额。虽然在理想情况下应该实现客户端多元化,但是我们已经习惯了客户端霸权的局面。

那么,我们为什么需要多个客户端?

从我个人的经验角度来看,构建以太坊客户端难比登天。Geth 之所以能在以太坊网络上稳定运行,是因为它引入了很多复杂的优化。Geth 团队花费了数年时间才达到了如此高的复杂度,目前仍在继续优化中。

有人可能会立即建议我们想办法为落后的客户端提供支持和帮助。我很警惕这种 “人月神话” 式的解决方案 —— 在软件开发过程中,让更多工程师来解决一个难题很少会成功,而且我不指望这种方案会取得成功。

相反,我认为应该将关注点放在复杂性上。

注:人月神话,mythical man-month,指出以大量人员和较短的时间,并不能缩短软件的开发进度。一窝蜂的作业方式无助于软件生产,且会制造麻烦,产生出更差的软件。向进度落后的项目追加人力,只会使进度更加落后。

第三问:为什么构建以太坊客户端会这么难?

现在,我们正越来越接近问题的根源。

事实证明,大部分困难都来自于组网协议(networking protocol),即以太坊客户端软件用于相互连接并分享区块链信息的那一组工具。以太坊的组网规则(定义在 devp2p 代码库中),最终影响甚至决定了以太坊客户端的设计和要求。

一些组网工具指定了未经优化的架构,甚至要求以太坊客户端运行不必要的功能。客户端开发者需要在这些限制下工作。

第四问:为什么网络互联协议提高了客户端实现的难度?

我相信,这个问题的答案基本上可以分为两个部分。

  • 状态管理

  • 整体网络互联要求

就状态管理而言,以太坊客户端必须能够同步网络上的完整状态,并维护该状态的本地副本。这两点都很难做到。对客户端以及读取并处理状态要求的服务器来说,同步状态需要提出数百万个请求,并且会导致磁盘 I/O 饱和。新同步的状态需要经过维护和删减,以便数据库能足够快地执行新区块。从工程上来说,这是一项严峻挑战!

GetNodeData是我们用来同步状态的唯一网络互联工具,针对特定的状态数据库格式(俗称 “the native layout”)进行了优化。由 Turbo Geth 推广的 “扁平式” 数据库布局在状态维护方面具有极大的性能优势,但是使用这种布局会加大 GetNodeData 请求的处理难度。

一旦我们将注意力转向网络技术,尤其是 DevP2P ETH 协议,我们会发现还有其他因素提高了客户端的复杂性。要想加入这个网络,客户端需要具备以下能力:

  • 处理访问最近区块所生成的状态的 GetNodeData 请求;

  • 处理访问链上数据历史记录的请求,包括区块头、区块体和收据。

从根本上来说,对于许多客户端操作而言,处理这些请求所需的基础数据不是必需的,但是现在却强制它们支持这些功能。这就需要所有客户端在除了满足自己本身的需求之外,还要另外构建大量功能。例如,主要作为交易发送网关的客户端并不需要历史链上数据,可能只需要一个很小的状态子集。但是,就当前的以太坊版本而言,客户端依然需要保存完整的副本。

第五问:为什么……

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

解决方案

过去一整年,我都在关注这个问题。令我震惊的是,以太坊上许多问题的根源其实都可以追溯到网络层。

或许最明显的例子是,磁盘 I/O 历来都是客户端的一个瓶颈。这个瓶颈之所以存在,是因为客户端倾向于使用树结构(Trie)的朴素表示来执行其状态数据库。状态数据库的构建方式由 GetNodeData 网络元件决定。

为了解决这个问题,我们需要对以太坊共识层以及网络层的各个部分进行检修。目前,检修工作已经启动。大量工作已经在 Alexey 和我共同领导了 8 个月的 “无状态以太坊” 名义下开展。我们所做的一些工作至少减轻了 Geth 团队的负担,因为他们用上自己开发了经年之久的 SNAP 同步协议。还有一部分工作需要深入理解这个问题并想到可行方案的才俊来承担。

目前,这样一个庞大的 DevP2P ETH 协议尚未完全解构。我们对于如何将这个网络拆分成三个独立的专用网络有了基础了解,但是目前还没有人直接着手这块。

另外,还有像 re-genesis 之类的想法,提供了完全回避这些问题的机制。这是一种激进的方法,如果能成功的话,或将为我们带来很大的优势。

首先,我们应该清楚的是,以太坊网络还有许多艰巨的任务需要完成,只有少数人能够胜任这些任务。虽然每天都有越来越多的开发者参与进来,但是他们需要投入时间和精力来学习必备技能。客户端开发者在专注于解决日常用户看不到的底层问题时,还要抽出时间来开发新的 EVM 功能。

如果我们希望以太坊网络能够取得长远的成功,我认为整个社区都要就解决这些问题展开合作,给予其根本原因足够的关注和讨论。最重要的是,我们要携手打造出有效的技术解决方案。

作者 | Piper Merriam

翻译&校对 | 闵敏 & 阿剑

24小时热点

迷因币PUMP预售募资2.8亿美元 资金将流向何处ICO新币集资?

Dogecoin20推出创新迷因币,它未来是否能成为下一个狗 ...

34601

Business2Community

sdfs是什么?

SDFS(分布式文件系统)是一种面向分布式计算环境的用于集中 ...

88424

P网(Poloniex)交易所

UNQ币(Unique Network)涉嫌诈骗?

UNQ币(Unique Network)涉嫌诈骗之说一经提出 ...

28689

大币网

缅甸北部十万诈骗大军回国?!缅北的诈骗,国人的噩梦

缅北的诈骗,国人的噩梦 “这里是缅甸北部,我 ...

3561

Solanat

JSHIBA币(Jomon Shiba)挖矿什么意思?

Jomon Shiba简称JSHIBA,是一种去中心化加密数 ...

4233

以太经典

NFT 如何定价一直是一个有趣的话题

NFT 如何定价一直是一个有趣的话题。因为定价是一个不可避免 ...

36092

一点数藏

这是一位华尔街大佬盯上比特币的理由

离比特币减半只有3天,5月8日早间比特币突破10000美元大 ...

37801

人民网区块链

PIMOON币(Pimoon)历史价格走势?

PIMOON币(Pimoon)是Pimchain的主要币种, ...

13835

双子星交易所

AITD是诈骗项目,已彻底崩盘

AITD是一个名为“Asian Infrastructure ...

39680

AntPool蚁池

SOS币(OpenDAO)交易平台?

SOS币(OpenDAO)是一种基于以太坊技术的去中心化自治 ...

13291

BitFury Group
广告

热点专题

NFT艺术品到底是什么?

Beeple,“EVERYDAYS: THE FIRST 5 ...

2298161

Opera House

最全的NFT发展史

当我们理解一个新生事物,必须要首先了解其起源,通过对其源头以 ...

1739956

iBox

“华英会”诈骗圈钱5000亿!崩盘后将会凄惨无比

“华英会”崩盘的预警已多次发出,尽管尚未正式宣布崩盘,但大家 ...

1261880

Magic Eden

什么是IDO?这种模式会带来怎样的影响?

要理解IDO(Initial DeFi Offering)初 ...

1138541

Bitstamp交易所

有黑客采取新型 USDT 假充值手法

根据慢雾区情报,有黑客采取新型 USDT 假充值手法,黑客采 ...

992356

区块链博客

4种利用永续合约资金费率套利的策略

下文将介绍在保持市场中立的条件下,如何从永续掉期资金费率中套 ...

895502

DCG区块链孵化器

国内NFT平台是怎么赚钱的?

2021年被称为NFT的“元年”,互联网巨头、各大企业、艺术 ...

794253

CoinBene满币网

链圈百科:韩国政府机构组织图

一、行政院 韩国行政院是一个由政府的行政机构组成的中央政府 ...

788546

BitKeep钱包

元宇宙平台合法吗

现在,元宇宙平台备受热捧,但有人质疑其合法性。在此,我们将对 ...

729943

T网

宝二爷郭宏才的乘风破浪之旅

10年后的比特币会涨到10万美元吗?宝二爷说过:“先吹吹牛B ...

701601

QuillAudits