[區塊鏈]共識演算法(POW,POS,DPOS,PBFT)介紹和心得
POW:Proof of Work,工作證明。
比特幣在Block的生成過程中使用了POW機制,一個符合要求的Block Hash由N個前導零構成,零的個數取決於網路的難度值。要得到合理的Block Hash需要經過大量嘗試計算,計算時間取決於機器的雜湊運算速度。當某個節點提供出一個合理的Block Hash值,說明該節點確實經過了大量的嘗試計算,當然,並不能得出計算次數的絕對值,因為尋找合理hash是一個概率事件。當節點擁有佔全網n%的算力時,該節點即有n/100的概率找到Block Hash。
POS:Proof of Stake,股權證明。
POS:也稱股權證明,類似於財產儲存在銀行,這種模式會根據你持有數字貨幣的量和時間,分配給你相應的利息。
簡單來說,就是一個根據你持有貨幣的量和時間,給你發利息的一個制度,在股權證明POS模式下,有一個名詞叫幣齡,每個幣每天產生1幣齡,比如你持有100個幣,總共持有了30天,那麼,此時你的幣齡就為3000,這個時候,如果你發現了一個POS區塊,你的幣齡就會被清空為0。你每被清空365幣齡,你將會從區塊中獲得0.05個幣的利息(假定利息可理解為年利率5%),那麼在這個案例中,利息 = 3000 * 5% / 365 = 0.41個幣,這下就很有意思了,持幣有利息。
DPOS:Delegated Proof of Stake,委任權益證明。關於此協議的詳細內容,可以參考最新的博文《[區塊鏈]DPoS官方共識機制(BTS/EOS)詳解》
位元股的DPoS機制,中文名叫做股份授權證明機制(又稱受託人機制),它的原理是讓每一個持有位元股的人進行投票,由此產生101位代表 , 我們可以將其理解為101個超級節點或者礦池,而這101個超級節點彼此的權利是完全相等的。從某種角度來看,DPOS有點像是議會制度或人民代表大會制度。如果代表不能履行他們的職責(當輪到他們時,沒能生成區塊),他們會被除名,網路會選出新的超級節點來取代他們。DPOS的出現最主要還是因為礦機的產生,大量的算力在不瞭解也不關心比特幣的人身上,類似演唱會的黃牛,大量囤票而絲毫不關心演唱會的內容。
PBFT:Practical Byzantine Fault Tolerance,實用拜占庭容錯演算法。見前文拜占庭容錯演算法介紹。
PBFT是一種狀態機副本複製演算法,即服務作為狀態機進行建模,狀態機在分散式系統的不同節點進行副本複製。每個狀態機的副本都儲存了服務的狀態,同時也實現了服務的操作。將所有的副本組成的集合使用大寫字母R表示,使用0到|R|-1的整數表示每一個副本。為了描述方便,假設|R|=3f+1,這裡f是有可能失效的副本的最大個數。儘管可以存在多於3f+1個副本,但是額外的副本除了降低效能之外不能提高可靠性。
以上主要是目前主流的共識演算法。
從時間上來看,這個順序也是按該共識演算法從誕生到熱門的順序來定。
對於POW,直接讓比特幣成為了現實,並投入使用。而POS的存在主要是從經濟學上的考慮和創新。而最終由於專業礦工和礦機的存在,讓社群對這個標榜去中心化的演算法有了實質性的中心化擔憂,即傳聞60%~70%的算力集中在中國。因此後來又出現DPOS,這種不需要消耗太多額外的算力來進行礦池產出物的分配權益方式。但要說能起到替代作用,DPOS來單獨替代POW,POS或者POW+POS也不太可能,畢竟存在即合理。每種演算法都在特定的時間段中有各自的考慮和意義,無論是技術上,還是業務上。
如果跳出技術者的角度,更多結合政治與經濟的思考方式在裡面,或許還會跳出更多的共識演算法,如結合類似PPP概念的共識方式,不僅能達到對惡意者的懲罰性質,還能達到最高效節約算力的目的也說不定。
至於說演算法的選擇,這裡引用季總的這一段話作為結束:
一言以蔽之,共識最好的設計是模組化,例如Notary,共識演算法的選擇與應用場景高度相關,可信環境使用paxos 或者raft,帶許可的聯盟可使用pbft ,非許可鏈可以是pow,pos,ripple共識等,根據對手方信任度分級,自由選擇共識機制,這樣才是真的最優。
結束語
覺得好的朋友可以給我大賞一杯咖啡,獲得作者的友誼!原創不易:)
方式一:支付寶
方式二:以太坊