区块链共识机制简述
共識機制是分布式系統的核心,在P2P系統中,互相不信任的節點通過預設機制最終達到數據的一致性稱為共識。共識機制也就是為了達成這種共識所要采用的方法。
共識機制的目標:
一致性:所有誠實節點所保存的區塊鏈前綴部分完全相同。
有效性:由誠實節點發布的消息終將被所有其他誠實節點記錄到自己的區塊鏈中。
如何評價一個共識機制的優劣:
安全性:能否有效防止二次支付,私自挖礦
擴展性:當系統成員和待確認交易數量增加時,所帶來的系統負載和網絡通信量的變化,通常以網絡吞吐量來衡量
性能效率:每秒可以處理的交易數量
資源消耗:達成共識的過程中,所要消耗的CPU、內存等計算資源
現在主要的共識機制有工作量證明、權益證明、拜占庭一致性協議三種。因為本篇文章的目的是簡述共識機制,所以我們并不關注每個機制的具體算法。
工作量證明
工作量證明機制,即節點通過“多的工作量”來換取信任。每個節點在提出某個階段的待定區塊之前,必須完成達到指定工作量的工作;不僅如此,如果某個節點收到了多個待定區塊,那么哪個區塊的鏈更長,它就驗證哪個區塊,因為更長的鏈意味著鏈所包含的工作量更多。
大家可能會有一個問題,為什么我們要相信工作量多的人呢?還是因為這種機制的特性之一:偽隨機性。它保證某個節點優先完成工作量證明的概率只取決于它占有的計算資源(CPU、內存等)占全世界所有節點的計算資源總和的比例。保證了相對的公平性(通俗上說,就是拼人數,好人多就行。拿現實世界打比方,如果你想搞破壞,必須要收買/征服全世界一半以上人口,或者自己一個人比全世界其他所有人加一起都有錢)。
不足:
嚴重的效率問題
過多強算力節點聯合,可能導致安全問題(目前計算資源逐步趨向中心化,與區塊鏈初衷相悖)
資源消耗過大
權益證明
由于工作量證明的過大資源消耗與資源浪費問題,人們越來越關注權益證明機制。
假設網絡同步性較高,系統以輪為單位運行。在每一輪的開始,節點驗證自己是否可通過權益證明被選為代表,只有代表可以提出新的區塊。代表在收到的最長的有效區塊鏈后提出新的待定區塊,并將自己生成的新的區塊鏈廣播出去,等待確認。下一輪開始時,重新選取代表,對上一輪的結果進行確認。誠實的代表會在最長的有效區塊鏈后面繼續工作。如此循環,共同維護區塊鏈。
不足:
如果網絡同步性較差,則系統很可能形成分叉,破壞一致性。
代表節點操控一切
拜占庭一致性協議
這一機制的主要目的是,解決如何在有錯誤節點的網絡中使所有正確節點對某個輸入值達成一致。該機制資源消耗少,效率高,一致性強(不易產生分叉)。
以實用拜占庭容錯協議為例, 協議要求在有3f+1 個節點的分布式系統中, 失效節點數量不超過f個。實用拜占庭容錯協議的每一輪包括3個階段: 預準備階段、準備階段和確認階段。在預準備階段,由主節點發布包含待驗證記錄的預準備消息。接收到預準備消息后,每一個節點進人準備階段。在準備階段,主節點向所有節點發送包含待驗證記錄的準備消息,每一個節點驗證其正確性,將正確記錄保存下來并發送給其他節點。直到某一個節點接收到2f個不冋節點發送的與預準備階段接收的記錄一致的正確記錄,則該節點向其他節點廣播確認消息,系統進人確認階段。在確認階段,直到每個誠實節點接收到2f+1個確認消息,協議終止,各節點對該記錄達成一致。
不足:
安全性差(容錯率僅為1/3,其他兩種均為1/2)
擴展性差(該協議的效率取決于節點數量,不適用于節點數量過大的區塊鏈系統)
對主節點有依賴
總結
- 上一篇: pdf 密码去除 pdf转为word
- 下一篇: 怎么压缩jp2文件?如何在线压缩jp2图