首頁>科技>

文章

一文讀懂Dipperin與BTC、ETH、EOS共識算法對比

文 / shencaibian 來源: 財富投資網 2019-09-02 15:16:44

  導語:在現今三大主流公鏈:BTC(PoW)、ETH(即將轉為PoS)和EOS(DPoS),使用了完全不同的共識算法,每個都有自己的優點,但同時每個也都不可避免的有自己的缺點。對比一下這幾家主流公鏈所采用的共識算法的優缺點,可以更清晰地了解Dipperin采用DPoW共識算法的底層邏輯。

  由于區塊鏈是去中心化的,也就是說在一個區塊鏈系統中,所有的節點或者說是參與者都是平等的地位。由于參與者的地位平等,因此需要一種機制來決定誰具有打包區塊的權力,這種機制就是共識算法。區塊鏈中共識算法的本質,就是誰擁有打包區塊的權力(也就是記賬權)的問題,誰擁有記賬的權力,誰就能夠獲得記賬的獎勵。

  一、BTC:工作量證明/PoW(Proof of Work)

  BTC是區塊鏈的鼻祖,它采用的是PoW(Proof of Work),即工作量證明。這一概念最早在1993年由Cynthia Dwork和Moni Naor的學術論文中提出,并在1999年由Markus Jakobsson與AriJuels對工作量證明這一詞的進行了發表。PoW核心設計思路是提出求一個復雜度計算值的運算過程,用戶通過進行一定的算力來計算一個滿意值并提供給服務方快速做驗證,以防止服務被攻擊,數據資源被濫用,確保數據交易的公平和安全。

  在BTC中,PoW工作其實就是如何去計算一個區塊的目標哈希值問題,這個哈希值還必須滿足一些必要條件,這個條件在區塊鏈中其實就是一個難度系數值,通過計算出的哈希值是否符合前面N位全是0,最終達成工作量證明。由于哈希值計算的隨機性,因此用戶只能通過大量的窮舉來實現。

一文讀懂Dipperin與BTC、ETH、EOS共識算法對比

圖1:比特幣的共識機制原理

  舉個例子:

  比如現在給出一個固定的字符串“Hello,Dipperin”,現在要求計算的難題是將這個字符串與一個隨機數(Nonce)拼接起來,并通過SHA256哈希計算一個固定256位長度的哈希值,如果得到的計算結果至少前4位全是0,即認為滿足計算條件,同時得到的隨機數(Nonce)值證明為達成工作量證明的有效隨機數。

  當中本聰剛開始提出比特幣的時候,比特幣還沒幾個人認可,那時的PoW無疑是最合適的:買幣不方便,大眾付出勞動挖礦就能拿到幣,所以挖礦是最好的辦法。

  但是隨著參與挖礦的人越來越多,PoW的缺點便越來越受人詬病:

  1. 消耗了大量的能源。隨著全網參與的算力越多,那么下一次調整的難度值就可能越高,能源的消耗就越嚴重。

  2. 網絡性能低,需要等待多個確認,容易產生分叉。

  二、ETH(Casper):股權證明/PoS(Proof of Stake)

  雖然PoW有這些缺點,但是以太坊在它目前的版本中依舊采用了PoW的方法進行挖礦。與比特幣的PoW挖礦算法不同的是,以太坊采用的是內存難解的PoW算法,由于它的計算的效率基本與CPU無關,卻和內存大小和內存帶寬正相關。因此通過共享內存的方式大規模部署的礦機芯片并不能在挖礦效率上有線性或者超線性的增長。這樣可以在一定程度上避免像比特幣一樣的出現算力的中心化,但是還是需要消耗很多的能源,所以以太坊也就一直宣稱要從PoW共識轉到PoS共識。

  PoS共識算法的優點很明顯:極少的能源消耗,擴展性強。但是它也有一個嚴重的問題:”無利害關系(Nothing at Stake)”問題,即如果在一條PoS鏈上(藍色鏈),如果你是一個驗證者,在你做完驗證押金被退回之后,你可以在藍色的主鏈上再次投票形成一條紅色的從主鏈中分出來的鏈條(如下圖),這時你分叉了鏈條之后,完全無需擔心間接的不良后果。不管發生什么事,你都總是可以贏,不會失去任何東西,不管你的行為有多惡意。這就是所謂的“無利害關系”問題,也是以太坊最新的Casper算法(PoS算法的一種)必須解決的問題。

一文讀懂Dipperin與BTC、ETH、EOS共識算法對比

