# RAD：Rollup+数据分片 --WEB3时代区块链扩容最终解决方案

By [Web2 Dump](https://paragraph.com/@monsterhunter) · 2022-01-11

---

> “扩容是以太坊2.0的过渡方案。”
> 
> 这句话这一年听了太多次，但现在看来恰恰相反，以太坊2.0更像是一个中间过渡方案，而Rollup才是未来。

1/高性能公链受到追捧，但缺点明显
-----------------

我们已经明显的感受到公链的竞争越来越激烈，除了以太坊之外，仿佛大多数用户都在冲向更高tps，更低手续费的链，比如Solana，BSC。高性能链越来越受到大家的追捧，一时间TPS仿佛成为衡量区块链好坏的最高标准。但单片区块链是有不可能三角定律的，那就是去**中心化、性能、安全性**三者不可兼得。近几年来，很多团队尝试了扩容，但是都是以牺牲去中心化程度来增加吞吐的。比如，Solana、BSC等一众新公链的高吞吐，主要是通过降低其节点数量，从而增加TPS的。可以理解为节点越多，速度越慢，想要达到极限速度最好没有验证节点。

从理论上来说高性能单片公链的发展是不可持续的，是有物理瓶颈的受摩尔定律限制的。这主要是因为，**所有的计算、执行、存储、验证都在同一条链上进行，并且还需要同步给所有节点，这种系统结构效率会远远小于单节点系统**（只计算、执行，不用验证、不用同步节点）。

我不否认，这些新的公链在共识机制、节点同步方式等地方有大大小小的创新，但是他们运行的节点数量如果和以太坊一样多的话，不可能有现在这么快的速度。

2/当前区块链性能完全承载不了WEB3
-------------------

随着WEB3的普及，我们需要更高吞吐的区块链网络，但这不意味着我们要牺牲安全性。目前Solana的单日峰值用户数约为几百万人，等到WEB3普及的一天，一定会有十几亿乃至几十亿的用户同时使用网络，就算是100,000TPS的ETH2.0都是完全不够用的。

3/扩容是唯一解决方案
-----------

以上问题的解决方案，就是扩容。很多人说L2是过渡为ETH2.0的中间方案，但是如果你了解ETH2.0你就会知道它的理论极限TPS也只有10W而已。而扩容理论上是可以实现“无限”TPS的。在我们深入探讨Rollup之前，和大家一起回顾一下现有的扩容方案：

**第一种：扩容方案就是竞争链和侧链方案**

也就是使用一条独立的区块链去和以太坊竞争或作为它的侧链，如：BSC、SOL、AVAX、Polygon POS等。这种方案确实增加了TPS但是他们的缺点也很明显，他们有独立的验证节点，这样安全性完全由侧链节点保证。总而言之，就是损失了安全性。

**第二种：分片方案**

ETH2.0（同构分片），Near，波卡（异构分片）等公链走的就是这条路。这种区块链的架构有两层，主链和分片链。分片链负责执行计算，主链提供整个网络的安全性，通过欺诈证明（Fraud proofs）来保证分片链没有作恶。这种结构的特点是，除了主链需要运行全节点，每一个分片上同样需要全节点验证者，这种关系使得分片链的运行状态和主链是耦合的，也就是说如果某个分片挂掉了，那么整个网络的运行都会受到影响。

同样，分片链的结构也会高度受限，ETH2.0的分片结构是完全一样的，波卡的分片（也就是平行链），虽然是异构的，但是仍受一些规格的限制。而且分片方案的互操作性很差。目前的跨分片之间都是异步的通信解决方案（通信效率低，基本丧失智能合约的可组合性）。限制分片互操作性的主要是由于分片除了要验证数据可用性，又要负责执行和计算，而每个片的验证者无法保持同步因此会极大影响执行和计算的互操作性。

**第三种：Rollup**

这就是目前最佳的解决方案。优点在于，完全和主链解耦（也就是结构不受主链限制，且主链运行不依赖扩容链），这样开发者就可以对链的性能结构自行定制；L1主链完全不需要像分片一样运行rollup的全节点。就像上一段所说，在分片方案中，每个分片区需要有验证者运行全节点，分片运行状态会影响整个网络（因为一个/一串交易可能是被安排在不同的分片下进行计算，如果如果中间任意一个分片挂掉了，整个计算会受影响）。但如果rollup链挂掉了，完全不会影响任何主链的运行；

**总结：**

第一种方案通过牺牲安全性来增加性能的方式是不可持续的，第二种分片方案其实已经提供了很好的扩容能力，但是其和主链耦合、需要分片运行全节点、分片见可组合性差都是很明显的缺点，这会极大影响用户体验。对于rollup来说，尽管解决了分片的前两个缺点，但是可组合性差的缺点同样无法避免。

尽管这个问题看起来离目前仍然很遥远，但是已经有比较好的技术架构来解决了。

因为如果未来rollup上需要承载超多的用户和超大量的运算，向L1同步数据的次数与数据量就同样会变成得很大，这个计算量很有可能超出L1的执行能力，让L1再次变拥挤（也就是需求过大了，尽管扩容了，但是仍然吃不消）。

4/数据分片，解决分片互操作性差的问题
-------------------

那么该怎么办呢？ 

最终解决方案终于要揭晓了：那就是\*\*数据分片，分片作为数据可用性层，rollup作为执行层（计算）。\*\*未来，可以使用单个rollup，来保持可组合性，将数据可用性验证（之后会单独开一篇聊一聊数据可用性的问题）放到分片上。这个方案既解决了分片的互操作性问题，也提升了整体网络的运转效率。前面提到过，对于分片，每个分片的子网需要多个验证者运行完整的节点，就如我最开始所说的节点越多速度越慢，因此这个属性这极大地限制了分片性能。

那么，**如果把数据的计算放在Rollup上情况如何呢**？如果要在100个数据分片上进行1,000,000 TPS的“超级Rollup”，就必须有人持有完整的节点，对于optimistic的rollup，确实需要至少1名但实际上会远远大于1名诚实的验证者来运行一个完整的节点保存所有数据，但在zkRollup环境中，这只是需要一个排序器去为交易排序而非节点，所以可以通过中心化的大型运算设备来实现。因此当我们处于需要超级rollup的情况时，zkrollup无疑是更好的选择。

上述解决方案是通过使用一个超级rollup进行计算+多个分片进行数据验证，但是如果rollup需要和其他rollup进行通信，难度是不亚于分片间通信的。市场将需要一些时间来标准化解决方案。现在已经有几个跨l2桥的项目，如Hop、cBridge、Connext、Biconomy。并且也有项目方正在开发更有创新力的方案，比如dAMM，它让多个zkr分享流动性。

5/最终
----

**rollup+数据分片是已知的最佳解决方案。**

最后，我们在加密领域仍然处于早期阶段，大多数区块链项目仍然在迷宫中探寻出口。尽管扩容方案逐渐明朗起来，但仍然有很多谜团需要攻克。至于扩容路径，目前来看除了以rollup为轴心发展之外，没有任何更好的方案了。

---

*Originally published on [Web2 Dump](https://paragraph.com/@monsterhunter/rad-rollup-web3)*
