


摘要:本文對POW、POS、DPOS、PBFT共識算法的基本原理進行闡述和分析,并分析其中一些共識算法的缺陷。共識算法是區塊鏈技術的關鍵技術,在區塊鏈安全、效率等方面有著決定性的作用,它決定了區塊鏈中區塊的生成規則,常用的共識算法主要有POW、POS、DPOS、PBFT。
關鍵詞:區塊鏈;識算法;加密技術
2019年1月10日,國家互聯網信息辦公室發布《區塊鏈信息服務管理規定》。2019年10月24日,在中央政治局第十八次集體學習時,習近平總書記強調:“區塊鏈技術的集成應用在新的技術和產業變革中起著重要的作用,我們要把區塊鏈作為核心技術自主創新的重要突破口,明確主攻方向,加大投入力度,著力攻克一批關鍵核心技術,加快推動區塊鏈技術和產業創新發展。”
“區塊鏈”技術已逐漸走入大眾的生活,成為社會的關注焦點。區塊鏈源于比特幣,利用加密鏈式區塊結構存儲數據,其中共識算法是區塊鏈技術的一個核心問題,利用共識算法來生成、驗證數據,可以有效的解決互聯網上信任與價值的可靠傳遞難題。
1 區塊鏈的技術和發展
1.1 技術起源階段
通過網絡點對點技術U1區塊鏈上對等節點的網絡進行連接。同時,采用非對稱的加密算法,在加密算法中,公鑰和私鑰是成對出現的,但是由于加密和解密的密鑰不同,所以稱為非對稱算法,區塊鏈使用這種算法保證節點間的保密通信。
1.2 區塊鏈1.0階段
在區塊鏈1.0階段中,主要特點是采用分布式賬本技術,分布式賬本技術可以看作是一個可以在多個節點不同地理位置或者多個組織機構組成的網絡數據庫。區塊鏈1.0采用塊鏈式的數據結構,保證交易數據的防篡改。
1.3 區塊鏈2.0階段
采用一套數字形式的定義承諾,由計算機自動執行。承諾中包含合約參與者約定的權力和義務,通過引入智能合約,使用者類似發起一筆轉賬交易,要求執行指定合約的相關規則,從而使得區塊鏈系統演變成一個區中心的計算平臺。
區塊鏈技術目前已經廣泛應用到各個領域,在科學技術方面,區塊鏈可以協助很多學科解決科學技術的問題,如區塊鏈+互聯網,區塊鏈+密碼學,區塊鏈+金融等等。從區塊鏈的應用性來看,區塊鏈采用分布式的計算方式,實現賬本的共享和數據信息的共享。使用區塊鏈技術,實現信息的不再是中心化,數據信息安全性提高、保證數據的公開和透明等特點。從而使區塊鏈的安全性得到普遍的認同。區塊鏈具有豐富的應用場景,對于信息不對稱的問題,區塊鏈技術采用兩套加密技術,公共數據可以透明化進行實現。
在區塊鏈系統中,共識算法具有重要作用。它不僅協助節點保持數據一致,同時還對代幣發行,攻擊防范具有一定功能。從2009年第一個區塊鏈系統誕生至今,隨著區塊鏈技術的成熟,區塊鏈共識算法也在不斷發展與完善,到如今己演變出多種分支。
伴隨著區塊鏈產業的迅猛發展,區塊鏈的安全性逐漸得到區塊鏈應用和研發人員的重視,區塊鏈技術的算法中,可以交易不再圍繞中心的機構,同時還能保證全網數據的一致性,從而實現點對點的交易,這些交易的規則設計顯得尤為重要。在區塊鏈技術的研究中,共識算法作為其技術的核心內容,對區塊鏈的使用起著決定性的作用,其中包括區塊鏈的安全、效率等方面。
2 區塊鏈的特征
區塊鏈具有去中心化的特點,說明區塊鏈不再以中心節點為主要依賴對象,對數據實現分布式的記錄方式,同時對數據進行存儲和更新。在傳統的網絡中,以中心化為技術特征,業務的執行要依賴于中心節點的可信性和穩健性。在區塊鏈中,區塊鏈的分布式結構使全網的節點進行均勻分布,系統中的數據由全網共同進行維護。
區塊鏈中的所有公開節點具有開放性,任何節點可以通過公開的接口進行數據的查詢或者開發應用,整個系統是開放的。
在區塊鏈系統中,公開節點的信息所有的數據都可以被訪問,但交期時的私有信息時通過哈希函數加密處理的,所以數據交換和交易時在匿名的情況下進行的。
區塊鏈技術采用兩套加密技術,用來防止區塊鏈中的記錄被篡改。一套是默克爾樹的方式進行記錄;另一套是在創建新的區塊前放入一個哈希值。這兩種加密機制使區塊鏈中的數據具有極高的穩定性和可靠性。
從區塊鏈的開放程度上看,區塊鏈可以分為聯盟鏈、私有鏈和公有鏈。如圖1所示,每個鏈中包含不同的算法,本文主要對共識算法中的公鏈進行研究。伴隨著區塊鏈技術的不斷發展,區塊鏈中每種類型的鏈之間的界限也將變得模糊,隨著節點上運行的智能合約越來越復雜,私有鏈上的節點有些必須開放才能執行相應的業務邏輯,而部分的共識節點僅會向許可節點保證其開放性,各鏈之間的業務界限會逐漸模糊。
3 共識算法的基本原理
3.1 工作量證明(POW,Proof of Work)
工作量證明是區塊鏈技術中較早產生的一種算法,在2009年最早的應用到區塊鏈技術中。在區塊鏈技術中,工作量證明的主要的方法是節點間進行算力的競爭來分配記賬權和獎勵。
工作量證明流程如圖2所示。
在工作量證明中,首先收集在一個區塊上產生的待確認的交易,當交易驗證通過時,將其計入節點內存池,更新計算出交易的默克爾根值,寫入到這個區塊的頭部信息,標注區塊的版本號以及前一個區塊計算的哈希值、該區塊產生的近似時間、當前的哈希值、隨機數等信息。根據隨機數的取值范圍,計算區塊頭部的哈希值,當區塊頭部的哈希值小于或等于目標值的時候,對這個區塊進行打包并廣播,待其他節點驗證后完成記賬。共識算法的區塊頭部信息如表1所示。
3.2 權益證明( POS,Proof of Stake)
在權益證明中,數字貨幣有了幣齡的概念:
幣齡一持有數量×持有時間
權益證明鼓勵比特幣的持有人增加比特幣的持有時間,并通過幣齡的概念,使區塊鏈的證明不再依靠工作量的計算。同時,區塊鏈的價值越大,安全性越高,當攻擊者想要對區塊鏈進行攻擊時,需要積攢大量的幣齡,從而增加了攻擊的難度,增加了區塊鏈的安全性。說明在權益證明機制中,區塊鏈的價值與區塊鏈的安全性成正比。
3.3 股份授權證明機制( DPOS,Delegated Proof of Stake)
在上一個共識算法中,每個節點都可以根據自己擁有股份權益投票選取代表,整個網絡中,參與投票且獲得票數最多的節點,將獲得記賬權。這些節點按照預先決定的順序,通過決定的順序產生區塊,同時獲得相應的獎勵。在獲得記賬權中,其節點需要繳納一定數量的保證金,且必須保證一定的在線時間,如果某個時刻需要此節點產生區塊,而該節點并未履行職責,那么這個節點將會被取消記賬權,系統繼續投票,選出新的節點代表來取代他。
3.4 拜占庭容錯算法( BPFT,Delegated Proof of Stake)
拜占庭容錯技術在分布式系統中,主要用于解決對應結點的故障和傳輸錯誤的問題,在拜占庭容錯算法中,應用到視圖的概念,在每個視圖中,只需要定義一個主節點,其他結點都定義為備份結點,所有的結點都在相同的配置環境下運行。其中,主節點負責將客戶端的請求進行排序,并按照排序結果發送給備份結點。接收到排序結果后,此時備份結點需要檢查主節點發送的請求排序是否正常,如果發現異常,就會觸發試圖替換機制,更換下一個編號的結點作為主節點,從而進入到視圖。在拜占庭容錯算法中,當客戶端發出請求收到答復的流程圖如圖3所示。
4 共識算法的缺陷
在共識算法中,根據其算法的分析,存在著一些安全性或者擴展性的不足,本文對幾種具有代表性的算法進行討論。
4.1 拜占庭容錯算法
拜占庭容錯算法,通過異步通信機制達成共識,同時由N個節點組成的異步網絡系統中,能容忍F個拜占庭故障節點,其中F
4.2 工作量證明
工作量證明產生在區塊鏈的第一個階段中,在算法上,塊間隔時間較長,并且區塊間隔時間較長,導致交易確認速度較慢。
哈希運算是一種最常見的工作量證明機制。工作量證明機制主要利用哈希運算,運用其復雜度,給定初始的哈希值,進行簡單的值遞增運算,利用哈希算法求解,直到找到滿足條件的碰撞值。不同的哈希算法求得的碰撞值長度不同,所需工作量和安全性能也不同。碰撞值的長度越長,則所需的工作量越大。對于同一個哈希算法,可以設定哈希值前N位為0的個數來調節運算難度,比特幣就是根據這一原理調節挖礦難度的。工作量證明需要先確認后共識,這種方法要耗費大量的算力,從而造成能源浪費,確認時間長,交易吞吐量有限。
5 結論
本文主要對當前區塊鏈技術的發展和特點進行了闡述,并且對區塊鏈的關鍵技術:共識算法進行研究分析,闡述了四種主要的共識算法(POW、POS、DOPS和PBFT)的基本原理及各自的特點,并對一些算法進行了算法缺陷分析:
(1)拜占庭容錯算法不適用于大型公有鏈網絡及網絡速度較低的網絡環境。
(2)工作量證明雖然算法簡單,但是造成能源浪費。
參考文獻
[1]馬小峰.區塊鏈技術原理與實現[M].機械工業出版社,2020 (01).
[2]黃宇翔,梁志宏,黃芯,孫永科.基于區塊鏈的供應鏈可信數據管理[J].計算機系統應用,2018 (12).
[3]邵奇峰,金澈清,張召,錢衛寧,周傲英.區塊鏈技術:架構及進展[J].計算機學報,2018 (05).
作者簡介
郭雨(1988-),女,吉林省人。碩士學位,吉林建筑科技學院助教。研究方向為算法研究與分析。