GON:一文图解以太坊发展路线

以下内容改编自4月9日(周五)的演讲

本文讲的是通往以太坊的未来之路。Eth2开发者团队将当前的以太坊称为“eth1”,也就是现在我们所熟知的PoW链。而未来的以太坊既不是eth1,也不是eth2,而是...以太坊:

让我们来梳理一下现在的以太坊:

图:当前以太坊(eth1链)的运作方式

用户想要做一些事情(“进行交易”),因此将其交易发送给矿工,矿工把它们打包成块并添加至一条不断增长的链中。矿工运行PoW共识机制,以决定谁来添加下一个区块,并执行区块中的交易,以确保交易是有效的。

图:PoS机制代替PoW机制

PoW也不全是糟糕的,但我需要一个吸引人的题目

PoW需要大量硬件运行密集的计算,造成了过高的能量消耗。我们并不会像大多数加密货币批评者那样谈论资源浪费(他们通常的说辞是“为什么我们要用一种消耗国家资源的支付系统”?),我们所倡导的是,既然我们能够以相对较小的消耗去做同样的事情,那我们就应该这样做。

所以我们选择向PoS过渡,仅用一个小型服务器代替大量的挖矿设备,用验证者代替矿工。

图:如果他们没有做好第二步的验证工作,他们将会损失资产

那第二步是怎样运作的?验证者到底在验证什么?

图:将以太坊的活动分为两部分(共识层和执行层)

共识层确保每个人就某个正确的数据达成一致。而执行层实际上会解释这些数据,使其有意义。“数据”即与区块链任何形式的交互,如,部署一个合约、在交易所进行交易、发送支付交易等等...

区块链的核心是在链中添加新的区块。当有新的区块添加时,该区块之前的状态会向区块后的状态迁移。这个状态汇总了从区块0到N的所有数据。

例如,如果该状态保存着记录Alice和Bob余额的账本,而新区块包含了Bob向Alice支付10代币的记录,那么这个新区块被添加至区块链之后,状态将会记录新的余额信息。“StateafterblockN1”(区块N1之后的状态)那个图中右边的虚线斑点就代表着添加了新区块之后的变化,这时可能会修改现有状态(例如,Alice和Bob的余额),或创建新的状态(部署一个新的合约,或将Carol添加到账本...)

第一步将共识层与执行层解耦;第二步从PoW向PoS转移

Rollups和eth2主要为了解决上图计划中的第一点:去除共识层与执行层的相关性。那么这项工作的进展如何?

图:第一步已完成

自2020年12月以来,我们同时拥有着两条链在进行:

第一条,是PoS-共识链(又名,信标链)

第二条,是我们可靠的PoW-共识执行链(又名,eth1)

他们同时运行,但他们也可以相互通讯。但是,目前还没有实现这种功能...

图:如何成为一名验证者

想要成为PoS-共识的验证者,PoW-共识执行链上的用户需要在存款合约中锁定32ETH,这会自动转移到PoS-共识链中。一旦验证者被激活,他们就可以开始验证工作和获取奖励了。

图:合并

这种无法通讯的情况希望不会持续太久。“合并”将PoS-共识链和PoW-共识执行链永久地桥接起来,也就是说验证者可以为执行层生产区块。合并后,我们拥有两种链:

PoS-共识链

一条基于PoS的执行链(即“eth1”链)

合并之后,PoS-共识链的验证者将能够赎回以及提现他们的质押存款和奖励,并将其发送回到基于PoS的执行链中。

因此我们需要从PoW环境中转向完全成熟的PoS环境。但是请注意,这一转变并没有怎么提高区块链的带宽(一个区块打包多少执行交易),这是分片要解决的问题。在此之前,让我们来讨论一下,当我们只有一条执行链时,有哪些方法可以提高执行的可扩展性。

图:将执行放在链下;将数据放在链上

(颜色总结:共识=紫色,执行=绿色,数据=黄色)

说到rollups,这是众多可用的扩容解决方案之一,但从协议设计的角度来看,这种解决方案可能提供了最优的折衷方案。这种方案的想法很简单:通过将数据存储在链上(这些数据用于重建状态转移的执行)来综合地处理状态转换,并且将状态的执行放到链下。如果有人不同意执行的结果,或者有人一开始就忘记执行,数据就在链上供所有人使用(可以重新计算),这是完全无需许可的!

