paint-brush
Opside:下一代 ZK-Rollups 的先驱去中心化证明者经过@lumoz
10,638 讀數
10,638 讀數

Opside:下一代 ZK-Rollups 的先驱去中心化证明者

经过 Lumoz (formerly Opside)5m2023/05/09
Read on Terminal Reader

太長; 讀書

去中心化证明者可以有效解决上述问题,但也带来了一些挑战。集中式证明者仍然是安全的,并且不会带来与集中式排序器相同的审查问题。经过验证的证明者根据矿工的抵押金额比例获得 PoW 奖励。
featured image - Opside:下一代 ZK-Rollups 的先驱去中心化证明者
Lumoz (formerly Opside) HackerNoon profile picture


为什么我们需要去中心化的证明者?

目前,以太坊主网上运行着多个 ZK-Rollup。然而,去中心化ZK-Rollups的设计仍处于早期阶段。我们目前关注的是去中心化排序器的问题,但大多数人忽略了一个事实,即目前大多数 ZK-Rollup 项目都没有实现去中心化证明者。


对于 ZK-Rollups,集中式证明者仍然是安全的,并且不会带来与集中式排序器相同的审查问题。但是,中心化的证明者也会带来很多问题。首先,如果只有一个证明者,单个节点故障会导致整个 ZK-Rollup 无法提交其有效性证明,从而影响交易的最终性。


其次,中心化证明者成本高,无法满足未来海量ZK-Rollups的计算需求。


最后,从经济角度来看,一个中心化的证明者独享一部分利润,从代币经济学的角度来看,其实是不公平的。


去中心化证明者的挑战

去中心化证明者可以有效解决上述问题,但也带来了一些挑战。这也是最近推出的几个 zkEVM 方案都采用中心化证明者方案的原因之一。例如,Polygon zkEVM 的 beta 主网依赖于可信聚合器提交 ZKP,zkSync 时代在这方面类似。


从技术角度来看,ZK-Rollup 的智能合约在验证 ZKP 时,需要原始证明数据。这可能会触发各种链上攻击行为。例如,当某个证明者将计算出的 ZKP 提交给链级合约时,需要发送 L1 交易。当这笔交易广播到交易池时,攻击者可以看到原始证明数据,他们可以设置更高的gas fee来发送交易,从而最先被打包成一个区块并获得PoW奖励。


此外,由于证明者基于计算能力相互竞争,没有可靠的身份识别机制,也很难建立通信机制。不同的矿工可能会执行重复的工作,从而导致计算能力的浪费。


ZKP的两步提交

ZKP的两步提交



第一步:提交哈希

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


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


第二步:提交ZKP

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


  • 如果在第 T+20 个区块之前没有 ZKP 通过验证,则所有提交哈希的证明者都将被罚没。然后重新打开序列,可以提交新的哈希值,返回到步骤 1。


举个例子:假设 Opside 网络上每个区块的 PoW 奖励为 128 IDE,目前有 64 个 rollup 插槽可用。因此,每个汇总序列都分配了 2 IDE 的 PoW 奖励。如果A、B、C三名矿工连续成功提交了一个序列的正确ZKP,则三名矿工的矿工权益(IDE)分别为200K、500K、300K。那么,A、B、C 分别可以获得 0.4 IDE、1 IDE、0.6 IDE 的 PoW 奖励。


证明者的代币质押和惩罚

为了防止证明者的恶意行为,证明者需要注册一个特殊的系统合约并抵押一定数量的代币。如果当前质押量小于阈值,则证明者无法提交哈希和 ZKP。证明人提交 ZKP 的奖励将按照质押金额的比例进行分配,避免证明人提交多个 ZKP。


如果证明者有以下行为,将受到不同程度的惩罚:


  • 证明者提交了不正确的哈希。
  • 对于某个序列,如果没有对应的ZKP通过验证,则所有提交哈希的证明者都会受到惩罚。
  • 没收的代币将被烧毁。


有关 ZKP 两步提交机制的更多详细信息和注意事项,建议读者参考 Opside 官方文档。证明者的抵押和惩罚的具体数字可能会在未来发生变化。


几个注意事项:

  • 为什么允许多个证明者提交哈希值?如果只有第一个提交哈希的证明者得到奖励,其他证明者可能没有动力在第一个证明者提交哈希后提交证明。如果恶意攻击者在提交哈希后长时间延迟提交证明,可能会减慢整个序列的验证速度。因此,需要允许多个证明者独立并同时提交哈希值,以避免单个攻击者垄断 ZKP 验证。


  • 为什么会有时间窗?如果任何人都可以在提交哈希后立即提交证明,证明仍然可能被盗。攻击者可以立即提交与其地址关联的哈希值,然后提交证明以获得奖励。通过设置时间窗口,已经提交哈希的证明者没有动力在窗口内提交证明,从而避免了被竞速的可能性。


  • 为什么奖励是根据权益分配的?多个证明者可以在一个时间窗口内提交同一序列的哈希值。事实上,矿工可以使用他们生成的证明提交多个哈希(只需要多个地址)。这可能导致矿工拿走大部分甚至所有 PoW 奖励。为了避免这种攻击,一个序列的奖励将根据矿工的抵押数量的比例进行分配。


总结与规划

本文提出的ZKPs两步提交算法实现了证明者的去中心化,同时有效避免了竞态攻击,鼓励更多矿工提供稳定、持续的ZKP算力。该算法的初始版本将在 Opside pre-alpha 测试网上发布。


未来, Opside还将在ZKP挖矿领域推出更多创新理念,例如:


  • 根据全网ZKP算力的供求动态调整PoS和PoW之间的奖励分配比例。
  • 基于 ZK-Rollup 类型、Rollup 交易数量和 Rollup 的 gas 使用量的 Rollup 批次的个性化定价机制。
  • 补贴应用程序开发人员为其相关 Rollup 生成 ZKP,以鼓励矿工提供计算能力。