區塊鏈與密碼學全民課堂第2-5講:區塊鏈基礎技術大剖析之共識演算法(一)

買賣虛擬貨幣

導語:本課堂用通俗易懂的系列內容為大家呈現區塊鏈與密碼學領域相關知識。這裡有知識也有故事,從感興趣到有樂趣,全民課堂等你來學。

這個系列中的課程內容首先從比特幣著手進行入門介紹,再延伸至區塊鏈的相關技術原理與發展趨勢,然後深入淺出地依次介紹在區塊鏈中應用的各類密碼學技術。歡迎大家訂閱本公眾號,持續進行學習。

【本課堂內容全部選編自PlatON首席密碼學家、武漢大學國家網路安全學院教授、博士生導師何德彪教授的《區塊鏈與密碼學》授課講義、教材及網際網路,版權歸屬其原作者所有,如有侵權請立即與我們聯絡,我們將及時處理。】

2.4.4

共識演算法

新一期圖學院來啦!在上一期我們講到數字簽名,這一期我們將細說區塊鏈的“靈魂”——共識演算法,顧名思義,共識演算法的作用就是用演算法產生共識。

要熟悉共識演算法,首先我們要了解區塊鏈為什麼需要共識?

之前的課堂中講到位元村透過村民記賬來解決信任問題,但是所有節點都參與記錄資料,那麼最終以誰的記錄為準?或者說,怎麼保證所有節點最終都記錄一份相同的正確資料,即達成共識?

在傳統的中心化系統中,因為有權威的中心節點背書,因此可以以中心節點記錄的資料為準,其他節點僅簡單複製中心節點的資料即可,很容易達成共識。比如現實生活中的行業老大哥和政府部門都具有權威話語權,他們的資料大家都認可,具有一言九鼎之功效。

然而在區塊鏈這樣的去中心化系統中,並不存在中心權威節點,所有節點對等地參與到共識過程之中。大家都一樣,我憑啥聽你的?有可能誰也不服誰。

由於參與的各個節點的自身狀態和所處網路環境不盡相同,而交易資訊的傳遞又需要時間,並且訊息傳遞本身不可靠,因此,每個節點接收到的需要記錄的交易內容和順序也難以保持一致。

就如同大家都在一個場地開會,但大家的身份、想法、使用的手機型號都不一樣,全部達成統一的概率很小,但區塊鏈每一次記賬必須達成共識。

更不用說,由於區塊鏈中參與的節點的身份難以控制,還可能會出現惡意節點故意阻礙訊息傳遞或者傳送不一致的資訊給不同節點,以干擾整個區塊鏈系統的記賬一致性,從而從中獲利的情況。

因此,區塊鏈系統的記賬一致性問題,或者說共識問題,是一個十分關鍵的問題,它關係著整個區塊鏈系統的正確性和安全性。

既然區塊鏈需要共識演算法作為統一大家意見的靈魂歌手,那麼共識演算法都有哪些呢?

當前區塊鏈系統的共識演算法有許多種,主要可以歸類為如下四大類:

工作量證明(Proof of Work,PoW)類的共識演算法

Po*的憑證類共識演算法

拜占庭容錯(ByzantineFault Tolerance,BFT)類演算法

結合可信執行環境的共識演算法

接下來本節將分別對這前兩類演算法進行簡要的介紹。之後的一講我們再聊後兩類演算法。

PoW類共識演算法

PoW類的共識演算法主要包括區塊鏈鼻祖比特幣所採用的PoW共識及一些類似專案(如萊特幣等)的變種PoW,即為大家所熟知的“挖礦”類演算法。

這類共識演算法的核心思想實際是所有節點競爭記賬權,而對於每一批次的記賬(或者說,挖出一個區塊)都賦予一“難題”,要求只有能夠解出這個難題的節點挖出的區塊才是有效的。

同時,所有節點都不斷地透過試圖解決難題來產生自己的區塊並將自己的區塊追加在現有的區塊鏈之後,但全網路中只有最長的鏈才被認為是合法且正確的。

比特幣系統設計了以每個節點的計算能力即“算力”來競爭記賬權的機制.在比特幣系統中,大約每10分鐘進行一輪算力競賽,競賽的勝利者,就獲得一次記賬的權力,並向其他節點同步新增賬本資訊。

在一個去中心化的系統中,誰有權判定競爭的結果呢?比特幣系統是透過一個稱為“工作量證明”( Proof of Work, PoW)的機制完成的。

簡單地說,PoW就是一份確認工作端做過一定量工作的證明。PoW系統的主要特徵是計算的不對稱性。工作端需要做一定難度的工作得出一個結果,驗證方卻很容易透過結果來檢查工作端是不是做了相應的工作。

舉個例子,給定字串“bockchain”,我們給出的工作量要求是,可以在這個字串後面連線一個稱為”你真好看(nonce)“的整數值串,對連線後的字串進行”乾坤大挪移(SHA256)“雜湊運算,如果得到的雜湊結果(以十六進位制的形式表示)是以若干個0開頭的,則驗證透過,為了達到這個工作量證明的目標,我們需要不停地遞增”你真好看(nonce)”值,對得到的新字串進行”乾坤大挪移(SHA256)“雜湊運算。

問題:什麼是”乾坤大挪移(SHA256)“雜湊運算?

答案:請見【圖學院】區塊鏈與密碼學全民課堂第1-4講:比特幣的交易

PoW背後的基本概念很簡單:工程端提交已知難於計算但易於驗證的計算結果,而其他任何人都能透過驗證這個答案就確信工作端為了求的結果已經完成了量相當大的計算工作.但PoW機制存在明顯的弊端。

一方面,PoW的前提是節點和算力是均勻分佈的,但隨著人們將CPU挖礦逐漸升級到GPU,FPGA,ASIC礦機挖礦,算力越來越集中。

另一方面, PoW太浪費資源了。比特幣網路每秒可完成數百萬億次SHA256計算,但這些計算除了使惡意攻擊者不能輕易地偽裝成幾百萬個節點和打垮比特幣網路,並沒有任何實際或科學價值。

Po*的憑證類共識演算法

有鑑於此,人們引入“憑證”的概念,提出Po*類演算法,其中*表示演算法使用憑證的類比,權益證明( Proof of Stake, PoS)就是其中的一種方法。就像是股票也是一種憑證,我買了股票就享有公司的投票和分紅權。

權益證明要求使用者證明擁有某些數量的貨幣(即對貨幣的權益),點點( Peercoin)是首先採用權益證明的Token,儘管它依然使用工作量證明挖礦。

點點在SHA256的雜湊運算的難度方面引入了幣齡的概念,使得難度與交易輸入的幣齡成反比.在點點中,幣齡被定義為幣的數量與幣所擁有的天數的乘積,使得幣齡能夠反映交易時刻使用者所擁有的貨幣數量。

點點的權益證明機制結合了隨機化與幣齡的概念,未使用至少30天的幣可以參與競爭下一區塊,越久和越大的幣集有更大的可能去簽名下一區塊。

其它演算法:Algorand、Quroboros等都是目前熱門的PoS類共識演算法。以太坊2.0也會使用PoS類共識演算法。

Po*類演算法缺點

提高了演算法的中心化程度,但違背了區塊鏈“去中心化”的思想。

礦工激勵不夠明確,節點缺乏參與動力

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;