扩展性难题
扩展性三难困境,描述了扩展性,去中心化和安全性之间的不可能三角问题,这也是Vitalik Buterin 最先提出的问题,这的确对于目前市面上以BSC和Solana为代表的单片链是个未解决的困境,然而这个困境可以尝试通过一些新技术或者新的假设解决,这就是我们需要了解的模组化区块链。
单片链的问题
以Solana,BSC, 第一代Polygon为代表的单片链,通过牺牲去中心化,从而实现高吞吐量,提升效率,本质上都是通过提高硬件(资源)要求,网络带宽使用,提升验证节点的门槛,从而实现网络的扩展。尽管这个解决方案短期能占据一定市场份额,长期来看仍然是存在很多弊端的。Polygon所以目前开发了Polygon Avail, 试图寻找一种更长远的解决方案。Solana,通过引入Proof of Histroy共识机制,实现时间戳的本地化,无需再通过广播实现全网的更新,同时通过优化执行环境,可以并行处理多笔交易,而在EVM环境中,同时只能处理一笔交易。
本质上,这些单片链都是受限于单节点的处理能力,单片链的扩容目前仅能通过将治理限制于少数节点而实现,而模块化区块链则通过将所有的任务分发给不同的节点,从而提升网络效率。
去中心化是模组化区块链的一个核心特点,还有一个非常重要的特点是有效资源定价。在单片链上,所有的交易共享同样的区块空间,消费同样的网络资源,所以当一个应用上的用户/使用需求增多会给网络上其他所有的应用带来负担,网络上的燃料费也会飙升,以太坊就是一个非常好的例子。
最后,我们看到单片链并不适用于所用不同特性的应用,例如Solana的低延迟性能只适用于像Serum这样的DEX,而维持这样的低性能,需要限制状态的增长,这往往需要向每个账户收取一笔状态租金。而这个对于像Kin这种强依赖账户数的应用是非常不友好的。同样,以太坊的,拥堵,高燃料费用让本身就拥有高交易,交互频率特性的游戏应用望而却步,纷纷搭建自己的Layer2或者选择在Solana,Avalanche这样的低交易手续费网络上部署。
尽管这些单片链的可组合性,可扩展性有一定的应用场景,但是我们仍需要探索更多的设计方案,更有效的资源定价,从而实现大规模采用,模块化区块链应运而生。
区块链的演变 - 模块化区块链
单片链的可组合性实现了不同应用间的无摩擦交互,而模块化区块链则是强调将整个系统拆分为不同模块并且可以随意剥离和重新组装的基础设施。模块化区块链的代表有以太坊2.0分片,Cosmos 枢纽, Polkadot平行链,Avalanche子网, Rollups等。而这些不同的设计主要还是围绕不同的安全解决方案的。像以Avalanche,Cosmos,Algorand这种主打多链枢纽的设计更适合独立自主安全性 (Cosmos今年准备上线三个版本的共享安全)的产品,而以太坊2.0, Polkadot, Near, Celestia则更强调共享安全的重要性。
多链的网络枢纽
模块化最简单的设计就是互操作性枢纽。这些枢纽上可以搭建应用链,而这些应用链可以自主选择虚拟机,节点要求,费率模型和治理,这个可实现的灵活度和单片链上的应用有本质差别。Cosmos是这个领域的前辈,应用百花齐放,就单单Terra链的锁仓量已经排到全网前三的位置,其发行的稳定币UST的市值已经达到了180亿美金,排名前十,而其设计的独有费率模型和通胀机制是成功的关键。
跨链去中心化流动性协议Osmosis,处理着IBC网络上接近90%的交易,而Osmosis本身也有自己的设计特点,其上线的superfulid staking 第一次让流动性提供者在享受交易费,流动性激励计划的同时,还能参与到节点的安全维护和治理中。同时,它们还计划通过自主研发的阈值加密技术实现交易的加密,避免MEV这类的攻击。
Algorand和Avalanche则更倾向于企业级别用户解决方案,例如为游戏公司搭建游戏网络,为政府机构搭建CBDC等,可以通过Beefier Machine的技术,在不影响其他网络的去中心化程度的情况下,实现这些网络的扩展。
Avalanche通过资源有效利用,提升网络的吞吐量。Avalanche的C-Chain设计仅仅适用于EVM兼容智能合约,同时只能处理单笔交易,而对于某些例如点对点支付等特定场景的应用,Avalanche则通过X-Chain来实现多笔交易并行处理的任务。P-chain则是专门用来提供治理和质押等解决方案的。
同时,我们看到Avalanche, Algorand通过子样本投票,任意领导选举等核心技术的创新,让节点可以任意选择代表进行投票和治理,大大降低了共识沟通的门槛。
当然,这种解决方案也存在一些问题,一个核心的问题这类型的链目前仅仅适用于独立自主安全区块链的部署,而无法真正实现共享安全。有很多人会说,Cosmos不是即将上线共享安全模块吗?Avalanche不是默认通过网络节点验证其上部署的多链吗?它们都对验证节点提了很高的要求,大大提升了可接入链的门槛,所以实现的可扩展性也非常有限。目前我们知道要实现安全的跨链互通,我们需要可信第三方或者同步假设。在不同枢纽之间,可信的第三方在多数诚实的假设下,可以理解为对方链的大部分节点。目前IBC上接入的链数量还非常有限,(43条),如果未来实现大规模应用(大量长尾链接入),如果我们还是通过信任多数节点诚实,从而实现沟通或者共享安全性,这会造成很大的问题,所以我们在多数诚实假设之外,引入了能够提供更高安全保障的Rollups和分片技术。
数据可见
数据可见性问题我们之前多次强调了,这已经成为了模组化区块链的核心技术。所以目前可扩展性问题都演变为解决数据可见性问题。在区块链网络里,全节点负责下载和执行交易,而轻节点通过下载区块头,验证交易的可行性,区块链头包含了大部分节点验证的区块数据。全节点可以轻松侦察并且拒绝一些无效交易,而轻节点认定大部分节点认证的交易为有效交易(多数诚实节点假设)。所以为了提升效率,我们需要全节点通过向轻节点发送有效性证明/欺诈证明,从而保护轻节点。这样轻节点可以在不消耗过多资源的情况下,达到和全节点同样的安全性。但是为了生成欺诈证明,全节点必须确保所有的数据都是可见的,如果恶意验证者发布了区块头,但是保留了一部分的交易数据,全节点无法判断缺失的交易是否有效或者是否会导致双花问题,所以无法生成相关证明。所以每个轻节点可以通过数据采样过程 (DAS 我们也介绍过,Celestia也利用了这个技术),在无需下载全部交易数据的情况下,可以验证交易的有效性。
所以这个数据可见性问题,在多数诚实假设之外,提供了非常好的跨链互通,扩展性解决方案。而Rollup 通过共享数据,实现了与以太坊之间的信任最小化沟通(Trust-minimized bridge)。
Rollups
Rollups 将数据传送到以太坊上所有的L1节点,其中想要提供资源的L1节点可以执行交易并且从头搭建Rollup的状态。拥有了全部状态的节点(全节点)可以将Rollup状态过渡至下一个状态,同时通过生产有效性/欺诈性证明,验证交易的真实性。我们之前说过,要实现信任最小化沟通,必须有两个条件 1)数据可见性 2)解释双方的有效性/欺诈证明,Rollups 通过解决数据可见的问题,能够在单个诚实节点假设下,而不是多数诚实节点假设的基础上运作。
Rollups 的设计有以下优势:
- 只要一个全节点就可以保护其他轻节点,在不会产生中心化问题的情况下,实现可扩展性
- 尽管所有L1上的节点都可以下载Rollups的交易数据,但是只有部分可以执行交易并且创建状态,因此减少了整体的资源需求
- Rollups的数据在上传至以太坊L1之前,通过先进的技术可以实现压缩
- 和应用特定链类似,Rollups可以通过定制化虚拟机提供特定场景的应用,从而实现更有效的资源利用
目前市面上有两种Rollups, Optimistic rollups 和ZK-rollups, ZK-rollups 从可扩展性的角度上,要优于Optimistic Rollups, 它们通过更有效的压缩方法,压缩数据,从而在某些特定上实现了更低的L1日志,例如Optimism将数据上传至L1,从而显示每笔交易,而dydx可以通过上传,显示每个账户余额,因此,dydx的 L1的日志是Optimism的1/5,而却可以处理超过10倍的吞吐量。
尽管Rollups通过先进的技术实现了数据的压缩,但是数据还是需要上传到L1,所以Rollups在减少有限费用的同时,实现的可扩展性也只是线性的,同时它们还会受到以太坊网络上燃料费用波动的影响,所以为了实现可持续的扩展,我们有两个探索方向 1)以太坊实现区块扩容,通过ETH2.0分片 2)将数据上传至Celestia,Celestia再将一揽子证明(签名,默克尔根),而非数据本身传送至以太坊。
以太坊分片和数据可见证明
分片技术再次用到了我们提到的数据可见证明。所有的节点不再需要下载每块分片上的所有交易,而是每个节点只需要通过下载分片链上的部分数据,而通过这些部分数据样本,我们可以恢复所有的数据区块。这个在分片上实现了共享安全的可能性,因为任何一个分片上的节点都可以提出争议,并且可以由任何节点按需解决。Polkadot和Near都将数据可见证明运用到分片技术中,而这个数据可见证明也同时被运用到像ETH.20分片和Celestia这样的新型模组化区块链中。
那么以太坊2.0的分片和其他分片有什么不同呢?尽管以太坊刚开始想要做类似于Polkadot的执行分片,它改变了现有技术路线,专注于数据分片,这意味着以太坊上的分片仅仅将作为数据可用层,分片也将处理执行,而Polkadot将处理所有的执行,所以每个分片都有不同的状态。
那么仅仅作为数据可见层的分片有什么优势呢?在其上部署的Rollups可以更灵活地在不同分片上上传数据,同时仍然保持完全的可组合性。因此Rollups的吞吐量和费率将不会受限于单个分片上的数据容量大小。例如64分片,可以将Rollus整体的吞吐量5000TPS提高到100,000TPS。而相反,不管Polkadot上的吞吐量有多高,Rollups的费率都会受到单条平行链的吞吐量限制。
特定性数据可见性区块链
特定性数据可见层是模组化区块链设计的最新形式,它们利用了数据可用证明,但是引导至不同的方向。这领域的项目包括Celestia,和最新的解决方案例如Polygon Avail (社区很多人说Polygon的方案很大一部分借鉴了Celestia)。
和以太坊的数据可见层类似, Celestia作为不同Rollups,链的底层,帮助它们实现共享安全 (其实在我看来,Celestia也借鉴了Rollups技术)。Celestia 和以太坊2.0的解决方案有以下不同:
- 交易不在Celestia Layer1上执行,而是在Rollups的客户端执行,所以在Celestia上搭建的Rollups可以理解为独立自主区块链。这个会让Rollups不再受限于底层区块链的设计和费率架构,当有一些例如代币售卖,NFT空投,高收益挖矿机会的时候,整个网络的费用会非常高(以太坊现状)。所有Celestia上的Rollups享有相同的数据可用协议,而不会牺牲Celestia共识的安全优势。所以即使是软/硬分叉也可以在Celestia上展开,而无需担心安全稀释的问题,从而打开了更广阔的创新领域。而且高效让Rollups上的费用仅仅和该Rollups的使用情况有关(交易费和上传数据大小相关),而不会受到整条链的拥堵情况影响。有效资源定价,刚提到以太坊的分片技术将会仅仅用于数据分片,而分片将负责执行交易,这通过提升以太坊的区块容量,大大降低了Rollups的费率。然而,以太坊并没有放弃其执行环境。所以对于Rollups上全节点来说,还是需要参与执行以太坊上的状态认证,而以太坊方本身的巨大状态给Rollups的节点带来了巨大负担,所以Rollups费用还是和费用正相关。而Celestia的区块空间仅仅储存了数据,而执行层在上面提到是在Rollups客户端执行。由于活动受制于不同的费用市场,一个执行环境中的活动高峰不会影响另一个执行环境的用户体验。
- Celestia在利用数据可用证明的情况下,无需通过分片技术就可以实现高吞吐量,通过轻节点的独特设计,当网络上拥有越来越多参与数据样本采集的轻节点(智能手机可以),更多的数据将会被存储,区块容量也会更大,网络吞吐量也会越高。
综上,我们看到了不同的区块链设计原理,和安全性解决方案,我们认为目前来说多链枢纽的简单设计,模块化组件,更灵活的设计空间和水平扩展的能力解决了目前区块链领域的一些核心问题,但最终,我们也相信,以特定数据可见层为代表的区块链将会带来更好的可扩展特性和更有效的资源利用。