ZKSwap提出实用zkrollup协议ZKSpeed,可大幅提高TPS并降低Gas费用

2021-02-09 ZKSwap提出实用zkrollup协议ZKSpeed,可大幅提高TPS并降低Gas费用已关闭评论

以太坊网络作为区块链世界里最活跃的开发平台,日常的拥堵,越来越高的手续费,让生态中的应用和用户们都苦不堪言。最近以来,单笔转账的平均费用更是高达 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 扩容方案里,被讨论的最多的有 zkRollup、Optimistic Rollup、Validium 和 Plasma。在此借用 StarkWare 里 Avihu Levy 的一张图来区分它们:

以太坊 

(4种以太坊扩容方案对比)

这四个方案的特点如下:

zkRollup:由以太坊的研究员提出,特点是所有计算过程由链下计算,链上存储,参与计算的明文数据通过 calldata 的形式发送到链上合约,降低存储成本,同时,链下计算的正确性由零知识证明算法保证;由此也能看出,此方案确实能大幅提高 TPS,也能降低单次交易的费用。

Optimistic Rollup: 从图上可以看出,Optimistic Rollup 和 zkRollup 位于同一行,也就说明它们的共同点是:明文数据通过 calldata 的形式发送到链上合约;不同之处是 Optimistic Rollup 采用交互式错误证明来确保链下计算的准确性,如果被识别出故意作恶,那将会收到惩罚;相比于 zkRollup,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 的初衷是完全按照 zkRollup 的方案来实现,因此它不仅能提降低交易成本,同时也保证了链上数据可用性,有了这个,用户随时可以提供默克尔树的有效性证明,从链上提取属于自己的钱。遗憾的是,经过真实的测试,在这种方案下,上链的成本仍然很昂贵,每一笔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部分,所有和Layer1 交易相关的数据都会实时上链,保证资金的觉得安全性,并实时生成零知识证明和验证证明,但是对于仅仅和Layer2相关的交易采用分布式存储的方案,实时披露原始交易数据,并把数据摘要实时上链,目前数据摘要由Layer2 运营方自己发布,并且任何人可以实时验证该摘要的准确性,长期来看,数据摘要的计算和发布可以通过分布式的形式进行,并引入社区验证。ZKSpeed 方案对链下数据进行了分类,大幅度提高了数据的可拓展性,关于数据可用性这个方面,ZKSpeed 方案的可拓展性长期来看优于所有交易都上链的 Optimistic Rollup 方案,长期来看,受制于以太坊的layer1 的每个Block Gas Limit 的限制,如果所有数据都上链存储,那么在Layer2系统的可拓展性方面存在明显的天花板,考虑到巨大的上链Gas 成本,这样的Layer2系统在实际应用中,其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 Layer2 扩容方案是一个兼具实用和工程优化的 zk-rollup 方案,通过 零知识证明的聚合证明,Plonk 算法的并行处理,以及对链下数据的分类处理,大大提高了Layer2 系统的TPS, 并大幅降低了 Layer2 交易的Gas 成本。相比其他的Layer2 方案(zk-Sync , optimistic rollup以及Plasma ),ZKSpeed 方案在实用性方面取得了更大的突破,并将率先支持DeFi 的应用在Layer2 大规模部署,关于ZKSpeed 的方案细节,敬请关注即将发布的技术白皮书和系统示例(zkspeed.org)