波卡链Substrate (7)Grandpa协议三“2阶段同步”
生活随笔
收集整理的這篇文章主要介紹了
波卡链Substrate (7)Grandpa协议三“2阶段同步”
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 預投票pre-vote+預執行pre-commit
step0. 假設當前是第r輪,一個voter 在(r-1)輪完成后,并且收集完之前所有輪投票的情況下可以進行第r輪投票
step1. 如果v是primary,廣播上一輪r-1輪的Estamete(pre-vote_V(r-1,v), pre-commit_C(r-1,v))
(Estimate包含了所有本可以在r輪最終確定卻實際上沒有被最終確定的區塊的信息)
step2. 等待網絡延遲2T后,每個驗證器為它理想的最高區塊廣播“預投票”pre-vote(如果絕大多數驗證者是誠實的,這個區塊應該擴展主廣播的鏈)
step3. 每個驗證器根據一組pre-vote計算可以最終確定的最高塊。等待網絡延遲2T或者確定沒有更好的區塊后,將結果廣播出去(pre-commit);
- g(V(r?1,v)) ≥ B >(V(r-1,v),C(r-1,v))
- pre-commit消息內容的創建方式:通過組合pre-vote的一致同意者(可能是多個)
step4. 當v接收到足夠的 pre-commit 的消息能夠確認區塊后就會形成 commit 的消息,一般認為大于 2/3 就可以被確認了。結果也可能是null。
T:網絡傳播消息時間
v:投票者
r:當前輪數
g():尋找前面的共同祖先function
vote 投票內容:signed(區塊哈希, r, type of vote)
總結
以上是生活随笔為你收集整理的波卡链Substrate (7)Grandpa协议三“2阶段同步”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 波卡链Substrate (7)Gran
- 下一篇: 波卡链Substrate (7)Gran