26

以太坊2.0最新状况报告:启动64个分片,预期2年内validators数量达到数十万

 3 years ago
source link: https://www.8btc.com/article/604790
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文是由以太坊2.0协调员Danny Ryan发布于以太坊官方博客上的,原文为《 以太坊2.0的现状 》(2020年6月)。在这篇文章中,Danny Ryan介绍了以太坊2.0(eth2)最新的状况,各方面的进展和计划。

非常感谢Sacha Saint-Leger,Joseph Schweitzer,Josh Stark和protolambda的出色投入和反馈。

我花了很多时间来解释和回答有关eth2的问题。 当我与技术贡献者沟通相关研究和技术规范时,其中一些涉及到深度和技术层面,但是如今,我越来越多地向社区提出有关eth2的进展,方向,动机,设计决策,延误等问题。 我真的很喜欢这些对话。 当我解释eth2时,我会感到非常兴奋,想出新的方法来描述各个部分的进展,或者根据听众找到合适的类比,以使社区运转起来,并保持透明。

但是,这种动态/对话的方法虽然很有价值,但是仍旧让社区中的很多人并不了解。 我一次又一次被问到同样的问题,甚至六个月后我又被问到了同样的问题! 显然这里存在着信息传递的问题。 社区想要知道的信息已经公开存在,但却是以各种形式分散在网络上——如研究类帖子,技术规范文档,规范说明文档,公共电话会议,公共聊天频道,reddit,博客文章。 在以太坊开发大会devcon5之后,我在弥合eth2内的人与社区中其他人之间的信息鸿沟的第一次尝试便是一个新博客系列,即“ eth2快速更新”。 这些是帮助您跟进eth2的小的信息片段,但我意识到它们并没有真正传达出更大的eth2视图。虽然确实可以在播客,AMA和会议上进行交流和讨论,但即便如此,关于eth2的书面形式的表述仍将很有帮助。

所以这就是这篇文章的目的。 这篇文章是针对社区的,目的是为使以太坊社区全面了解eth2的现状:正在进行的工作,可能的未来发展以及对您的意义。 我将尝试提供适当数量的技术内容,以说明相关工作的动机和愿景,项目的当前状态以及即将开展的工作,而不会过多地使用数学或专业术语。

这篇文章对于那些至今对eth2有所迷惑的以太坊技术专家来说可能也很有用。 不用担心,我都了解。 这个项目很大,很复杂,而且距离实现还有一些距离,您可以在解决眼前的紧迫问题时忽略它。 希望这篇文章可以帮助您更好地了解即将发生的事情。

对于eth2工作者来说,您可能还会从这篇文章中学到一些东西——对我们现在的处境以及我如何思考未来的事情有更广泛的了解。

免责声明:本文中的内容是我个人(Danny Ryan)的看法。 eth2是不断发展的,不断演变的,存在着很多声音和观点。 本文只是我自己对eth2的理解。

eth2是什么?

“ Eth2是一种可扩展的权益证明(PoS)基础架构”

如果您在过去6个月内听过我之前的讲话,那么您应该一次又一次地听到我说过这句话。 Eth2是为以太坊构建的,最终会成为以太坊。它旨在为当前的以太坊主网提供一个更安全和可扩展的环境,并且对目前的工作方式的干扰最小。同时,它为我们提供了一种经过升级的环境。

在以太坊诞生之前,众所周知,一种单个区块链范式无法提供足够的带宽来充当新的去中心化互联网的骨干。以太坊相关的权益证明(PoS)和分片(Sharding)研究的历史可以追溯到2014年。PoS和分片的目的都是为了回答以下问题:给定一定数量的资本支持加密经济体系,我们能否在提高安全性和吞吐量的同时仍允许消费类硬件参与共识?虽然我不会在本文中讨论之前的历史,但要说的是这项探索已经花了很多年,并且有许多错误的方向。最后,我们得到了一个肯定的答案,并已证明这个答案就是eth2项目。

Eth2是一个雄心勃勃的多年实施项目,将分阶段推出。对此已经进行了广泛的记录和讨论,但我将向您快速介绍一下这些阶段的含义。

阶段0

信标链(Beacon Chain)是eth2的阶段0,是新共识机制的核心。 这是所有系统级活动和编排发生的地方。 阶段0就是要与遍布全球数千个节点的数十万个共识实体(验证器,validators)达成共识。

由于在阶段1+中有关将验证器的子集分布在各个分片上的技术要求,我们需要能够处理大量的验证器。 许多工程复杂性便是源于这个要求。 与其他非分片的权益证明机制具有100或1000个验证器相比,但是 eth2的设计为至少具有约1600个验证器,并期望在两年内该数字将达到数十万。

