以太坊 扩容在社区中的讨论如火如荼,多个解决方案正在加紧开发,并有望在今年全部上线主网。在整个以太坊 Layer2 方案爆发的前夕, imToken 联合 ETHPlanet 、EthFans、ECN、上海前沿技术研讨会和 HiBlock 等多家优秀的以太坊生态社区与公司,共同策划一场以太坊扩容主题系列活动。
4 月 23 日举办了第一场活动:Rollup - 以太坊 L2 扩容新范式杭州线下 Meetup。
以下是本次 imToken 首席科学家 Chang-Wu 的分享:「Rollup 未来在以太坊的角色」 的文字版,由 imToken 整理。
演讲整理
我先带大家了解一下什么是 Rollup,以及 Rollup 未来与 Eth2 路线图又是一个什么样的关系。
首先,我们都知道现在以太坊网络的一个 block(区块) ,它的计算单位是 gas limit(笔者注:每笔链上交易都会消耗 gas),每个区块的 gas limit 都有上限,目前这个上限值已经被调整为 1500 万,这 1500 万就代表每个区块可以包含的计算单元,也就是每个区块里所有交易累计消耗的 gas limit 不能超过 1500 万 gas。
举例来说,单纯的 ETH 转账,每笔的 gas limit 是 2100 0。如果一个区块中所有交易都是 ETH 转账,那么单个区块中最多可包含的交易笔数就是 1500w / 21000 = 714 笔。同时,目前以太坊出块平均时间是 12 秒,那么用 714 除以 12,我们就可以知道目前以太坊网络每秒可处理交易数的上限。
最近大家都看到了,现在的网络是非常拥挤的,尤其是在柏林升级前,区块 gas limit 只有 1200 万的时候。但即使是通过升级把 gas limit 提升到了 1500 万,我们仍然看到每个区块几乎都是满的,区块空间利用率接近饱和。
也就是说这时候你想要放入更多的交易其实是很困难的。同时我们也注意到,因为一些 DeFi 项目的兴起、需求等等,每当市场上有震荡的时候,手续费就会特别昂贵。过去一段时间,我相信大家也注意到在星火矿池维护的实时评估 gas 的网站上,有时甚至能看到 900、1000 Gwei 这样非常昂贵的手续费的产生。
所以在这一现状下我们认识到由于 DeFi 不停增长的需求,导致网络拥挤、每个区块都是饱和的状态、手续费昂贵。即便近期(在柏林升级中)提升了区块的 gas limit,但仍不足以满足链上的交易需求。
对此,我们越来越需要通过扩容来支撑以太坊网络整体的交易量。这就是我们今天想要和大家介绍的主题 - Rollup,中文叫做卷叠。通过引入 Rollup 技术方案,我们可以将以太坊网络的交易处理能力由当下 Eth1 上的 20 TPS(每秒可处理交易)提升至 4000 TPS(从理论上估计)。
那么 Rollup 是什么,以及它在 Eth2 路线图中又会扮演什么样的角色呢?
我们都知道 Eth2 想要通过分片的方法来提升整体的交易量。具体而言,分片是通过将交易发送到不同的 Eth2 分片去做执行,因为分片本身的设计允许不同的交易在不同分片上平行处理,以此从最底层的协议上进行优化,达到给网络整体扩容的目的。但是呢,我们也都知道,Eth2 的阶段 0 是去年 12 月份刚上的,上面谈到的分片实际运转起来可能要等到阶段 1.5 或阶段 2。如果没有过渡或者说妥协的方案出来,这中间将是漫长的等待期,而且期间网络将一如既往的拥堵。这也是为什么 Rollup 二层网络解决方案在近期越来越受到欢迎和普及。
那接下来,我们开始介绍 Rollup,我会通过说明 Rollup 的每一个步骤来向大家解释它是如何实现扩容的。
首先,下图中间黑线上面代表 Layer1,下方代表 Layer2。Layer1 的主网就是现在 Eth1 的主链,Rollup 项目方会在这条主链上部署一个智能合约。
用户在这个合约中可以 deposit(存入)资产,存入后,Rollup 运营商或服务商就会在二层网络上把这些资产映射出来。关于具体的映射方式,我们可以把它想像成是以数据库的方式,映射成一个存储的格式,而这个格式可以表示每一个账号现在有多少余额。
通过这种方式将用户在主网 Layer1 的存入资产与二层网络账户上的余额进行映射。然后,用户就可以在 Layer2 上进行转账、兑换等操作。那么,当用户们在 Layer2 发起大量交易时,由谁来对这些交易进行筛选、排序和打包呢?
在当前的 Rollup 二层网络方案中,这个角色一般由项目方来承担,我们称其为 sequencer(排序者)。sequencer 的角色,有点像是在打包这些交易,类似 Layer1 的矿工。但区别在于,sequencer 是先把交易整理好,然后才去做打包交易的动作。比如在二层网络中用户 A 给用户 B 转 10 个 token ,用户 B 给用户 C 转 20 个 token,这些交易就会由 sequencer 来负责验证处理,并且打包整理成最后用户 A、B、C 的余额应该各有多少。
但仅做到以上这些仍是不够的,因为以太坊上一笔交易占据的空间非常大。例如仅收款方的地址,就占 20 个 bytes,ECDSA 签名占 64 bytes。对于以太坊区块有限的空间来说,这些数据所占用的空间较大,那么我们是否有办法压缩这些数据呢?
方法是有的。现在以太坊上一个地址是 20 bytes,在二层网络上,我们可以通过编码的方式进行压缩。具体来讲,Layer1 上的一个普通地址通过编码可以从 20 bytes 压缩到 3 bytes。同样的,上面提到的 ECDSA 签名数据和其他数据也可以进行压缩。sequencer 的职责就是压缩交易,并将压缩后的数据放在 Data(以太坊交易的一个字段)中同步到 Layer1 上。以上就是 Rollup 处理交易的过程说明。
到这一步,我们看到即使是在 Layer2 上,sequencer 最终同样需要把所有交易打包后的数据上链。这里有两个问题需要回答:
为什么要把数据放到链上?原因在于只有当数据上链时,数据才具备可用性,其他人就可以通过这些数据来验证其中包含的交易是否真的成功。避免由于 sequencer 作恶(比如将一笔转账的收款地址替换为自己的地址)造成的资产损失。因此数据上链是必要的。
如何确保上链的数据是正确的(即如何保证数据的有效性)?这就要求 sequencer 要对数据进行验证,一般是通过提交 Proof(证明)来确保上链数据正确。
在第二个问题上,目前的 Rollup 方案主要区别在于对数据和 Proof 的处理上。有的方案只把数据上链,但不对数据进行验证,也就是缺乏 Proof,比如 Optimism(笔者注:他们通过欺诈性证明来保障链上数据有效)。有的方案则是将数据和对数据的 Proof 同时上链来保证数据的有效性,比如 zkRollup 通过零知识证明对数据进行验证,并且把验证得到的 Proof 和数据一起上链,以此确保对应数据在链上的有效性和资金的安全性。所以 zkRollup 是目前被大家公认为比较安全的方案。
整体来看 Rollup 方案,Layer1 上的智能合约就像是城堡,其中的资金安全性依赖于 Layer1 自身的安全性。在 Layer1 上需要保存各账户的状态转换数据,同时要把 Layer2 上交易压缩后的数据同步到 Layer1 上,至于要不要做 Proof 则取决于具体的项目方的取舍。
Layer2 则负责执行交易,将本来在 Layer1 上处理的交易转移到 Layer2 上。当前对数据正确性的验证主要有两种典型的方案:
Validity proof:即指类似于 zkRollup 的零知识证明方案。将数据和对数据的 Proof 同时上链。
Fraud proof:即指类似于 Optimism 的欺诈性证明方案。由于只将数据上链,所以 Optimism 需要用户或项目方自身去监测 sequencer 是否如实地把交易数据同步到了 Layer1 上。如果监测到欺诈行为,那么就可以通过提交欺诈性证明来保障资产安全。
最后,关于数据可用性,从形态上可以简单分为两个代表:zkRollup 和 Optimism。主要区别在于对哪些数据上链(on-chain) / 不上链(off-chain)方面的取舍。大部分方案都是把数据上链的,但是也有一些方案选择对一部分数据不上链处理,这么做的好处在于可以进一步提升扩容性能,而不用受区块自身可存放数据容量大小的限制;另一个原因是,有些应用顾虑到隐私性或其他一些特性,并不希望所有数据都上链,因而做了取舍,对这部分在这次分享中我们不去详细讨论。
在数据上链 / 不上链取舍上有一个典型的例子:zkPorter,也就是未来的 zkSync 2.0。他们宣称在 zkSync 2.0 中可以达到 24,000 TPS,这主要是通过默克尔树实现的,在不同分支中分别存放 zkRollup 与 zkPorter。对于在意安全性的用户来说,zkRollup 是一个更可靠的选择;但在对安全性要求相对较低的应用中,则可以考虑使用部分数据不上链的 zkPorter(效率更高,处理能力更好)。zkSync 2.0 通过这种混合的方式实现有保障性的安全和效率的提升。
那么为什么说 Rollup 和 Eth2 的路线图有关?其实前面有提到过,Eth2 分片上的交易执行暂时还无法立即到位,社区可能还要在等一段时间。但是在 Phase1 和 Phase 1.5 间,当分片的数据库成型时,其中的每个分片就好比是一个主网,这些分片的数据层就可以用来存储 Rollup 的数据。
当未来有分片的时候,虽然我们不能在其上立即进行交易,但是我们可以通过把 Rollup 的数据存到这些分片中提前发挥分片的作用,达到进一步扩容的目标。
这部分就是我今天的分享,谢谢大家。
风险提示:本文内容均不构成任何形式的投资意见或建议。imToken 对本文所提及的第三方服务和产品不做任何保证和承诺,亦不承担任何责任。数字资产投资有风险,请谨慎评估该等投资风险,咨询相关专业人士后自行作出决定。