圖2:“無利害關系”雙投

  Casper通過引入stake(押金)、checkpoint(檢查點)等機制來解決“無利害關系”問題,這可以在一定程度上減輕無利害關系問題,但無法徹底解決,并且還有另外幾個問題無法解決(Vitalik Buterin他自己在關于Casper的論文中提出):

  1.長程攻擊問題:即一旦有些驗證者聯合起來,退出了抵押,且長時間內他們的抵押是超過總抵押的三分之二,他們可以利用歷史的絕對多數聯結來固化兩個沖突的檢查點,而不用擔心抵押被沒收。

  2.災難性崩潰的問題:這種問題雖然概率比較小,但是理論上是有可能發生的。假設總額大于三分之一押金的驗證者在同一時間崩潰,它們因為網絡,計算機故障或者他們本身是邪惡的原因,連接不到網絡。這時由于整個網絡無法達成共識也導致無法產生一條能夠被最終確認的鏈。Casper采用了一種“非活躍泄漏”的方式來解決,具體是:慢慢地把那些沒有投票的驗證者的押金從總押金中釋放出去,最終總押金會下降到可以讓剩下活躍的驗證者占絕大多數的情況。但是這樣產生的問題在于,由于一些意外或者是惡意的原因,整個網絡可能被軟分叉成了兩部分,并且除非該節點放棄在被釋放鏈上的押金,否則無法在回到被釋放鏈上了。

  3.隱性中心化的問題:如果一個用戶持有較多的coin,比如30%,那么理論上,他是有可能通過不斷的成為驗證者來是自己在整條鏈中的coin比例達到50%以上的。這樣就會對鏈產生 51%攻擊問題。

  之所以比特幣和以太坊的共識算法都有自己的問題,主要在于區塊鏈技術長期面臨一個“三元悖論”也被稱為“不可能三角”。即在一個分布式計算系統的一致性(Consistency)、可用性(Availability)、分區容錯性(Partition-tolerant)三者不可兼得,最多只能兼顧其中的兩者。

一文讀懂Dipperin與BTC、ETH、EOS共識算法對比

圖3:PoW與PoS對比

  區塊鏈作為典型的分布式系統,它的共識算法就是對系統的安全性、可擴展性和去中心化作了一定的權衡。比特幣擁有最強的去中心化(當然,算力的中心化是無法避免的),但是相應了,它犧牲了它的可擴展性,每10分鐘一個區塊,每秒7筆交易,這個性能太過低下了。以太坊目前的PoW算法,一旦交易過大就會導致大量交易需要排隊上鏈,造成鏈的擁堵,交易費用上升,性能問題也很嚴重。而以太坊即將采用的Capser算法,從目前他們自己的分析來看,他們優先考慮一致性,因為它不允許在沒有絕大多數驗證者同意的情況下完成checkpoint,這樣區塊也就不會達到最終的確認狀態,但是它也在一定程度上放棄了安全性,即鏈在某種情況下可能出現分叉。

  三、EOS:委任權益證明/DPoS(Delegated Proof of Stake)

  而EOS所采用的DPoS(股份權益證明),它的原理是讓每一個持有EOS的人進行投票,由此產生21位代表,可以將其理解為21個超級節點或者礦池,而這21個超級節點彼此的權利是完全相等的。從某種角度來看,DPoS有點像是議會制度或人民代表大會制度。如果代表不能履行他們的職責(當輪到他們時,沒能生成區塊),他們會被除名,網絡會選出新的超級節點來取代他們。這種機制的優點是大幅度縮小參與驗證和記賬節點的數量,可以達到秒級共識驗證;缺點在于選舉固定數量的見證人作為記賬候選人有可能不適合完全去中心化的場景,另外在網絡節點數量少的場景,選舉的見證人代表性也不強。

一文讀懂Dipperin與BTC、ETH、EOS共識算法對比

