基於以太坊等共識協議的分散式證明生成規範
概述
本規範定義了一個與以太坊(或任何共識協議)整合的分散式證明生成協議,引入了兩個不同的角色:
- 驗證者:現有的以太坊驗證者,參與區塊共識並驗證提交的零知識證明。
- 證明者:一個新角色,獨立於驗證者,負責使用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。




