基于以太坊等共识协议的分布式证明生成规范
概述
本规范定义了一个与以太坊(或任何共识协议)集成的分布式证明生成协议,引入了两个不同的角色:
- 验证者:现有的以太坊验证者,参与区块共识并验证提交的零知识证明。
- 证明者:一个新角色,独立于验证者,负责使用GPU生成零知识证明。证明者需要与以太坊验证者分开进行质押。
该系统旨在通过激励性的多阶段协议(T1–T5)确保及时、冗余和可验证的证明生成。
变量
// 数字需要调整,这只是一些初步想法。
PROVERS_PER_PROOF = 200
PROVERS_PER_AGGPROOF = 5
REWARD_FULL_PROOF_PROVER_T1 = 9000 // 如果在T1阶段提交有效的完整证明,每个选定的证明者获得的奖励。
REWARD_FULL_PROOF_SENDER_T1 = 50 // 在T1阶段提交有效完整证明的证明者获得的额外奖励。
REWARD_FULL_PROOF_VALIDATOR_T1 = 1000
REWARD_T1_VALIDATOR = 3
PENALTY_T1_PROVER = -1
REWARD_FULL_PROOF_PROVER_T2 = 8000
REWARD_FULL_PROOF_SENDER_T2 = 40
REWARD_FULL_PROOF_VALIDATOR_T2 = 900
REWARD_T2_VALIDATOR = 3
PENALTY_T2_PROVER = -3
REWARD_PROVER_REUSING_T3 = 40
REWARD_PROVER_REUSED_T3 = 40
REWARD_PROVER_T3 = 50
REWARD_VALIDATOR_T3 = 1
PENALTY_PROVER_T3 = -1
PENALTY_PROVER_NOTREUSED_T3 = -1
REWARD_PROVER_REUSING_T4 = 30
REWARD_PROVER_REUSED_T4 = 30
REWARD_PROVER_T4 = 40
REWARD_VALIDATOR_T4 = 1
PENALTY_PROVER_T4 = -2
PENALTY_PROVER_NOTREUSED_T4 = -1
REWARD_PROVER_REUSING_T5 = 20
REWARD_PROVER_REUSED_T5 = 20
REWARD_PROVER_T5 = 40
REWARD_VALIDATOR_T5 = 1
PENALTY_PROVER_T5 = -4
PENALTY_PROVER_NOTREUSED_T5 = -1
REWARD_AGG_PROOF_PROVER = 50
REWARD_AGG_PROOF_VALIDATOR = 3证明者选择和分配
- 对于每个新区块,使用如RANDAO等机制选择一个确定性随机的证明者子集。
- 选定的证明者数量取决于区块的gas使用情况:
num_provers_selected = Min(PROVERS_PER_PROOF, availableProvers / 2)- 每个选定的证明者被随机分配一组部分证明(子任务)生成,并具有冗余因子:
num_airs_assigned = (num_of_partial_proofs / num_provers_selected) * redundancy_factor- 每个选定证明者的分配
partial_proofs在计数和计划阶段后以随机确定性方式确定。 - 具有有效提交历史的证明者可能在未来轮次中具有增加的(但有界的)被选择概率。
- 一个证明者一次只能被分配到一个证明。
多阶段证明生成
T1:挑战承诺阶段
所有选定的证明者必须:
- 承诺签名的挑战(例如,他们负责构建的子AIR的多项式承诺)。
- 可选提交完整证明。
每个证明者只允许一笔交易。证明必须包括证明者的公钥作为公共输出,以防止证明被盗。
激励:
如果在T1阶段提交有效的完整证明:
- 每个选定的证明者获得REWARD_FULL_PROOF_PROVER_T1。
- 验证者获得REWARD_FULL_PROOF_VALIDATOR_T1。
- 提交证明的证明者额外获得REWARD_FULL_PROOF_SENDER_T1。
否则:
- 验证者获得REWARD_T1_VALIDATOR × 有效承诺数。
- 未能承诺的证明者受到PENALTY_T1_PROVER。
T2:部分证明提交阶段
- 所有选定的证明者必须:
- 提交他们的部分证明,引用T1阶段的挑战。
- 可选提交完整证明。
激励:
如果提交有效的完整证明:
- 每个选定的证明者获得REWARD_FULL_PROOF_PROVER_T2。
- 验证者获得REWARD_FULL_PROOF_VALIDATOR_T2。
- 提交证明的证明者额外获得REWARD_FULL_PROOF_SENDER_T2。
否则:
- 提交有效部分证明的证明者获得REWARD_T2_PROVER。
- 提交失败的证明者受到PENALTY_T2_PROVER。
- 验证者获得REWARD_T2_VALIDATOR × 有效部分证明数。
T3:完整证明聚合阶段
- 任何证明者可以提交完整证明,包括总结重用部分证明的布隆哈希。
奖励:
- REWARD_PROVER_REUSING_T3 × 重用的部分证明
- REWARD_PROVER_REUSED_T3 × 被他人重用的次数
- PENALTY_PROVER_NOTREUSED_T3 × 未被他人重用的次数
- 如果提交了多个有效的完整证明,上述奖励将在它们之间平均。
- 提交证明的证明者获得REWARD_PROVER_T3。
- 验证者获得REWARD_VALIDATOR_T3 × 有效完整证明数。
- 未参与的证明者受到PENALTY_PROVER_T3。
T4 / T5:备用聚合阶段
- 如果T3未能完成有效证明:
- 进入T4,如有需要则进入T5。
- 使用相同或新的证明者集重试(如果T5失败)。
- 奖励/惩罚与T3相同,但按定义的百分比调整(降低/提高)。
多子区块扩展(Gigagas)
- 子区块数量受系统上限和证明者可用性限制。
- 每个子区块分配一个证明者集。上述协议独立应用于每个子区块。
- 选择一组PROVERS_PER_AGGPROOF证明者将子区块聚合成完整区块。
在T1阶段:
- 选定的证明者可以提交区块的聚合证明。
激励:
- 每个聚合器证明者获得REWARD_AGG_PROOF_PROVER。
- 包含聚合证明的每个验证者获得REWARD_AGG_PROOF_VALIDATOR。