圖4:PoS對比DPoS

  四、Dipperin:確定性的工作量證明/DPoW(Deterministic Proof of Work)

  針對于BTC、ETH以及EOS的共識算法及它們現存的缺點,Dipperin提出了自己的共識算法確定性的工作量證明DPoW(Deterministic Proof of Work),在DPoW共識算法中,使用了PoW、VRF(可驗證隨機函數)、PBFT等共識和加密技術以及防卡死機制,這樣能夠在獲得高擴展性的同時保證安全性并且盡可能的去中心化。下面就來介紹一下Dipperin的DPoW共識算法,及其和三大主流公鏈共識算法的對比。

  首先,對于BTC的PoW算法,Dipperin做了一定的改進,使用了分片的工作量證明,它的特點是將工作量證明計算過程分工,由分片服務器和礦工節點構成的hash難題解答過程,其基本原理如下:

  1.分片服務器將工作量證明的整個搜索空間劃分成多個部分,需要保證劃分的各小區間之間不會有相互覆蓋,然后將其分配給為其工作的礦工節點。

  2.礦工節點將會在分配的搜索空間上計算hash難題以尋求完成工作量證明。礦工節點在計算過程中需要定時監聽分片服務器的消息通知,以防分片服務器更新工作量搜索空間或重新分配任務。一旦礦工完成工作量證明,便會將滿足條件的區塊提交給分片服務器。

  3.分片服務器接收到礦工提交的區塊后,將其提交給校驗服務器集群,并等待驗證結果。

  其次,Dipperin引入了校驗者節點的角色,這些校驗者節點的主要作用是通過共識來確認一個塊,當塊被共識確認了以后才能將它加到區塊鏈上。這樣就能避免純PoW算法確認時間過長的問題。Dipperin采用PBFT共識算法來進行驗證者之間的共識,PBFT在共識算法中是強一致性和高效的代表。然而,為了保證其安全性和存活性,必須有超過2/3的共識節點為誠實節點。因此,如何盡可能從廣大節點中選取出誠實節點作為驗證者代表變得極為重要。

一文讀懂Dipperin與BTC、ETH、EOS共識算法對比

圖5:Dipperin獨創的DPoW共識算法

  Dipperin采用了一種基于VRF的驗證者抽簽機制。為了抵御女巫攻擊,Dipperin對每個用戶設定了權重,而這個權重則來源于用戶自身的信譽。Dipperin的系統對用戶的信譽進行量化計算,通過信譽來衡量用戶的權重。使用抽簽的方式選取驗證者,信譽高的具有更高機會被選中。Dipperin假設網絡中2/3的信譽是好的,那么鏈的安全性可以得到保障。Dipperin認為基于信譽的安全性假設,比起基于算力,或者基于股份的更為合理,更為公平。

  信譽:Reputation=F(Stake,Performance,Nonce)

  其中,Stake押金數代表著作惡成本,Performance績效代表著過去用戶作為驗證者時的業績,Nonce是該帳號相關的交易數,其他數據相同的情況下,交易數越高,信譽值越高。

  最后,Dipperin對驗證者的選取使用密碼擲簽,密碼擲簽的作用是從選出一小部分作為區塊提出者或者驗證者,且他們的身份可以被所有其他用戶驗證。密碼擲簽的實現是VRF算法,對于一個公認的輸入(input),用戶使用私鑰SK和一個Hash函數可以產生一個Hash值和一個Proof。其他用戶則可以通過這個Hash值和Proof,結合該用戶的公鑰PK,證實這個Hash值是否是由這個用戶針對Input所產生的,并且在這個過程中,該用戶的私鑰自始至終沒有泄露。用戶通過這種方式得到驗證,其他用戶便可以相信他是某一段時間的驗證者。用這種方式,通過一個公認的輸入(Input)便可以隨機選出一組用戶,且其身份可以被其他人驗證。Dipperin結合用戶的信譽度R、一個使用VRF計算出的隨機數種子seed(用來充當用戶的幸運值,避免信譽度高的人能夠一直被選上,提供給新參與者一些機會)。

  這種抽簽機制保證了根據用戶的權重,只有一小部分用戶被隨機選出,且他們的身份可以被所有用戶驗證。對于攻擊者來說,隨機的結果無法被提前預測,無法操控。Dipperin的抽簽機制提供了客觀安全性,即整個過程是客觀的,完全通過計算做決策,人的干預無法影響這個過程。

  這種客觀的安全性也能夠避免EOS的代表選舉曾遭到賄選問題。Dipperin的驗證者選舉過程透明。因為沒有人為因素操縱競選結果,所以不存在賄選的可能性。同樣也沒有人可以預知選舉結果,所以也不存在礦工賄賂驗證者打包其區塊的可能性。

  總的來說,Dipperin的DPoW的共識算法綜合考慮了共識的去中心化程度和交易的效率問題,可以達到秒級出塊,2000TPS的效率,采用VRF密碼擲簽避免PoS算法中的公正性和DPoS中的中心化問題。

文字關鍵詞:

版權所有 @2010-2012 財富投資網(銀投網) 粵ICP備18155955號

投資有風險,入市須謹慎!

彩票销售月年度工作总结