阶段1

阶段0在于达成共识,而阶段1在于在“很多事务”上达成共识。 这些“事务”以许多分片链的形式出现。 您可以将分片链视为其自己的区块链,其复杂性与今天的以太坊大致相同,但存在于eth2共识下(即在信标链之下并由其构建/控制)。信标链的验证者获得随机的短期任务,以构建和验证分片链,对每个链的状态,可用性和有效性做出加密经济承诺,并返回到核心系统。

目前,我们预计将启动64个分片,并且系统可用的总数据在1到4 MB / s的范围内(是的,这是一个很大的数据量)。

阶段1.5

阶段1.5是将以太坊目前主网作为一个分片(作为阶段1创建的许多分片之一存在)集成到新的eth2共识机制中。 它不是由工作量证明(PoW)挖矿算法构建的以太坊,而是由eth2验证器构建的。 对于现有的应用和用户,共识机制的这种热交换在很大程度上将是透明的。 这些应用继续发展,但是开发人员这时候将拥有一个功能更强大的系统(更好的安全性,适当的经济最终性,更多的用于rollups的第1层数据和其他有趣的应用)。

阶段2

阶段2将在更多分片上添加状态和执行,而不仅仅是原始的以太坊分片。 这可以采用多种形式。 弄清楚哪种形式及其背后的细节,是当今研究和原型开发的热点。 我将在下面的部分中对此进行更多讨论。

eth2对社区的好处

我们已经大概介绍所有这些发展阶段,而阶段0实际上感觉就在我们眼前。但是该路线图听起来似乎还很长。在这些升级阶段中,我实际上对eth2的期望是什么?

好问题!总的来说,在每一步中,都会出现一波升级浪潮,越来越多地涉及以太坊网络和社区。作为用户,您可以尽早参与阶段0的抵押(Staking),也可以等到以太坊在阶段1.5完全迁移到eth2中(从dapp开发人员和用户的角度来看,这种过渡应该是无缝的)。无论您选择如何参与以及在哪个阶段参与活动,都有重要的里程碑和好处值得关注,因为这一切都将开始出现。

首先,我知道你们中的很多人都是“顽固的”ETH持有者,他们渴望参与到未来的Staking。对于所有潜在的验证者,尤其是爱好者,阶段0就很适合您。阶段0伴随着自身的风险和时间跨度,因此对于某些参与者而言,它并不吸引人,因此我个人预计这个阶段对于业余爱好者和长期以太坊信徒来说都是福音。这是踏入eth2的一个独特机会,有助于随着时间的推移影响以太坊的愿景,并作为早期采用者而获得更高的ETH奖励。

那阶段1呢?在将现在的以太坊集成到eth2中之前,我们可以用所有这些数据做些有用的事情吗?是的

即使没有本地计算,1层(Layer 1)数据也非常有用。 实际上,过去12个月中最有前途的2层(Layer 2)扩展解决方案是这些所谓的“rollup”链(optimistic和ZK),它们随着Layer 1数据的可用性而扩展。 预计eth2数据层将为以太坊提供1-4 MB / s的数据可用性,这在与rollup技术结合使用时可转化为巨大的可扩展性。 但是由于以太坊最初的脱节性和一开始的新分片世界,因此很难明确eth2分片的数据。 这就是EIP 2537对以太坊主网如此重要的原因之一。 借助一种本机BLS(新的eth2签名算法)预编译,我们可以编写高效的eth2轻客户端作为一种solidity合约,从而使以太坊应用能够在阶段1.5集成之前对eth2中的数据进行声明所有权。

如上所述,阶段1.5非常庞大。 Eth2是为以太坊构建的,在这一点上,eth2最终将成为以太坊。我们知道和喜爱的所有应用都将集成在升级的eth2共识机制中,并保留了我们惯用的功能集,同时打开了安全的权益证明共识的广阔新局面,并可以通过本地访问高度可扩展数据层。我认为这是过程的重点。这是我们取得巨大成功的时刻,我们将以太坊完全融入了其新现实。

除此之外,通过在其他分片链上启用状态/执行,随着时间的推移,可能还会获得更多的可扩展性。这可能以EVM或称为eWASM的新虚拟机(VM)形式出现。无论选择哪种VM,现有的以太坊EVM分片和新分片链都将能够通过信标链进行本地交互和通信,从而完成多执行分片的愿景。