更准确地说,执行所需的数据(交易输入)与其载体(交易)分离,并以节省空间的方式“捆绑”起来。同时,rollups在执行链(eth1)之外运行,提交并执行数据。

图:已有几个rollups方案部署,还要更多正在研发中

用户需要往执行链("eth1")上的rollup合约质押一笔资产,才能够进入到rollup里,用户可以在里面进行交易。完成之后,用户可以将资产从rollup中转回到执行链中。

Rollups的替代方案是什么?大家看一下上图,让我们来假设一下,如果我们用一串串平行的红色来代替那些垂直的黄色链会怎样?比如说,如果我们复制了几条eth1链,然后它们之间并排运行会怎么样?

这里的问题是如何处理并行运行的多个执行链。如果某条链上发生了什么事情,而其他人需要知道怎么办呢?这是分片面临的一个非常棘手的问题,或者说对于在多个链中执行的方案来说都需要克服的问题。

"Rollups之间并没什么不同",读者可能这么认为,本质上来说这没什么错。但是当你想要从一个rollup转到另一个rollup上进行交易时,同样棘手的问题又出现了。然而,关键在于,现在已经存在几种rollup设计了,并且这些解决方案的可探索空间仍非常广泛。既然如此,为什么不让rollups先进行试验,然后再引入一种协议级别的方法呢?

这让我们来到了...

图:使用分片来存储rollup发布的数据

读者应该听说过区块空间不足的事吧?Rollups确实需要发布它们的数据,但是eth1区块空间十分稀缺!而且,就像我们所讨论过的,跨分片是非常难的。那为了解决这个问题,我们可以用分片来保存rollup需要发布的数据。届时很可能会有64个分片,即现在可用带宽的64倍。而且一个分片区块可能会比eth1链区块当前能够容纳更多的数据量。

我需要强调一下,这并不意味着我们将永远排除执行分片这个方案。以rollup为中心的以太坊路线图是我们中短期的发展目标,直到我们找到更好的加密基元,以保证能够实现跨多条链的执行分片。这个方案很吸引人,需要团队很多人花费很长的时间去研究。与此同时,我们可以使用rollups。

图:每个rollup都有自己的执行环境

这方面还有很多工作要做!首先我们不要忘记,“合并”和“数据分片”都是非常复杂的工作,需要多个团队同时从事其中一项或两项工作。但在rollup方面,也仍有一些有趣的问题有待探索,我仅列出了一部分:

实现用户和rollups之间的大规模迁移是一个很酷的概念。如果用户有足够多的公共交通工具令其往返Layer1?(eth1)和Layer2(rollups),那么为什么还要自己开车往返呢?这非常不经济。

如果用户觉得可以在另外一个rollup上做一些更酷的东西(ta所在的rollup是没有的),难道ta一定得先提现至L1,然后再从L1中存款进这个rollup中吗?这未免太浪费了。

对于当前的链上操作来说,rollups极大地提高了网络带宽,这是毫无疑问的。但是rollups仍不是用户所期望的无限高速公路那样。仍有很多人想要在rollups上做很多事情,有时甚至是同时做的!因此rollups将不可避免地面临拥堵问题,但与L1这个尤其拥堵的市场不同(很快就会上线1559了),rollups的可探索空间更加广泛。

说到拥堵问题,虽然这更特定于协议层面,但是我们还将看到EIP-1559扮演交通警察的角色,来规定每个数据分片上发布多少数据,确保验证者可以处理这个数据量。如果读者觉得eth1上运行EIP-1559很酷,那么请期待届时会在64条分片链上同时运行1559。那么,rollups应该在哪里发布它们的数据呢?是仅发布在单个分片上,使数据仅在该分片上可获取?还是说发布在多个分片上,这样就可以受益于计划推出的“错开分片区块生产”(shardstaggering)方案?这个方案由Vitalik提出,即分片轮流出块,这样发布数据时,距离新区块的生成时间为几百毫秒以内,这对于需要“快速敲定”的应用来说是理想选择。

特此感谢DannyRyan和SachaSaint-Leger的建议。

我听说PoW不是一种共识算法,但我认为如果使其定义超载了,将其描述为共识机制是没有问题的。

PhiGo在推特写道,合并后(PoW退出以太坊)不一定就可以提取质押存款。的确,目前合并计划更专注于合并部分,而“提款”问题是一项独立但相关的研究工作。

来源|?barnabe.substack.com

作者|?BarnabéMonnot

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

链链资讯

[0:15ms0-3:938ms