欧洲杯买球

一文图解以太坊发展路线

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

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

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

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

图:PoS 机制代替 PoW 机制

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

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

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

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

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

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

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

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

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

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

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

图:第一步已完成

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

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

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

图:如何成为一名验证者

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

图:合并

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

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

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

因此我们需要从 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 应该在哪里发布它们的数据呢?是仅发布在单个分片上,使数据仅在该分片上可获取?还是说发布在多个分片上,这样就可以受益于计划推出的“错开分片区块生产” (shard staggering) 方案?这个方案由 Vitalik 提出,即分片轮流出块,这样发布数据时,距离新区块的生成时间为几百毫秒以内,这对于需要“快速敲定”的应用来说是理想选择。

特此感谢 Danny Ryan 和 Sacha Saint-Leger 的建议。

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

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

posted @ 21-06-24 10:02 作者:admin 点击量:

Powered by 欧洲杯买球 @2018 RSS地图 HTML地图