看到了吗?这是一场旅行,但是在此过程中会有很多收获。

这种方法的困难,以及为什么值得

这么多验证器

分片的关键部分取决于共识参与者(验证者)进入委员会的随机抽样,以验证协议的一部分(例如,分片)。假如协议中足够的验证者,并且假定攻击者的大小达到最大(例如控制验证者的1/3),从数学上讲,这是不可能的(概率为1/2 ^ 40左右)接管任何一个委员会并破坏系统。这使我们可以对系统进行设计,以使拥有消费类计算机的任何人(例如笔记本电脑甚至旧手机)都可以成为验证器(因为验证器被分配给系统的各个子部分,并且一台机器的计算资源就可以验证任何子部分)。

这就是使分片变得不可思议且同时又困难的原因。首先,我们必须有足够的验证器以确保此随机抽样的安全:这意味着eth2预计比大多数(我认为是)其他权益证明协议具有更多的验证器。这在流程的每个阶段都带来了挑战——从研究到共识机制规范,网络,资源消耗和客户端的优化。每个附加的验证器都会在系统的每个步骤中引起系统负载,必须对此加以考虑。 Eth2客户端团队已经完成了艰巨的任务,即管理成千上万验证者的共识,以便我们可以安全地集成阶段1中的许多分片。

这么多分片

使我们难以构建的另一个基本设计决策是,在以太坊中,我们选择获得可扩展性的同时又不影响去中心化。

如果我们不在乎用户实际上是否能够自行验证链,也不保证网络实际上可用的数据多少,那么将区块链扩展到每秒处理成千上万的交易并不难。 分片共识机制的复杂性是必须的,以便可以将系统分解为字节大小的可验证块。 制定和实施这样的共识机制非常困难。

这么多客户端

以太坊的核心宗旨是以太坊是协议优先。 以太坊是组成协议的抽象规则集,而不是这些规则集的任何特定实现。 为此,以太坊社区从第0天开始就鼓励开发许多客户端实施。今天在以太坊主网上,已经有了besu,ethereumJS,geth,nethermind,nimbus,open-ethereum,trinity和turbo-geth等很多客户端实施。 在eth2中,客户端有 cortex, lighthouse, lodestar, nimbus, prysm, teku,和 trinity。

多客户端范例具有许多重要的优点:

  • 允许存在许多客户端,这可以对想法,算法和体系结构进行更广泛的探索(每个客户端都有自己的方法和观点)。由于我们都构建了更强大的系统,因此在此过程中存在良好的相互借鉴。
  • 各个客户端通常有不同的设计目标。随着时间的推移,这将促使用户和应用更加多样化。客户端可能或多或少地专注于以下任何方面:性能,安全性,水平扩展,UI / UX,轻客户端,浏览器,资源受限的设备等。
  • 在主网上有许多产品级客户端时,对于一种可以击倒任何一个客户端的重大攻击(例如DoS攻击)将具有一定的弹性,因为由于其余客户端仍然强大。这是在以太坊早期历史中出现的“上海DoS攻击”中看到的,当时很多DoS攻击瘫痪Geth和Parity客户端,但并未出现过同时攻破两个客户端的情况。
  • 每个客户端都充当通往编程语言社区的门户。一种特定语言的客户端的基础开放和邀请使用这种语言的实验和创新。围绕客户端的基础工具通常会不断壮大该语言的强大工具和贡献者生态系统。多客户端范例增强了以太坊的引力。

这些明显的优势带来了一些困难:

  • 这些规范和测试必须是隔离进行的,以避免在主网上发生意外分叉。 如果该协议只有一种实现,则该实现将成为该协议。 在单客户端的情况下,如果在主网上碰到任何形式的共识“错误”,那么它将变成协议的现实。 从纯度的角度来看,这不是很好,但是它消除了意外叉的风险。 为了解决这一难题,如果我们在主网上合理分配客户端(例如,没有一个客户端的节点/验证器总数超过1/3),即使单个客户端出现共识问题,网络也可以保持正常运行。
  • N个客户端的协调充其量仅会导致单个客户端发生线性开销(overhead),但在某些情况下可能会导致一种二次开销(N ^ 2)。 我们采用了一些技术来减少这种开销——例如共识(和快速网络)测试套件——但它总是会以某种形式存在。

eth2客户端和测试网的目前情况

客户端

在过去的两年中,阶段0 eth2客户端已经成为非常复杂的软件,它能够处理数千个节点中成千上万个验证器的分布式共识。 我们目前正处于测试网阶段,并且每天都会逐渐接近启动。 我预计最后的一英里会很长。 事实证明是这样。

