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 以上。 (责任编辑:admin) |