作者 | Barnabé Monnot,以太坊基金会研究员
以下内容改编自作者于4月9日(周五)的演讲内容。非常感谢 Danny Ryan 和 Sacha Saint-Leger 的建议。
本文是关于通往未来以太坊的道路。 今天的 以太坊就是 eth2 开发者所称的“eth1”,也即当前我们熟知和喜爱的 PoW 链; 明天的 以太坊既不是 eth1,也不是 eth2。以太坊:综合了在今天的执行层 (eth1) 之上部署 PoS 和 分片 的一系列 eth2 工作。我们先来回顾一下今天的以太坊 (eth1):
今天的 eth1 链的运作方式
在今天的以太坊上,当用户想要做一些事情 (即“事务”),他们会把 事务 (transactions) 发送给 矿工 ,然后矿工把事务 打包 进区块,并将这些区块 添加 到一条不断增长的区块链 (eth1) 中。矿工运行 PoW 共识机制,以此来决定由谁来添加下一个区块,矿工也 执行 区块中包含的事务,以确保这些事务是有效的。
PoS 替代 PoW:验证者替代矿工,小型服务器替代大量挖矿设备
PoW 需要大量的硬件设备来运行密集运算,进而造成了 过高的能耗 。在此,我们不会像大多数加密货币批评者那样讨论能源浪费问题 (比如“为什么我们要使用一个消耗<某个国家的>能源的支付系统?”),但如果我们可以消耗绝对 更少的 kWh (千瓦时) 来做一些事情,那么这 (PoW) 就确实是存在能源浪费,我们应该减少能耗。
因此,这将我们带入 PoS ,使用小型的服务器来取代大量挖矿设备,并使用 验证者 (validator) 取代矿工。
在 PoS 中,如果验证者不执行验证工作 (图中第2步),则将会适当地损失质押金
那么,上图中的第2步 (即验证) 是什么呢?验证者到底要验证什么?
我们可以将以太坊的活动分为两部分:共识层→“哪个是正确的数据?”;执行层→“数据的含义是什么?”
共识层 (consensus layer) 确保所有人都对正确的数据达成共识。 执行层 (execution layer) 实际上是“ 解释 ”这些数据,使数据有意义。“数据”是指与区块链进行的任何交互,比如部署一个智能合约,在交易所进行交易,发送一笔付款等等…
区块链的核心是在链中引入 新的区块 。当新区块被添加进来时,新区块进来之前的状态和进来之后的状态之间,会发生一次 状态转换 (state transition)。区块链的当下状态汇总了之前所有区块的数据。例如,如果当前状态维持着一个记录了 Alice 和 Bob 的账户余额的账本,而新区块中包含了一笔 Bob 向 Alice 支付了 10 枚币的交易,那么这个新区块被添加进区块链中之后,状态将会记录新的余额信息。 一个新区块添加进来之后,要么会更改当前的状态 (比如,更新 Alice 和 Bob 的余额), 要么会创建一个新的状态 (比如部署一个智能合约,或者将 Carol 新添加进账本中…)。
根据以太坊计划,第1步是将共识与执行解耦;第2步是把PoW共识换成PoS共识
根据我们的计划,Rollups 和 eth2 工作的总体要点就是处理上图中的第1步,也即 将共识与执行解耦 (decorrelate consensus and execution)。那么,这方面进展如何了呢?
第1步已经完成了!
自 2020 年 12 月以来,我们 已经有了两条并行运行的区块链 (见上图):
- 上方的是 PoS 共识链 (即信标链)
- 下方的是可靠的 PoW 共识+执行链 (即 eth1 链)
这两条链并行运行,但它们会相互“交流”,当然目前是 单向的 …
如何成为一名验证者?
要成为 PoS 共识链 (即信标链) 的验证者,用户需要在部署于 PoW 共识+执行链 (即eth1) 上的 存款合约 中锁定 32 ETH,该质押金会自动转移到 PoS 共识链中。一旦验证者被激活,就可以开始 (对 PoS 共识链) 进行 验证并获取奖励 。
合并之后,信标链 (紫色) 是共识链,切换为 PoS 共识的 eth1 链 (红色) 将作为执行链。什么时候实现合并?可能在2021年实现…
预计这种单向的“交流”将不会持续很长时间。 合并 这两条链将永久地连接 PoS 共识链 (信标链) 和 PoW 共识+执行链 (eth1) 之间的鸿沟,从而 允许验证者为执行层 (即合并之后切换为 PoS 共识的 eth1 链) 生成区块 。因此, 合并之后,我们将有两条链 :
- 同一条 PoS 共识链 (即信标链)
- 基于 PoS 的执行链 (即切换为 PoS 共识的 eth1 链)
合并之后,PoS 共识链 (信标链) 的 验证者们将终于能够赎回和提取他们的收益和存款 , 并将收益和存款发回至 PoS 执行链 (eth1) 中 。所有这些使我们从 PoW 环境转移到了一个完全合格的 PoS 环境中!但需要注意的是,此时 并没有 增加这条链的带宽——这是 分片 (sharding) 要实现的目标。在这之前,在我们尚且只有一条执行链 (即 eth1 链) 之际,我们来讨论一下如何通过其它方式来对 执行 进行扩展。
扩展计划:1. 将执行转移至链下;2. 将数据提交至链上。
Rollups 是众多可用的扩展解决方案之一,但从协议设计的角度来看,它可能提供了最优折衷的方案。Rollups 的理念很简单:通过在 链上 提交重建状态转换执行所需的 数据 ,来综合地处理状态转换,并将 执行 转移至 链下 进行。如果有人对执行结果有异议,或者有人忘记了在第一时间执行,那么数据就在那里等着所有人处理。 Rollups 是无需许可的! 更准确地说,在 Rollups 中,执行所需的数据 (事务输入) 与它的载体 (事务) 是分开的,且这些数据是以节省空间的方式“捆绑”起来。同时, Rollups 在执行链 (即eth1链) 之外运行 ,提交数据并加以执行。见下图:
如今 eth1 链的扩展正在发生,Rollups 已经部署,其它扩展方案也在开发中。
想要“使用某条 Rollup 链”的用户,需要在该 Rollup 位于执行链 (eth1) 上的合约中 存储 一些资产,之后用户就可以在该 Rollup 上做一些事情了,比如使用自己的资产与该 Rollup 链上的其它资产进行交易。一旦用户完成了想要做的事情,就可以将资产从 Rollup 撤回 至执行链中。就是这样!
Rollups 有什么其它替代性方案?如果我们没有这些并行运行的 Rollps 链(上图中的黄色链),而是拥有很多条并行运行的执行链(上图中的红色链),那会如何?比如,如果 eth1 链被“复制”,并与其它几条复制链并行运行,那会怎样?其中的问题在于我们 如何处理几条平行运行的执行链 。如果其中某条执行链想要知道另一条执行链中发生的事情,那该如何做到?这正是 分片 (sharding) 遇到的棘手问题(注:也即所谓的跨分片通信问题)。你可能会说,“Rollups 差不多也有这样的问题!”,实际上确实如此。当你在某条 Rollup 链上想要与另一条 Rollup 链进行交互时, 同样的棘手问题也会出现 (即跨Rollup通信问题)。
但重点是,当前存在几种 Rollup 设计, 这一问题的解决方案空间很广阔 ,且在很大程度上尚未被探索。因此, 在将某种方案纳入协议层之前,为何不通过 Rollups 先启动试验呢? 这将我们带向了 以 Rollup 为中心的以太坊路线图 [1]。
以 Rollup 为中心的 eth2:使用分片来保存 Rollups 发布的数据
你听说过吧?Rollups 需要发布数据,而 eth1 的区块空间是稀缺的!且如上所述,跨分片很难。因此, 为什么不使用分片来保存 Rollups 需要发布的数据呢? 借助于 64 条分片链,就能带来比当前可用的 多出 64 倍的带宽 ,而且可能更多,因为一个分片区块将可能保存比当前的 eth1 区块更多的数据量。应该强调的是, 这并不意味着在分片层的执行功能会永远被排除在外 。当前以 Rollup 为中心的以太坊路线图是一种短期到中期的前进方式,直到 (例如) 找到更好的加密原语来保证正确地将执行划分到多条链中(注:即实现可执行分片)。这一切都非常迷人,应该会让很多人忙上很长一段时间。 在此期间,Rollups 是解决之道 。
每条 Rollup 链都是其自身的“执行环境”:如何轻松地迁往/迁出 Rollup?我们可以进行跨Rollup操作吗?Rollups 应该如何处理拥堵问题?
这方面还有很多工作要做!首先,我们不要忘记, 合并和数据分片是非常复杂的工作 ,目前有多个团队在致力于其中一项或兼顾这两项工作。而即便是 在 Rollup 方面,仍然有一些非常有趣的问题有待探讨 ,以下仅是其中一些:
如何大规模地实现用户向 Rollups 的迁移或者从 Rollups 迁回至链上[2],这是一个很酷的概念。如果你有足够多的公共交通工具让你往返于 Layer1 (eth1) 和 Layer2 (Rollps) 之间,为何你还要自己开车往返呢?其中的经济机制是什么呢?
如果你想在临近的一条 Rollup 链做一些事情,因为该 Rollup 中有着一些你所在的 Rollup 中没有的酷东西,那你该怎么办?你是否必须从当前的 Rollup 撤回至 Layer1 上,然后再从 Layer1 转移至该临近的 Rollup 中?这似乎相当的不经济。
对于当前的链上操作来说,Rollups 是一个巨大的带宽提升,这是毫无疑问的。但是,Rollups 并不是用户所期望的无限高速公路。在 Rollups 中,仍然会有很多人想要做很多事情,且有时候是同时发生的!因此,Rollups 将与生俱来地要应对拥堵问题,但与 Layer1 协议保护的拥堵市场 (EIP-1559 很快就会实施) 不同,Rollups 有着更大的设计空间可供探索。
说到拥堵问题,这是更特定于协议的,但我们还将看到 EIP-1559 扮演交通警察的角色,来规范每个数据分片上发布的数据量,以确保验证者能够处理这个数据量。如果你认为 EIP-1559 机制在一条链 (eth1) 上很酷,那么等到有 64 条分片链同时运行该机制时会更酷。那么,Rollups 应该在哪里发布它们的数据呢?是将数据仅发布在单个分片上,使数据仅在该条分片上可获取?还是发布在多个分片上,从而受益于计划中的分片交错出块?其中,分片交错出块 (shard staggering) 是 Vitalik 最近提出的想法,即所有分片轮流出块,这样 Layer2 项目 (如 Rollups) 在发布数据时,距离一个新区块的时间间隔不会超过几百毫秒,这对于需要快速敲定的应用来说是理想选择。
原创文章,作者:CoinKaola,如若转载,请注明出处:https://www.coinkaola.co/news/225178/