相比其它的 Layer 2 方案,ZKSpeed 更注重实用性,通过零知识证明聚合证明,Plonk 算法并行处理,以及对链下数据的分类处理,提高 TPS 并大幅降低 Gas 成本。
撰文:ZKSwap
以太坊网络作为区块链世界里最活跃的开发平台,日常的拥堵,越来越高的手续费,让生态中的应用和用户们都苦不堪言。最近以来,单笔转账的平均费用更是高达 24.7 美元。这种糟糕的体验如果得不到改善,将对以太坊的发展将会造成不良的影响。
因此,近些年越来越多的区块链研究者和开发人员致力于底层技术研究,想尽各种技术手段,来改善整个网络状态。有针对 Layer 1 的技术方案,例如 ETH 2.0 的分片技术,通过修改或优化区块链的共识网络,来提高网络的出块效率,从而加快区块确认时间,达到交易快速上链的目的;也有针对 Layer 2 的技术方案,在保持 Layer 1 功能足够简单且强大稳定的前提下,把一些原本在 Layer 1 上的一些计算和操作,放在链下去做,然后通过密码学的技术来保证这些链下操作的准确性。
Layer 2 的扩容技术方案更适合区块链健康发展
区块链的基础架构已经比较清晰,稳定且易于维护,基于此强加复杂逻辑,就有可能使 Layer 1 变得越来越脆弱。所以,区块链的结构发展方向应该是 Layer 1 尽量保持不动,除非有重大变故,比如密码学技术的突破,导致底层使用的密码学原语的修改。其他的复杂逻辑及创新应用放在 Layer 2 去做,Layer 1 和 Layer 2 相辅相成。
研究者也逐渐发现了这一点,因此,基于 Layer 2 的扩容技术方案层出不穷。然而,理想很丰满,现实很骨感。当理论需要实践的时候,开发人员才发现要想达到预期,有太多的地方需要权衡利弊,对于不同的应用场景,可能也要做出不同的妥协。
迄今为止,Layer 2 扩容方案里,被讨论的最多的有 ZK Rollup、Optimistic Rollup、Validium 和 Plasma。在此借用 StarkWare 里 Avihu Levy 的一张图来区分它们:
4 种以太坊扩容方案对比
这四个方案的特点如下:
ZK Rollup: 由以太坊的研究员提出,特点是所有计算过程由链下计算,链上存储,参与计算的明文数据通过 calldata 的形式发送到链上合约,降低存储成本,同时,链下计算的正确性由零知识证明算法保证;由此也能看出,此方案确实能大幅提高 TPS,也能降低单次交易的费用。
Optimistic Rollup: 从图上可以看出,Optimistic Rollup 和 ZK Rollup 位于同一行,也就说明它们的共同点是:明文数据通过 calldata 的形式发送到链上合约;不同之处是 Optimistic Rollup 采用交互式错误证明来确保链下计算的准确性,如果被识别出故意作恶,那将会收到惩罚;相比于 ZK Rollup,Optimistic Rollup 的安全性假设弱一些。
Validium: 此方案由 StarkWare 提出,获得 V 神的认可,得此命名。特点是计算过程在链下完成,由零知识证明算法保证计算的正确性,链上完成验证并存储最终得世界状态;还有一点需要注意得是,为了获得更好的可扩展性,此方案把交易数据也存储在链下,同时由可信的「数据可用性」委员会提供数据可用性的证明,相比前两个方案,这个方案损失了一定的数据可用性,但是确实提供了更好的数据可扩展性;因此,在实际的应用场景中,此方案可能会得到更多的青睐。
Plasma: 由 V 神提出,相比于其他三个方案,这个方案被提出的时间最早。方案特点比较显著,链下计算,链上存储,交易数据也存到链下,简单粗暴,用户可以发起错误型证明来证明执行者的作恶行为,由此获得奖励,惩罚作恶的执行者。
虽然现在已经有了以上方案,但由于还没有真正在 Layer 2 上跑起来的应用,所以孰优孰劣也很难下定论。目前在以太坊上最活跃的应用概念是 Defi,其中又以 DEX 占用的网络资源最多,Layer 2 的提出将明显给 DEX 发展带来更大空间。下面可以从一个具体案例来看 Layer 2 的落地。
目前市场上很热的 ZKSwap 算是探索者之一, ZKSwap 提出的 Layer 2 扩容方案叫 ZKSpeed (A Pratical and Scalable ZK Rollup Solution 一个实用并且可拓展的 ZK Rollup 协议)。 下面通过一张图来展示 ZKSwap 设计的方案和上述方案的关系:
从图上可以看到,ZKSwap 的第一版扩容方案 ZKSpeed 基础架构结合了 ZK Rollup 和 Validium 和 Plasma 方案特点,在此基础上又通过聚合证明、GPU 优化、证明电路优化三个方案,大幅提升了整个网络的吞吐能力。
在做详细介绍之前,需要说明一下为何采用了交易数据链下存储的方案。事实上,ZKSwap 的初衷是完全按照 ZK Rollup 的方案来实现,因此它不仅能提降低交易成本,同时也保证了链上数据可用性,有了这个,用户随时可以提供默克尔树的有效性证明,从链上提取属于自己的钱。遗憾的是,经过真实的测试,在这种方案下,上链的成本仍然很昂贵,每一笔 layer2 交易的 Gas Limit 为 6000 左右 , 作为对比 Layer1 上面以太坊的 Gas Limit 为 21000, 普通 ERC20 的转账交易的 Gas Limit 为 50000 左右。这离 Layer 2 的扩容目标高吞吐,低 Gas 相差甚远;具有很快的上链速度,但是交易成本很高,相信也会降低用户主动做交易的意愿;因此,如果 Layer2 的平均每一笔交易成本太高,Layer2 主打的高 TPS 也很难实现。因此,要想把 Layer 2 的扩容方案用于真实场景,首先需要 Layer2 资金的绝对安全性 ; 第二需要 Layer2 的 TPS 够快 (ZKSwap Layer2 的 TPS 在 100 以上,并可以继续提升)第三 需要 Layer2 的每一笔交易的 Gas 成本只有主网交易成本的 5%, 或者 2% 。
ZKSpeed 方案中,对链下数据处理分为 2 部分,所有和 Layer 1 交易相关的数据都会实时上链,保证资金的觉得安全性,并实时生成零知识证明和验证证明,但是对于仅仅和 Layer2 相关的交易采用分布式存储的方案,实时披露原始交易数据,并把数据摘要实时上链,目前数据摘要由 Layer 2 运营方自己发布,并且任何人可以实时验证该摘要的准确性,长期来看,数据摘要的计算和发布可以通过分布式的形式进行,并引入社区验证。ZKSpeed 方案对链下数据进行了分类,大幅度提高了数据的可拓展性,关于数据可用性这个方面,ZKSpeed 方案的可拓展性长期来看优于所有交易都上链的 Optimistic Rollup 方案,长期来看,受制于以太坊的 Layer 1 的每个 Block Gas Limit 的限制,如果所有数据都上链存储,那么在 Layer 2 系统的可拓展性方面存在明显的天花板,考虑到巨大的上链 Gas 成本,这样的 Layer 2 系统在实际应用中,其 TPS 很难到 20 以上,其实用性会大大降低。
ZKSpeed 扩容协议通过对链下数据进行分类,实现了数据可用性和数据可拓展性的权衡。数据可用性的问题得到解决,那么下一步的目标就是提高零知识证明系统的可用性和处理速度。ZKSpeed 方案基于零知识证明算法,保证一个区块内的所有交易导致的世界状态的变化是正确的,多笔交易一次性处理,实现系统性能的第一次提升,带来了较高的 TPS。但是,这种解决方案带来的提升效果只能说是勉强可以接受,ZKSwap 团队不满于此,坚持寻找新的技术方案来实现更高的系统容量和更低的交易成本;经过不屑努力,终于找到了一个新的解决方案,即聚合证明 (Aggregative Proof)。
Aggregative Proof 聚合证明
聚合证明的逻辑其实很简单。大家知道,基础的 Layer 2 扩容方案里,一个区块对应一个有效性的证明,链上合约验证证明的有效性。现在以太坊的出块平均速度是 15s 一个区块,如果链上一次能验证多个区块的有效性,那么平摊在每个交易上的成本将大幅减少。基于这个思考,ZKSwap 采用了一种聚合证明方案。所谓的聚合证明方案就是,现在是一个区块一个证明,把一段时间内,或者是固定数量的区块产生的多个证明,再用零知识证明的方式去证明这些区块的证明是有效的(把验证的过程再当作是一种电路)。这样链上只需要一次验证,就可以实现多个区块证明的有效性验证。
经过实际测试,ZKSwap 在采用了聚合证明方案后,单笔交易的费用降低到了 1000 (Gas Limit),该成本是以太坊主网 ERC20 转账成本的 1/50 (以太坊主网转账的 Gas Limit 大概是 50000 左右),这个结果足够让人惊喜。试想一下,如果能在主网的出块时间间隔内,能生成更多的零知识证明,那么整个系统的 TPS 将会得到大幅改善,为此,ZKSwap 同样做出了大量的努力,实现了 GPU 版的 PLONK 算法,相比于 CPU 版本的 PLONK 算法,计算速度提升 3 倍有余,同时,ZKSwap 通过大规模高性能机器,专门用于零知识证明的生成,对于规模为 2^28 次幂的超大型电路,生成一个证明不到 2 分钟。但同时,受算法采用的椭圆曲线参数限制,每个区块里可证明的最多交易数量和可证明的证明数量存在上限,导致系统的的性能上限收到了限制。虽然有此约束,但 ZKSwap 最终的实测 TPS 仍然远超过了现有的其他产品,目前在最新的压力测试中,采用 ZKSpeed 方案的 ZKSwap 项目的 TPS 可以到 100 以上。
ZKSpeed 已经把目光放在了不需要可信设置的递归 SNARK 上,相比于聚合证明,递归 SNARK 将不需要可信设置,并且一次性可验证的区块数量将不受限制,仅取决于出块的速度和生成证明的速度。
系统实测结果
以下列举出几个常用的交易类型对应的费用,详细见表格:
由于 Deposit 和 Withdraw 操作涉及到与 Layer 1 的交互,因此交易成本相对于 Layer2 转账和 Swap 交易操作较多。不过,无论是哪一种交易类型,其每笔交易的成本已经领先于行业内的其他产品,基于 ZKSpeed 方案的 ZKSwap 已经实现了 资金安全性和高 TPS 以及 低 Gas 成本的 全面权衡,并且具备很大的实用价值,在 Layer2 的实际应用中,具备很大的技术优势。
展望
ZKSpeed Layer 2 扩容方案是一个兼具实用和工程优化的 ZK Rollup 方案,通过零知识证明的聚合证明,Plonk 算法的并行处理,以及对链下数据的分类处理,大大提高了 Layer2 系统的 TPS 并大幅降低了 Layer 2 交易的 Gas 成本。相比其他的 Layer2 方案(zk-Sync , optimistic rollup 以及 Plasma ),ZKSpeed 方案在实用性方面取得了更大的突破,并将率先支持 DeFi 的应用在 Layer2 大规模部署,关于 ZKSpeed 的方案细节,敬请关注即将发布的技术白皮书和系统示例(zkspeed.org)