可视化以太坊的未来之路 一起来看看
扫一扫
分享文章到微信
扫一扫
关注鹿财经网微信公众号
以下内容改编自作者于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 是解决之道。
投稿邮箱:lukejiwang@163.com 详情访问鹿财经网:http://www.lucaijing.com.cn