Opside ZK-PoW V2.0:支持多链多Rollup的ZKP挖矿

This article is not available in the current language yet. Showing the original version.
Opside ZK-PoW V2.0优化了多矿工参与ZKP计算的流程,提升了硬件利用率和可用性。在多矿工的场景下,将ZKP的计算缩短到不到一分钟,极大地加快了ZK-Rollup的确认时间。

Opside ZK-PoW V2.0:支持多链多Rollup的ZKP挖矿

一、Opside ZK-PoW介绍

Opside 是一个去中心化的ZK-RaaS (ZK-Rollup as a Service)平台,也是业内领先的ZKP(零知识证明)挖矿网络。ZK-RaaS (ZK-Rollup as a Service) 可以为任何人提供一键生成 ZK-Rollup的服务。Opside 提供通用的 ZK-Rollup launchbase,开发者可以通过launchbase轻松地部署不同类型的ZK-Rollup到不同的base chain上。

  • Base chain,包括Ethereum/Opside chain/BNB chain/Polygon PoS等公链。

  • ZK-Rollup类型,包括zkSync、Polygon zkEVM、Scroll、StarkNet 等zkEVMs,以及其他种类的ZK-Rollups。

Opside ZK-PoW V2.0:支持多链多Rollup的ZKP挖矿

Opside ZK-PoW Cloud会部署到多链上,包括但不限于Ethereum、BNB Chain、Polygon PoS以及Opside Chain本身。在Opside的设计中,开发者可以在上述不同的base chain上部署ZK-Rollups。随着ZK-Rollup技术的逐渐成熟,未来可能会诞生成百上千个ZK-Rollups,这将带来极大的ZKP算力需求。Opside使用 ZK-PoW 机制来激励 Miner 提供 ZKP 算力,从而为 ZK-Rollup 提供完整的硬件设施。

二、ZK-PoW V2.0整体架构

ZK-PoW V2.0的整体架构包括几个关键组件:

  • ZK-PoW Cloud:这是Opside提供的用于ZKP计算的云基础设施。它部署在多个链上,包括Ethereum、BNB Chain、Polygon PoS和Opside Chain。ZK-PoW Cloud负责协调和管理ZKP计算任务。

  • 矿工节点:这些是由矿工操作的节点,他们贡献自己的计算能力来执行ZKP计算。矿工可以通过在他们的挖矿硬件上运行专用软件来参与ZK-PoW网络。

  • ZKP任务分发:ZK-PoW Cloud将ZKP计算任务分发给矿工节点。分发是以去中心化方式进行的,以确保公平性和效率性。ZKP任务包括为各种ZK-Rollup生成和验证零知识证明。

  • ZKP计算:矿工节点接收ZKP计算任务,并进行必要的计算来生成所需的证明。这涉及执行密码学算法和进行复杂的计算。

  • 证明提交和验证:一旦ZKP计算完成,矿工节点将生成的证明提交给ZK-PoW Cloud进行验证。云基础设施验证证明的正确性,以确保其有效性和完整性。

  • 激励机制:矿工通过为他们的计算贡献获得奖励来激励他们参与ZK-PoW网络。奖励系统旨在激励矿工并维护网络的安全性和稳定性。

总的来说,ZK-PoW V2.0将矿工的计算资源与云基础设施相结合,为各种ZK-Rollup提供高效且可扩展的ZKP计算能力。

Aggregator 是Prover的重要组成模块, 它负责分发ZKP证明任务并接收任务结果即ZKP证明,管理ZKP证明以及将ZKP证明提交到Base Chain以此获取奖励 。因此基于功能将新版Aggregator 分为三个子模块,分别为:Proof Generator, Proof Manager, Proof Sender。

Opside ZK-PoW V2.0:支持多链多Rollup的ZKP挖矿

如上图虚线框内Proof Generator模块将负责给prover(PoW矿机) 发布证明任务并接受任务结果:ZKP证明,然后将ZKP证明保存到DB数据库中。Proof Manager 负责管理完成是ZKP证明,将要上链的ZKP证明封装成发送任务转交给模块Proof Sender。模块Proof Sender 完成ZKP证明上链,即提交证明给部署在Base Chain上的 zkevm contract。

下面分别介绍这三个模块:

Proof generator

Rollup Chain 将一定数量交易,打包成一个batch,然后将若干个(依据交易的频繁性等多个因数)batch打包成一个sequence,然后将其提交到Base Chain,因此我们可以说每次上链数据单位是sequence。 每个sequence包括1个以上batch,而ZKP证明是证明已提交的sequence的合法性,所以batch是证明任务最小单位。

依据sequence包含的batch不同,需要完成的证明任务也不同,具体如下:

  • batch数目等于1, 证明流程BatchProofTask ----> FinalProofTask,需要依次完成BatchProofTask,FinalProofTask证明任务。

  • sequence包含batch数目大于1, 证明流程多个BatchProofTask ---->AggregatorproofTask ---> FinalProofTask,需要依次完成多个BatchProofTask ,AggregatorproofTask,FinalProofTask证明任务。