我请求您在发布之前的这段时间内,去尝试多客户端。 这些客户端之间存在着很多权衡取舍,因此您必须动手以找出最适合您的客户端。 如上所述,以太坊以多客户端范式运行。 为了获得这种范式的好处,我们需要用户运行各种各样的客户端(以在所有类型的客户端上创建合理的分配)。

除此之外,该协议还内置了反相关激励措施。 在极端情况下,如果一种主要的客户端无意中导致验证器掉线或验证器犯下严重罪行,如果您的验证器的行为与该客户端有关,那么与您做错了事却与他人无关的情况相比,您将受到更多的惩罚。 换句话说,在这种情况下,运行一种少数客户端而不是拥有大量网络份额的客户端会更好。

绝对要明确——如果存在不止一个可行且安全的客户端,那么你有责任运行少数客户端软件以促进客户端软件在网络上的健康分布。

另外,不要害羞。 如果您在文档方面遇到问题,请告知他人。 如果看到错字,请提交PR。 如果崩溃或弹出错误,请在github或客户端discord中报告。 您是Beta版用户,在您的帮助下,我们可以为所有人提供更好的体验。

测试网

我们目前正在运行小型公共开发网络(devnet),大约每隔一到两周就会重新启动一次。我之所以说“ devnet”,是因为它们首先是客户端团队开发人员研究错误,优化等工作的方式。它们是公开的,欢迎您加入,但是要注意,它们还没有像Goerli或Rinkeby存在很长时间。由Afri Schoedon领导的最新发布版本是运行v0.11规范的Witti测试网(如果要运行某些节点,请在此处查看 README )。

客户端团队正在积极升级到v0.12规范,该规范集成了最新版本的IETF BLS标准。从那里开始,随着我们继续扩大网络规模,在客户端上增加越来越多的负载,我们将把devnet过渡到v0.12。在有2-3个客户端可靠地启动成功的v0.12网络并在高负载下运行之后,我们将进行更公开的测试网,在其中您将运行大多数节点和验证程序。这里的目的是创建一个长期存在的多客户端测试网,它尽可能地模仿主网(用户可以在其中可靠地练习运行节点并测试他们想要的其他任何东西)。理想的做法是将启动运转起来,并在维护网络的同时对所有故障进行分类。但是,根据故障的存在和严重程度,我们可能需要运行几次才能到达我们想要的地方。

除了普通的测试网之外,我们还将提供激励性的“攻击网”,客户端团队可以在其中运行稳定的测试网,并邀请您尝试以多种不同方式对其进行破坏。 对于成功的攻击,以太坊基金会将提供ETH奖励。 很快会发布更多信息——请继续关注!

eth2工具的当前情况

虽然eth2 工具(tooling)尚处于起步阶段,但这是一项令人兴奋且不断发展的努力。 如上所述,工具(tooling)通常来自客户端代码库和客户端团队的努力,但是每天都有越来越多的人参与其中。 为了更好地与eth2进行交互,理解,保护和增强eth2,我们作为一个社区需要扩展并建立在基本eth2工具上。 我想对已经为其eth2工具提供了巨大价值的团队和个人大声疾呼,并希望欢迎其他所有人开发新工具并扩展和增强现有工具。

Eth2工具是一个全新的机会。 这是一个难以置信的机会,可以挖掘,提供真正的价值并取得成功。

以下是进行中的工作的示例,但还有很多工作要做!

  • 资源管理器:Beaconcha.in,Etherscan,Eth2stats
  • 网络工具:Prrkl,Rumor,Pyrum,Stethoscope
  • 密钥库和钱包:ethdo,deposit cli,EIP 2335和其他新标准
  • API设计和原型绑定
  • Slashing检测:Prysm“哈希slinging slasher”

以下是一些开放式工具创意的示例:

  • Eth2验证程序警报:提供一项服务,可在节点验证程序未达到最佳性能时向节点运营者报警
  • 验证器存款跟踪:通过跟踪验证器存款过程,帮助在当前的以太坊和eth2浏览器之间架起桥梁
  • 通过代理保护验证者:使用代理跟踪验证器消息,以确保您的客户端不会发送不安全的消息

不仅如此,这是一种类型的贡献,不仅仅局限于规范。 创造力很重要。 如果您想做出贡献,请与eth2客户端团队联系以开始使用。

eth1 + eth2集成的当前情况

