ZKP两步提交

两步提交流程

Lumoz提出了一种两步提交算法来实现去中心化的工作证明(ZKP)。这个算法可以防止ZKP竞争攻击,同时允许更多的矿工获得奖励,鼓励更多的矿工保持在线状态,提供稳定而持续的ZKP计算能力。

提交周期(这里的数字+10)可以根据网络的计算能力进行调整。

第一步:提交哈希

  • 在证明者计算某个序列的ZKP后,首先计算(proof / address)的哈希,并将哈希和地址提交给链级智能合约。这里,proof是某个序列的零知识证明,address是证明者的地址。

  • 假设第一个证明者在第T个区块提交了ZKP的哈希,它将在没有任何限制的情况下被接受,直到第T+10个区块。从第T+11个区块开始,新的证明者将无法再提交哈希。

第二步:提交ZKP

  • 在第T+11个区块之后,任何证明者都可以提交一个ZKP。只要一个ZKP通过验证,它可以用来验证所有已提交的哈希。经过验证的证明者根据矿工抵押金额的比例获得PoW奖励。

  • 如果在第T+20个区块之前没有通过验证的ZKP,所有已提交哈希的证明者将会受到惩罚。序列将重新开放,可以提交新的哈希,回到第一步。

一个简单的例子:

假设每个区块在Lumoz网络上的PoW奖励为128 MOZ,并且当前有64个Rollup插槽可用。每个Rollup序列被分配2 MOZ的PoW奖励。

如果三个矿工A、B和C连续成功提交了一个序列的正确ZKP,而这三个矿工的矿工抵押(MOZ)分别为200K、500K和300K,那么A、B和C分别可以获得0.4 MOZ、1 MOZ和0.6 MOZ的PoW奖励。

证明者的代币抵押和惩罚

为了防止与证明者相关的恶意行为,证明者需要在一个特殊的系统合约中注册并抵押令牌。

如果证明者进行以下行为,将会施加不同程度的惩罚:

  • 证明者提交了错误的哈希。

  • 对于某个序列,如果没有相应的ZKP通过验证,所有已提交哈希的证明者将会受到惩罚。

被扣押的代币将被销毁。

考虑因素

为什么要允许多个证明者提交哈希值?

  • 如果只有第一个提交哈希值的证明者会获得奖励,其他证明者可能没有动力在第一个证明者提交哈希值之后提交证明。

  • 如果一个恶意攻击者在提交哈希值之后长时间延迟提交证明,可能会减慢整个序列的验证过程。

因此,有必要允许多个证明者独立且同时提交哈希值,以避免单一攻击者对零知识证明验证的垄断。

为什么有一个时间窗口(提交时段)?

  • 如果任何人在提交哈希值后立即提交证明,该证明可能仍然会被窃取。攻击者可以立即提交与其地址相关的哈希值,然后提交证明以获得奖励。

通过设置一个时间窗口,已经提交哈希值的证明者没有动力在该窗口内提交证明,从而避免了被抢先的可能性。

为什么奖励是基于股份分配的?

  • 多个证明者可以在一个时间窗口内为同一序列提交哈希值。实际上,矿工可以使用他们生成的证明提交多个哈希值(只需要多个地址)。这可能导致大多数甚至全部 PoW 奖励被几个矿工获取。

为了避免这种攻击,序列的奖励将根据矿工持股金额的比例进行分配。

Last updated