为了尽可能提高证明产生的效率,也为了提高PoW矿工收益,我们尽可能并发生成证明。具体表现在以下两方面:

  • 各个sequence 证明生成没有上下文或者状态上依赖,可以并发进行。

  • 同一个 sequence 里多个BatchProofTask可以并发进行。

以此更好的发挥prover的算力资源,从而能更高效的生成证明。

Proof manager

该模块主要负责管理ZKP证明,控制ZKP证明上链验证。主要分为三个模块

  • submitPendingProof: 该模块只在Aggregator每次启动时执行一次,目的是将上一次Aggregator服务停止前未完成的ZKP证明提交完成。这里是针对proofHash提交了且其他矿工提交了proof的情况。关于proofHash, proof的介绍参考Proof Sender。

  • tryFetchProofToSend: 在协程执行,将最新生成的ZKP证明且该证明对应的sequence未被验证加入到Proof Sender的缓存中等待上链。

  • processResend: 在协程执行,目的让超过时间窗口没验证成功的sequence重新提交上链。

Proof sender

Opside 提出了一个ZKP两步提交算法,来实现了prover的去中心化。这种算法既能够防止ZKP抢跑攻击,又可以让更多的矿工获得奖励,从而鼓励更多的矿工在线,并提供稳定、持续的ZKP算力。

  • 第1步:对于某个sequence生产PoW证明记为proof,首先计算Hash(proof / address), 记为proofHash,并向合约提交,若该sequence之前没有提交过proofHash,则开启proofHash的提交时间窗口T1, 在之后T1个区块内矿工都有资格提交该sequence,且T1区块后才能提交proof。

  • 第2步:提交proof, T1后区块后,开启proof提交,且限定在T2个区块内提交。如果T2区块后,所有矿工提交proof都没验证通过,则之前所有提交过proofHash的矿工都被被惩罚。如果在T1时间窗口能成功提交了proofHash,但是在T2时间窗口内未能成功提交proof,且T2 窗口内其他矿工成功提交了proof,则仍然可以继续提交该proof。除了以上场景外,重新走两步提交流程。

如下图,Proof Sender 基于三个线程安全且优先级排序缓存来实现两步提交,这三个缓存基于 sequence的起始高度进行排序,保证每次从这个三个缓存获取元素对应的 sequence高度都是最低的,同时这三个缓存中元素是去重的。对应sequence的高度越低越需要优先处理。

  • finalProofMsgCahce: 存放的是Proof Manager发送来finalProof消息,也就是完成ZKP证明。

  • monitPHTxCache: 存储要监控proofHash 交易。

  • ProofHashCache: 存储proof消息,用于proof上链。

如下图:

Opside ZK-PoW V2.0:支持多链多Rollup的ZKP挖矿

Proof Sender 模块启动后会启动3个协程,分别消费这三个缓存数据。

简单流程是:

  1. 协程1负责消费finalProofMsgCahce中的finalProof消息,计算proofHash ,如果符合上链条件(在T1条件内),则将proofHash上链,同时将proofHash 交易放入到monitPHTxCache中。

  2. 协程2消费monitPHTxCache的proofHash 交易消息,如果在T2时间窗口内,满足proof上链条件,这构造proof消息,存放到ProofHashCache。

  3. 协程3消费proof消息,proof上链。

相对旧模块,结构更加清晰,节省资源开销。

三、总结

与Version1.0对比

  • V2.0拆分了原有服务为三个子模块,三个模块分别负责证明产生,证明管理,证明上链,结构更加清晰,三个模块耦合性低,鲁棒性强。

  • 证明产生模块Proof Generator相对旧版添加了startBatch 参数方便新加入矿工能更快跟上挖矿进度。

  • 证明管理模块Proof Manager相对旧版更好改进:对于矿工重启服务或者其他原因导致proof 未提交或者提交失败会第一时间重发proof,保证矿工利益;同时重发机制不仅针对proof提交失败情况,也针对所有proof提交失败或者未提交,重启时间窗口,保证Rollup Chain安全性。

  • 证明发送模块Proof Sender基于三个线程安全优先级缓存来实现交易两步式提交,相对之前版本减少全局锁使用,保证了低高度的proof能第一时间提交,保证了矿工的利益。同时,整个服务流程更清晰,减少了线程数量,减少了程序执行中资源的消耗。

压测结果:

  • Version2.0使用10台64核机器,完成batch 证明566个,耗时7小时38分40秒,平均48.62秒完成一个证明。在多矿工场景下,相较于V1.0,V2.0的zk proof生成效率整体提高了50%

总之,Opside ZK-PoW V2.0优化了多矿工参与ZKP计算的流程,提升了硬件利用率,提高了服务可用性,对矿工更加友好。更重要的是,在多矿工的场景下,将ZKP的计算缩短到不到一分钟,极大地加快了ZK-Rollup的确认时间。

Share to:

Author: Opside

Opinions belong to the column author and do not represent PANews.

This content is not investment advice.

Image source: Opside. If there is any infringement, please contact the author for removal.

Follow PANews official accounts, navigate bull and bear markets together
PANews APP
All three major U.S. stock indexes closed lower, with COIN falling more than 7.48%.
PANews Newsflash