一文读懂Opside的ZK-PoW算法

TL;DR

Opside提出的ZK-PoW算法,具有以下优势:

  • 一个市场化的ZK算力定价机制,不但可以用于扩容(ZK-Rollup),在未来也可以应用于AI(ZKML)

  • 为即将到来的ZK-Rollup(尤其是zkEVM)的大规模爆发提供了海量算力平台;同时也为大量闲置的矿工提供了新的挖矿场景

  • ZKP的两步提交算法,为ZK-Rollup提供了标准的去中心化Prover机制

  • 优化的ZKP计算与提交机制,将生成ZKP的效率提高了80% 

为什么我们需要ZK算力的PoW算法?

当前,以太坊主网上已经有多个ZK-Rollups在运行了,包括Polygon zkEVM以及zkSync era。然而实际上目前绝大部分的ZK-Rollup项目都没有实现去中心化的prover。例如Polygon zkEVM的beta mainnet中依靠trusted aggregator来提交ZKP,zkSync era也是类似。

当ZK-Rollup数量不多的时候,中心化的prover是可行的。但是随着ZK扩容技术的成熟,特别是未来一到两年时间内zkEVM技术的逐渐落地,ZK-Rollup数量将迎来非常可观的增长。在海量ZK-Rollup的情况下,中心化的prover也会引发很多问题:

  • 首先,prover成本高昂,且需要专业的设备与机房,不是每一个ZK-Rollup的运营者都具有维护一个中心化的prover集群的能力。因此我们需要专业的矿工来承担未来海量的ZK-Rollup的算力需求

  • 其次,如果只有一个prover,那么单节点宕机就会造成整个ZK-Rollup的交易无法被确认。我们需要一个去中心化Prover机制来鼓励多个矿工同时参与一个ZKP的计算,并获得对应的奖励。

  • 最后,我们需要一个标准化的ZKP优化算法,来提升整体的硬件效率。

Opside的ZK-PoW算法

作为一条高度去中心化的公链,Ethereum已经拥挤不堪,gas fee极其昂贵。很多Web3应用,尤其是金融衍生品、Game、社交网络等,需要往layer 2 或者其他公链迁移。其实,单纯提供高性能和低gas的执行环境并不难,一些中心化的方案可以很容易做到这一点。难的是如何在保证高性能和低gas同时,保持高度的去中心化程度。

在Opside 的设计中,每一个 Web3 应用都可以拥有一个专属的 ZK-Rollup,并且可以自由选择base chain。目前,Opside支持4 条base chain,分别是Ethereum、Opside、BNB chain、Polygon。也就是说,开发者可以选择在这4 条公链上面部署自己的ZK-Rollup。为了支撑数量众多的ZK-Rollups 带来的海量硬件资源的需求,Opside 还提供了一个统一的 ZKP 算力市场,鼓励Miner来为这些ZK-Rollups 生成 ZKP。

PoW的奖励分配机制

Opside采用了PoS和PoW混合共识。其中PoS部分是基于ETH 2.0 的共识改进的。因此,Opside将拥有超过10 w多个validator来提供海量的数据可用性,同时具有高度的去中心化程度。

在Pre-Alpha测试网阶段,根据PoW算法,一个Opside区块内,每个Rollup会按照一定规则提交一个sequence。所有sequence根据当前Rollup slots注册数量来以及包含的batch数量来划分当前区块的PoW奖励。当然,可能某些rollup在某些区块没有提交sequence,因此PoW实际的通胀会低于预期。

Miner可以自由选择参与其中一个或者多个Rollup的ZKP计算。在未来,各个sequence将根据对应的ZK-Rollup类型、所包含的Rollup交易数量、gas使用量等进行工作量预估,从而对不同sequence进行不同的定价。

为了避免Miner相关的恶意行为,Miner需要在一个特殊的系统合约中注册,并质押代币。Miner需要在系统合约中为一个Rollup质押相应的token,才可以为该Rollup提交ZKP。Miner提交ZKP获得的奖励也将依据质押量比例来分配,从而避免Miner多次提交ZKP的恶意行为。

更多细节请参考Opside Tokenomics

ZKP 的两步提交算法:标准的去中心化Prover机制

为了鼓励多个矿工同时参与一个ZKP的计算任务,Opside提出了一个两步提交的ZKP验证机制。一个ZKP对应的PoW奖励份额,会按照一定规则分配给有效ZKP的提交者,也就是矿工。

1. 提交proofhash:在一个时间窗口内,对于某个sequence,允许多个矿工参与zero-knowledge proof的计算。各个矿工计算出proof之后,并不直接提交原始的proof,而是计算(proof / address)的proofhash,并向合约提交proofhash。

2. 提交ZKP:在时间窗口后,矿工提交原始的proof,并与之前提交的proofhash进行验证。验证通过的矿工都可以得到PoW奖励,奖励金额按照矿工质押量的比例来分配。

更多细节请参考ZKP's Two-Step Submission Algorithm

优化的 ZKP 生成算法:矿工效率提高了 80% 

Rollup的智能合约验证ZKP的时候,如果提交的是原始proof数据,就有可能引发链上攻击行为。为了防止恶意攻击行为,ZK-Rollup往往需要进行额外的工作量来隐藏原始的proof数据。有一种解决方案是,矿工提交的ZKP包含了对矿工地址的聚合结果。Opside提出的ZKP的两步提交算法,则巧妙地采用了先提交+后验证的模式,不再需要对proof和地址做类似的不必要的聚合计算。

此外,在一些开源的zkEVM中,ZKP的计算与提交都是串行的。当ZK-Rollup提交了大量的sequence时,矿工无法同时计算多个ZKP。在Opside中,ZKP的两步提交算法实现了ZKP的并行计算与串行提交,允许矿机同时执行多个ZKP生成任务,从而大大加速了ZKP的生成效率。

Opside团队还对ZKP递归聚合算法进行了一系列的优化,充分提升了集群内机器资源的利用率,进一步提高了ZKP的计算速度。

在实际的压测环境中,矿工拥有20 台128 core CPU + 1 TB RAM组成的机器集群,测试交易稳定在27.8 TPS约40 分钟。在相同条件下,Opside将交易的平均确认时间从约5-6 分钟降低到了约3 分钟,ZKP生成效率提高了约80% 。在未来,随着更多ZK-Rollup以及矿工的加入,ZK算力市场的需求端和供给端的规模将进一步扩大,Opside的PoW算法带来的效率提升将体现得更加明显。

总结

Opside提出的ZK-PoW算法,创造性地定义了一个市场化的ZK算力定价机制。这个算力市场为即将到来的ZK-Rollup(尤其是zkEVM)的大规模爆发提供了海量算力平台;同时也为大量闲置的矿工提供了新的挖矿场景。

ZKP的两步提交算法,为ZK-Rollup提供了标准的去中心化Prover机制,鼓励更多的矿工提供稳定、持续的ZKP算力。同时,优化的ZKP计算与提交机制,将生成ZKP的效率提高了80% 

在未来,Opside的PoW机制的应用场景可以轻易地拓展,不但可以用于扩容(ZK-Rollup),在未来也可以应用于AI(ZKML)。