

Pow:找合適的nonce st區塊哈希滿足一定條件,大家都很容易驗證,但很難算

Pos:把記賬權給幣齡大的節點


DPoS:委托權益證明,有點像股東大會

VRF:一種隨機機制


講真,沒怎么看懂
劃重點,講PBFT:


PBFT場景:
1.f個節點是拜占庭節點
網路至少需要3f+1個節點,為了使得所有誠實的節點最終狀態一致且正確,必須要求誠實的節點數量大于惡意的節點,
設節點總數為N,拜占庭節點總數為F,由于拜占庭節點可能不發資訊,所以每個節點需要從N-F個節點中判斷,最壞的情況下,這N-F個節點中包括了全部的F個拜占庭節點,那么誠實的節點只有N-2F個,這時就需要N-2F > F(少數服從多數),因此N > 3F,所以N的最小值為3F + 1
2.f+1個節點是拜占庭節點(同5)
假設N仍然是3f + 1,拜占庭f;那么每個節點會從2f個節點中判斷,如果某誠實節點不幸收到f+1個拜占庭節點的資訊,就無法保持正確了,
3.主節點是拜占庭節點
【safety:一致性,liveness:可用性,safety表示沒有錯誤,liveness表示有限時間可完成,】若主節點是拜占庭節點,新的請求無法在有限時間內達成一致,可用性無法滿足,視圖切換(節點排位,副本1為主節點),可以讓至少f+1個誠實節點遷移到新的一致狀態,通過視圖切換,可以選舉出新的、讓請求在有限時間內達成一致的主節點,向客戶端回應,
視圖切換條件:
1.主節點在共識未超過2/3時進行答復
2.請求編號超過水線
3.超過定義時長
Q1:如果下一個View的主節點宕機了怎么辦?
A1:副本節點在收集到2f+1個view-change訊息后,會啟動定時器,超時時間為T,新view的主節點宕機,必然會導致定時器超時時,未能完成View Changes流程,會進入新一輪視圖切換,
Q2:如果下一個View的主節點是惡意節點,作惡怎么辦?
A2:新view的主節點是惡意節點,如果它做惡了,生成的new-view訊息不合法,副本節點可以檢測出來,或者new-view訊息是合法的,但它只發送給了少數副本節點,副本節點在對new-view訊息進行正常的3階段流程,參與的節點太少,在定時器超時前,不足以完成3階段流程,副本節點會進入下一輪視圖切換,
Q3:如果非拜占庭惡意發起View Changes,造成主節點切換怎么辦?
A3:定時器未超時情況下,只有有效的f+1個view-change訊息,才會引發其他副本節點進行主節點切換,否則無法造成主節點切換,但PBFT的前提條件是惡意節點不足f個,所以只有惡意節點發起view-change訊息時,無法造成主節點切換,
Q4:如果參與View Changes的節點數量不足怎么辦?
A4:這個問題可以分幾種情況,
- 發起view-change的節點數量不足f+1個,這種情況不會發生整個集群的視圖切換,
- 視圖切換程序中,不滿足各節點的數量要求,無法完成本輪視圖切換,會進入下一輪視圖切換
4.三階段協議能否改成兩階段
3階段訊息是:Pre-prepare、Prepare和Commit,每個訊息都會包含數字簽名,證明訊息的發送者,以及訊息型別
Pre-prepare訊息由主節點發出,包含:
- 當前view:v
- 主節點分配給請求的序號n
- 請求的摘要d
- 請求本身m
Prepare是副本節點收到Pre-prepare訊息后,做出的回應,發送給所有副本節點,包含:
- v
- n
- d
Prepared狀態:副本i有Pre-prepare訊息,且收到2f個有效的Prepare訊息,
副本i達到Prepared狀態,可以發送(廣播)Commit訊息,Commit訊息的內容和Prepare訊息內容相同,但訊息型別和數字簽名是不同的
3階段訊息解決讓非拜占庭節點達成一致
若只有Pre-prepare和Prepare訊息,Prepared狀態可以證明非拜占庭節點在只有請求m使用<v, n>上達成一致,
但是Prepared是一個區域視角,不能保持全域一致,副本i無法確定,其他副本也達到Prepared狀態(通過commit保證),如果少于f個副本成為Prepared狀態,然后執行了請求m,系統就出現了不一致,
某節點不通過commit將prepared訊息計入,若此時主節點掛掉(發生視圖切換),會把訊息序列更新,這樣就只有一個節點寫入了,
5.3f節點能否容納f個拜占庭節點
不能,誠實節點(A),誠實節點(B),拜占庭節點(C)各f個,
每個節點收到2f-1個有效的Prepare訊息就可以,
這時候如果主節點為拜占庭節點,C向A發進攻指令(共2f個節點),A達成進攻共識,C向B發撤退指令(共2f個節點),B達成撤退共識,A和B就不一致了,
接下來,講講私鏈,就默認沒有拜占庭節點了
看看Paxos演算法:





最后再看看RAFT:也是一個私鏈常用的演算法


總結:
介紹了POW,POS,DPOS,VRF,PBFT,PAXOS,RAFT
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/333414.html
標籤:區塊鏈