在当前的以太坊客户端(例如geth等)中,几乎所有复杂性都在于处理用户级别的活动——事务池,区块创建,虚拟机计算以及状态存储/检索。实际的核心共识(工作量证明PoW)在协议中相当简单。大多数复杂性由核心协议之外的复杂硬件处理。

另一方面,eth2客户端完全就是共识。在权益证明(PoS)和分片中,许多复杂性被引入协议中,以实现可扩展共识的目标。

这些问题的分离使eth1和eth2客户可以完美地配对。

目前,geth(以太坊基金会)和TXRX(ConsenSys)团队的成员正在将两者合并。这项工作包括(1)定义eth1和eth2客户端之间的通信协议,(2)向eth1客户端添加可以通过通信协议控制的共识引擎,以及(3)原型化和模拟eth2阶段1的行为以测试耦合。我们希望今年夏天在这些方面能看到一些具体结果。

您可以在 此处 阅读更多关于高级eth1 + eth2客户端关系以及合并技术范围的信息。

分片之间的执行和通信情况

如前所述,实现跨多个分片执行的确切路径是一个受到广泛研究和争论的领域。 有很多问题要回答。 例如:

  • 执行应启用多少个分片?
  • 对于其他分片,我们是否将EVM或eWASM用作虚拟机?
  • 我们如何有效地组织和处理跨分片交易?
  • 我们需要对现有EVM进行哪些更改以支持跨分片交易?
  • 一般而言,执行和帐户结构是否可以扩展?

在过去的12个月中,eWASM(EF)和Quilt(ConsenSys)团队在这些领域进行了大量研究。 事实证明,解决方案领域非常庞大,尽管我们现在可以很好地处理该领域的广度,但最近的重点是挖掘简单,切实的解决方案,以便能够测试,建立原型并真正建立对话。 由此产生了eWASM的Eth1x64计划(了解该项目的高级视图,并查看正在讨论的一些最新规范)。

在将抽象的交叉分片思想引入具体规范以进行讨论并最终成为原型方面,已经取得了迅速的进步。 密切注意这方面的进展,特别是如果您是dapp开发人员。 在接下来的几个月中,我们打算提供一些您可以理解,使用并提供反馈的信息。

无状态以太坊与eth2的关系

与eth2并行进行的另一项重大研发工作是“无状态以太坊”。无状态以太坊致力于解决状态规模增长问题。它允许参与者验证区块,而不必在本地存储整个状态。现在,以太坊状态转换函数中有一个隐式输入:整个状态。使用无状态以太坊,将在区块内部提供有关必要状态的证明(见证,witnesses)。这允许将区块作为仅该区块的纯函数进行转换/验证。

对于用户而言,这意味着一个世界,您可以跟着区块链,甚至可以关注自己关心的状态部分,而无需存储所有状态。一些网络参与者可能会存储所有状态(区块生产者,区块浏览器,按需收费的状态提供者),但是绝大多数参与者将只需要一部分状态。

对于eth2,这是一种重要的技术机制,可确保节点和验证器可以验证并保护协议,而无需负担存储每个分片的完整用户状态的负担。取而代之的是,验证器可能选择加入某些分片的区块生产者,而基线验证器可能仅验证无状态块。无状态的以太坊是eth2愿景的一个非常宝贵的补充,使分片协议的基础层非常薄。尽管我们计划在eth2上实现无状态运行,但如果无状态路径最终无法证明是可行的,我们确实有一些其他选择(尽管我本人对无状态很有信心:smile:)。

对于这篇文章,我将不做任何深入的研究。只知道这是确保以太坊长期可持续发展的令人兴奋的并行研发路径。如果您想了解更多信息,请查看Griffin的1.x博客系列。

最后

Eth2是一项艰巨的任务,旨在为以太坊提供升级的,下一代的,高度可扩展的和安全的,去中心化的共识。每天都有数十个团队和数百名个人在工作,以实现这一目标。我们选择的道路是艰难的,但是已经取得并继续取得巨大进步。

这种新机制的核心部分指日可待。

如果您是一个有抱负的验证器(Validator),那么现在就该进行探究了。通过尝试多个客户端来支持多客户端范式,并从eth2的起源中帮助浇灌一个强大的丰富客户端 多样性基础。

如果您是用户或dapp开发人员,请立即继续使用以太坊,同时我们将继续为您准备这种更安全和可扩展的环境。当那一时刻到来时,向eth2的转换将尽可能地无缝实施。

谢谢那些令人难以置信的团队和个人,使今天的以太坊保持生机和健康;谢谢你们所有人为eth2中以太坊的未来做准备;并感谢所有使以太坊很棒的用户和开发人员:rocket:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK