去中心化的Prover如何实现?Opside 创新性提出 ZKP的两步提交算法

This article is not available in the current language yet. Showing the original version.
Opside提出的ZKP两步提交算法,在实现了prover去中心化的同时,能很好地规避针对prover的抢跑攻击,并鼓励更多的矿工提供稳定、持续的ZKP算力。

By Opside Team

去中心化的Prover如何实现?Opside 创新性提出 ZKP的两步提交算法

为什么我们需要去中心化的prover

当前,以太坊主网上已经有多个ZK-Rollups在运行了。然而ZK-Rollup的去中心化设计仍然处于早期阶段。我们目前都聚焦在Sequencer的去中心化问题上,大部分人都忽略了,实际上目前绝大部分的ZK-Rollup项目都没有实现去中心化的prover。

对于ZK-Rollup来说,中心化的prover仍然是安全的,并且也不像中心化的sequencer那样会带来审查的问题。但是中心化的prover也会引发很多问题。首先,如果只有一个prover,那么单节点宕机就会造成整个ZK-Rollup的有效性证明无法提交,从而给交易的最终确定性造成影响。其次,中心化的prover成本高昂,无法承担未来海量的ZK-Rollup的算力需求。最后,从经济的角度来说,中心化的prover独享了一部分收益,这在代币经济学上来说,实际上是不公平的。

去中心化prover的挑战

去中心化prover能很好地解决以上的问题,但是也带来一些挑战,这也是为什么最近上线的几个zkEVM方案采用了中心化prover方案的原因之一。例如Polygon zkEVM的beta mainnet中依靠trusted aggregator来提交ZKP,zkSync era也是类似。

从技术细节上来讲,ZK-Rollup的智能合约验证ZKP的时候,需要原始的proof数据,这就可能引发各种不同的链上攻击行为。例如,某一个prover提交计算出来的ZKP到链上合约时,需要发一笔L1的交易。当这个prover发出的交易广播到交易池中,攻击者就可以看到原始proof数据,攻击者可以设置一个更高的gas费来发交易,从而优先打包到区块中,来获取PoW奖励。

此外,由于prover之间是依靠算力来竞争,没有一个可信的身份识别机制,也很难建立一个通信机制。不同的矿工有可能做重复的工作,从而造成算力的浪费。

ZKP的两步提交

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

去中心化的Prover如何实现?Opside 创新性提出 ZKP的两步提交算法

第1步:提交hash

  1. 对于某个sequence,prover计算出ZKP之后,首先计算(proof / address)的hash,并向链上智能合约提交hash和address。其中,proof是某一个sequence的零知识证明,address是该prover的地址

  2. 假设在第1个prover在第T个区块提交了hash,则在第T+10区块以内,还可以接受其他prover提交hash,没有数量限制。第T+11区块及之后,不再接受新的prover提交hash

第2步:提交ZKP

  1. 第T+11区块及之后,允许任何prover提交ZKP。只要有一个ZKP通过验证,那么就可以根据该ZKP对所有提交过的hash进行校验。校验通过的prover都可以得到PoW奖励,奖励金额按照矿工质押量的比例来分配。

  2. 如果在第T+20区块之前,都没有ZKP通过验证,则所有提交过hash的prover都将被slash。此时该sequence重新开放,允许提交新的hash,回到第1步

举一个例子,假设Opside中每个L2区块的PoW奖励是128 IDE,当前总共有64个Rollup slots,那么每一个Rollup sequence分配到的PoW奖励是2 IDE。如果先后有A, B, C 3个矿工为一个sequence提交了正确的ZKP,且A, B, C 3个矿工的矿工质押量(IDE)分别为200K,500K,300K。那么,A, B, C可以获得的PoW奖励分别为0.4 IDE,1 IDE,0.6 IDE。

Prover的质押与惩罚

为了避免针对prover的恶意行为,prover需要在一个特殊的系统合约中注册,并质押一定数量的token。如果当前质押数量小于阈值,则不允许提交hash和ZKP。prover提交ZKP获得的奖励也将依据质押量比例来分配,从而避免prover多次提交ZKP的恶意行为。

当prover出现以下行为,会进行不同程度的惩罚

  • prover提交了错误的hash

  • 对于某个sequence,如果没有对应的ZKP通过验证,则所有提交过hash的prover都将被惩罚

罚没的token将被烧毁。

关于ZKP的两步提交机制更多的细节与考量,请读者参阅官方文档。prover质押以及惩罚的具体数字在未来可能会改动。

几个考量

  • 为什么允许多个prover提交hash?如果第一个hash的提交者才能获得奖励,那么第一个prover提交了hash之后,其他prover就没有动力提交proof。如果一个恶意攻击者提交hash之后迟迟不提交proof,那么会阻碍整个sequence被验证的速度。因此应当允许多个prover独立且并行地提交hash,以避免ZKP的验证被单个攻击者垄断。

  • 为什么需要设置一个时间窗口?假设任何人在提交了hash之后可以立即提交proof,那么该proof仍然有可能被抢跑。因为攻击者会立即提交一个与自己地址关联的hash,随后提交proof,从而获取奖励。设置时间窗口之后,提交过hash的prover就没有动力在此时间窗口内提交proof,从而避免了proof被攻击者利用的可能。

  • 为什么要按照质押量来分配PoW奖励?在一个时间窗口内,允许多个prover为同一个sequence提交hash。实际上,矿工可以利用自己生成的proof提交多个hash(只需要多个地址即可),从而占有大部分甚至所有PoW奖励。为了避免这种攻击行为,一个sequence的PoW奖励将按照矿工质押量的比例来分配。

总结与规划

本文提出的ZKP两步提交算法,在实现了prover去中心化的同时,能很好地规避针对prover的抢跑攻击,并鼓励更多的矿工提供稳定、持续的ZKP算力。最初的版本将在Opside的Pre-alpha testnet上线。在未来,Opside也将在更多ZKP的挖矿领域进行更多创新。例如:

  • 根据整个网络的ZKP算力供需关系,动态调整PoS与PoW的奖励分配比例

  • 根据ZK-Rollup类型、Rollup交易数量、gas使用量等进行工作量预估,建立Rollup batch的个性化定价机制

  • 应用开发者对所属Rollup的ZKP生成进行补贴,以激励矿工提供算力

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
New York sues Coinbase and Gemini for allegedly violating state laws.
PANews Newsflash