從蒸汽機車到高鐵,從POW 到SPOS 的共識機制歷史
崇慕
2018-09-19 01:01
本文约8738字,阅读全文需要约35分钟
Casper 還未到,V神又要改共識機制?這是段你不能錯過的歷史。

編者按:本文作者:王秋林、崇慕,經授權編輯、轉載。

共識機制是區塊鏈的核心技術之一,不論在哪個發展階段,都應是我們關注的重點。

共識機制讓分佈式網絡能可靠地處理一個或多個節點的故障。失敗的節點可能會表現出一種常常被忽略的行為類型——也就是說,將衝突的信息發送到系統的其他節點。有了共識機制,則能讓所有節點取得共識,進而排除衝突信息,保證節點信息狀態的一致性。

區塊鏈最早採用的共識機制是由比特幣引入的PoW,後隨時間推移和技術發展,Sunny King 為解決PoW 種種缺點而推出PoS 機制(落地表現是點點幣)。後來,V神受此啟發做了以太坊,BM 在此基礎上開發了DPoS。直到最近Sunny King 回歸併推出全新的共識機制SPoS。下面,我就帶著大家一起來了解下各共識機制的發展史。

1.中本聰的比特幣和POW

POW,Proof Of Work(工作量證明),最早由源自用於反垃圾郵件的 HashCash 算法。密碼學家戴偉於1998 年將POW 結合簽名交易技術提出了B-money 設計,這是POW 機製作為數字貨幣共識機制第一次被提出,只是B-money 沒有很好的解決區塊鏈中著名的“雙重花費”問題。

到了2008 年,中本聰融合了密碼學和去中心化技術的精髓,發表了具有劃時代意義的論文《btc:一種點對點的電子現金系統》,提出BlockChain 這種數據結構。 BlockChain 能無需信任,建立一套去中心化的電子交易體系。到了2009 年1 月,btc 網絡正式上線,版本開源客戶端發表,比特幣由此誕生。

比特幣採用POW 共識,它規定,礦工們在處理交易數據(也即對數據進行哈希)的同時,不斷將打包的交易數據添加一個隨機數並進行哈希計算,求得一位前23 位為0 的哈希值,作為區塊的nonce。當全網有一位礦工哈希出nonce 時,他就會把自己打包的區塊公佈出去,其他節點收到並驗證區塊後就會一致認為這個區塊接到了區塊鏈上,就繼續進行下一個區塊的打包和哈希計算。

由於要得出符合要求的nonce 很難,因此得以保證在一段時間內,系統中只能出現少數合法提案。同時,這些少量的合法提案會在網絡中進行廣播,收到的用戶進行驗證後會基於它認為的最長鏈上繼續計算。因此,系統中雖然可能出現鏈的分叉(Fork),但最終會有一條鏈成為最長鏈。

Hash 問題具有不可逆的特點,因此,目前除了暴力計算外,還沒有有效的解決算法。反之,如果獲得符合要求的nonce,則說明在概率上付出了對應的算力。誰的算力多,誰最先解決問題的概率就越大。當掌握超過全網一半算力時,從概率上就能控制鏈的走向。這也是所謂51% 攻擊的由來。

作為最早出現的區塊鏈貨幣,比特幣總有不完善之處。比特幣為了交易的安全性而犧牲記賬效率採用了POW 機制,但隨著節點的增加,挖礦所導致的高能耗逐漸暴露出來。時至今日,全球比特幣網絡消耗的能量幾乎等於三峽大壩發電量的2/3。

POW 的優點:

  1. 去中心化,將記賬權公平的分派到其他節點。節點能夠獲得的幣的數量,取決於其挖礦貢獻的有效工作,也就是說,節點用於挖礦的礦機的性能越好,分給該節點的收益就會越多,這就是根據節點的工作證明來執行幣的分配方式。

  2. 安全性高,破壞系統需要投入極大的成本,如果想作弊,要有壓倒大多數人的算力(51%攻擊)。因為作弊要付出一定成本,作弊者就會謹慎對待了。在比特幣的POW機制中,由於獲得計算結果的概率趨近於所佔算力比例,因此在不掌握51%以上算力的前提下,礦工欺詐的成本要顯著高於誠實挖礦,甚至不可能完成欺詐(由於概率過低)。

POW的缺點:

  1. 挖礦造成大量的資源浪費。目前bitcoin 已經吸引全球大部分的算力, 。這讓依據算力公平分配獎勵的機制,演變為了對礦機算力的大舉投入,扭曲了中本聰的設計初衷。

  2. 需要等待多個確認,網絡性能太低。比特幣區塊鏈的共識達成的周期較長(10分鐘),現在每秒交易量上限是7 筆,不適合商業應用(visa 的平均每秒交易量上萬,支付寶峰值接近9 萬)

  3. POW 共識算法算力集中化,慢慢的偏離了原來的去中心化軌道。從比特幣擴容之爭可以看到,算力高的大型礦池是主人,而持幣的人沒有參與決定的權利,比特幣即將失去“去中心化”的標籤。

Pow 還有很多的缺點,其中的一些問題有無更好的解決方案呢?且看Pos。

2.Sunny king 的點點幣和POS

比特幣之後,很多模仿比特幣的區塊鏈貨幣也出現了,如萊特幣等,但這些貨幣都採用了低效率高能耗的POW 機制,區塊鏈領域至此很久都沒有革命性的創新。

直到2012 年,Sunny King 發布了點點幣(Peercoin,也被稱為PPCoin,PPC),並在點點幣中首次提出POS 共識機制,一改POW 當道的歷史,而點點幣也作為第一個採用POS的區塊鏈貨幣而被載入歷史。此後出現的以太坊和EOS 都只是Sunny King 思想的延續,更不用說其他公鏈了。

POS,Proof of Stake(權益證明機制),是POW 的升級共識機制。 POS 根據每個節點所佔代幣的比例和時間來決定記賬權和獎勵;等比例的降低挖礦難度,從而加快找隨機數的速度,因此POS不需要大量算力來維持網絡安全。

簡單說來就是:持有越多,獲得越多。

POS 試圖解決POW 機制中大量資源被浪費的情況。這種機制通過計算節點所持有幣佔總幣數的百分比以及佔有幣數的幣齡來決定該節點獲得本次記賬權利的概率。其中幣齡=持有幣的數量*持有這些數量幣所經過的時間,一旦幣被轉賬了,該用戶轉出的幣所涉及的幣齡就會歸零。

在POW 機制中,由於想要找到符合條件的nonce 往往需要花費大量的電力和時間成本。因此,為了使每個區塊更快被生成,POS 機制去掉了窮舉nonce 的過程,繼而採用以下更快速的算法:

SHA256(SHA256(Bprev),A,t)≤balance(A)m

H 某個哈希函數

t 為UTC 時間戳

Bprev 指的是上一個區塊

balance(A) 代表賬戶A 的賬戶餘額

等式右邊m 是某個固定的實數,唯一可以不斷調整的參數是t。因此,當balance(A)越大,找到合理t 的概率越大。網絡中,普遍對於t 的範圍有所限制,如可以嘗試的時間戳不能超過標準時間戳1 小時,也就說,一個節點可以嘗試7200 次,來找到一個符合條件的t,如果找不到即可放棄。因此,在PoS 中,一個賬戶的餘額越多,在同等算力下,就越容易發現下一個區塊。

從上面的描述可以看出,節點記賬權的獲得難度與節點持有的權益成反比,相對於POW,POS 共識在一定程度減少了數學運算帶來的資源消耗,出塊性能也得到了相應提升,但依然是基於哈希運算競爭獲取記賬權的方式,可監管性弱。該共識機制容錯性和POW 相同。

POS 的優點:

1)在一定程度上縮短了共識達成的時間。

2)不再需要大量消耗能源挖礦。

3)POS 當然也能防作弊,因為如果一名持有51% 以上股權的人作弊,相當於他坑了自己,因為一個人自己不會殺死自己的錢。

4)防止算力中心化導致礦工作惡。

POS 的缺點:

1)還是需要挖礦,本質上沒有解決商業應用的痛點;

2)所有的確認都只是一個概率上的表達,而不是一個確定性的事情,理論上有可能存在其他攻擊影響。

3)極端的情況下會帶來中心化的結果。 POS 機制由股東自己保證安全,工作原理是利益捆綁。在這個模式下,不持有POS 的人無法對POS 構成威脅。 POS 的安全取決於持有者,和其他任何因素無關。 POS 雖然解決了POW 的能耗的問題,但全節點確認會讓區塊確認的效率提不起來,且時間越長,也越容易產生馬太效應,即持有幣越多的人會獲得更多的幣獎勵,從而加大貧富差距,最終產生超過50% 的中心化節點,被動演化為非預期的中心化的結果。

4)惡意的節點驗證者可以在沒有任何損失的情況下去把自己的幣押在分叉鏈上推動硬分叉,該問題也被稱為“無利害關係("nothing at stake")”問題(而pow 機制下,礦工分叉需要消耗算力資源,因此不會出現此種情況)。

Pos 開創了新共識的先河,創新較強但也不太完善。且看Casper 如何進化?

3.舉步維艱的Eth 和Casper 共識機制

從2014 年1 月V 神發布Eth 白皮書《以太坊:一個下一代加密貨幣和去中心化應用平台》開始,使用Eth 的人越來越多,很多人在Eth 上發布了各種智能合約,這些智能合約的運行給基於POW 機制的Eth 網絡帶來了極大的壓力,Eth 網絡擁堵不斷,Gas 價格高企,由此讓網絡確認時間大幅延長、DAPP 運行成本飆升。整個以太坊網絡隨著用戶的增長和DAPP 的增加,逐步陷入了困境。

為了改善Eth 的運行效率,Eth 的創始人V 神計劃在以太坊中引入改進版的POS 共識,並逐步取代目前所使用的POW 共識,這個改進版的POS 被稱為Casper。

Casper 是一種基於保證金的經濟激勵共識協議(security-deposit based economic consensus protocol),是以太坊計劃在未來採用的共識機制,屬於POS 的一個分支擴展,旨在解決POS 中存在的無利害關係問題("nothing at stake",即驗證者通過在給定高度為多個有衝突的區塊投票,從而無需代價地破壞網絡安全性)。

Casper 協議中的節點,稱為“鎖定保證金的驗證人(bonded validators)”,必須先繳納保證金(這一步叫做鎖定保證金,"bonding")才可以參與出塊和共識形成。出塊是一個獨立於其它所有事件而發生的過程:驗證人收集交易,當輪到他們出塊的時間時,他們就製造一個區塊,簽名,然後發送到網絡上。 Casper 共識協議通過對這些保證金的直接控制來約束驗證人的行為。

具體來說就是,如果一個驗證人作出了任何Casper 認為“無效”的事情,他的保證金將被罰沒,出塊和參與共識的權利也會被取消。保證金的引入解決了"無利害關係問題",也就是經典POS 協議中做壞事的代價很低的問題。現在有了代價,而且被客觀證明做錯事的驗證人將會付出這個代價。

容易發現,只有在驗證人當前已繳納保證金的情況下他的簽名才有意義(economically meaningful)。這代表客戶端只能依賴他們知道的鎖定保證金的驗證人的簽名。因此當客戶端接收和鑑別共識數據時,共識認可的鏈必須起源於出自當前鎖定保證金的驗證人的塊。

在POW 協議中共識認可的鏈則是起源於創世塊——只要你知道創世塊的數據你就可以鑑別出共識認可的鏈。這裡,只要你知道當前鎖定保證金的驗證人,你就可以鑑別出共識認可的鏈。不知道當前鎖定保證金的驗證人列表的客戶端必須先通過另外的信道獲取這個列表。這個限制通過要求所有人用當前信息鑑別共識解決了“遠程攻擊(long range attack)”問題。

驗證人列表隨著驗證人保證金不斷的鎖定,罰沒,解鎖而變動。如果客戶端離線過長時間,它的驗證人列表就會由於過時而不能用來鑑別共識。如果客戶端經常在線,則能夠與最新的驗證人列表保持同步,但問題是在第一次同步之前,客戶端還是需要從其他信道獲取最新鎖定保證金的驗證人列表。

這個“需要從其他信道鑑別共識至少一次”的性質,正是V 神所說的“弱主觀性(weak subjectivity)”。在我們的上下文中,如果信息可以在協議之內被驗證,則可稱之為“客觀的”;如果信息必須依賴協議外的手段才可驗證,則稱為“主觀的”。在弱主觀性共識協議中,分叉選擇規則是有狀態的,因此客戶端必須初始化(有些時候是更新)這個狀態才能鑑別共識。在這裡,這個狀態被用來辨認當前鎖定保證金的驗證人(更精確的說法可能是當前驗證人列表的密碼學哈希)。

2018 年8 月31 日,以太坊網絡的14 位核心開發人員決定通過視頻通話,宣布推遲Casper 的開發12 個月。

Casper 的優點:

  • 系統可以快速懲罰節點的作惡行為,進而避免了無利害攻擊。

  • 幫助以太坊大幅提高共識達成的效率,並使以太坊從根本的共識機制上,區別於比特幣。

Casper 的缺點:

設計比較複雜,更容易出現漏洞

4. BM 的EOS 和DPOS 共識機制

由於比特幣的POW 機制導致運行效率極度低下,在結合了POS 技術的基礎上,Daniel Larimer(BM)決定在區塊鏈技術中引入一個新的共識機制——DPOS,來取代交易速度極慢的POW。 2014 年2 月,BM 發布了Bitshares(也稱為BTS,比特股),首次採用了DPOS 技術。但Bitshares 因為技術不成熟而導致了一系列問題。

後來,被稱為區塊鏈2.0 的以太坊也很難支持起一個龐大的去中心化商業應用生態。然後,BM 決定以以太坊為對手,建立一個區塊鏈操作系統EOS,這個新系統融入了BM 對區塊鏈技術的理解和總結,使用了改進後的DPOS 共識機制。

DPOS,Delegated Proof of Stake(委任權益證明機制),是基於POW 及POS 的基礎上創建的一種新型共識算法。它既能解決POW 能耗過大的問題,也能避免POS 權益分配下可能產生的“信任天平”偏頗的問題。

DPoS 中的“D”為“Delegated”,意為授權、委託;DPoS 與PoS 的主要區別是所有持幣者選舉若干代表,由代表參與記賬。

EOS 定義民主選擇出的代表為區塊鍊網絡裡的區塊驗證者,“代表”這個術語可以與“區塊驗證者”等同使用。 EOS 規定由21 位代表作為網絡中的主節點,新建區塊,簽署並驗證交易。這些代表是由EOS 代幣持有者投票成立的“授權事務所”。 21 位“委託者”的設計,是因過多的委託者(比如BTS 所採用101 個)會分散EOS 代幣持有者的注意力,造成代幣持有者決策力的削弱。

使用EOS.IO 軟件,區塊以126 個區塊為一輪(有21 個生產者,每個生產者可以在三秒的時間片內生產6 個區塊,平均每0.5 秒一個區塊)。在每一輪的開始,21 個區塊生產者通過token 持有者的投票被選中。選中的生產者依據商定好的順序生產區塊,這個順序由15 個或者更多的生產者商定。

理論上這樣可以極大提升系統性能,但也帶來了網絡延遲問題:0.5 秒的確認時間會導致下一個出塊者還沒有收到上一個出塊者的區塊,就該生產下一個區塊了,那麼下一個出塊者會忽略上一個區塊,導致區塊鏈分叉(相同區塊高度有兩個區塊)。比如:中國見證人後面可能就是美國見證人,中美網絡延遲有時高達300 ms,很有可能到時美國見證人沒有收到中國見證人的區塊時,就該出塊了,那麼中國見證人的區塊就會被略過。

為解決這個問題,BM 將原先的隨機出塊順序改為由見證人商議後確定的出塊順序,這樣網絡連接延遲較低的見證人之間就可以相鄰出塊。比如:日本的見證人後面是中國的見證人,再後面是俄羅斯的見證人,再後面是英國的見證人,再後面是美國的見證人。這樣可以大大降低見證人之間的網絡延遲。使得0.5 秒的出塊速度有了理論上的可能。

如果一個生產者錯過了一個區塊,並在24 小時內沒有生產任何區塊,該生產者將會被移除。直到這些“宕機”的生產者們及時通知區塊鏈,他們將打算再次生產區塊才被重新加入。通過不安排那些不夠可靠的節點,盡可能的減少錯過區塊創建,來讓整個網絡運行得更平穩。

DPOS 優點:

  1. 能將維繫網絡運行的能源消耗降到最低,以一種低成本的方式來管理整個鏈上的運行,這就很大程度上解決了POW 的能源耗損問題。

  2. 更快的出塊速度,實現平均0.5 秒一個的出塊速度,大幅提高了系統的運行效率和吞吐量。

  3. 更加“去中心化”的管理方式,將區塊鍊網絡運行的決定權分散到全網的各個節點手中,這就很大程度上避免了POS 容易出現的被莊家操縱的“控股”現象。 DPOS 共識機制的出現,將通過實施區塊鏈上的“民主”來對抗“中心化”所產生的負面效應,用被公選的“弱中心化”方式來提高全網運維的效率。

DPOS 缺點:

  1. 持股人投票的積極性並不高。絕大多數持股人(90%+)從未參與投票。這是因為投票需要時間、精力以及技能,而這恰恰是大多數投資者所缺乏的。

  2. 實現複雜、中間步驟較多,對於壞節點的處理存在諸多困難。社區選舉不能及時有效的阻止一些破壞節點的出現,給網絡造成安全隱患。

Dpos 雖然做的效率很高,但缺點也不容小視。

5. Sunny King 全新的SPOS 共識機制

隨著區塊鏈爆發,世界上很多天才在Sunny King 的基礎上發明,發明出各種變形POS 來。但這些都只是針對POS 的一些小修改,還有著自己各種各樣的問題,並不能支撐未來的大規模高性能商業級區塊鏈。

Sunny King 也在不斷的反思著POS 的不完善之處,在其他人為了改進POS 而焦頭爛額的時候,Sunny King 近日帶著他反思多年的成果回歸了:這個成果就是POS 的下一個版本,這個版本或能開創一個新的時代,支撐未來的區塊鏈經濟。

這個新版本的POS 具備更高的性能和安全性,是次世代的共識機制,名為SPOS。

SPOS,supernode proof-of-stake(超級節點權益證明機制),將在區塊鏈數據雲項目VEE 中引入。

SPOS 的一大特點就是採用了固定的出塊時間。該系統有60 個節點,其中15 個作為主節點,45 個為備用節點。每個節點都具備極高的運算性能和網絡帶寬,從而讓整個系統具備極高的吞吐量和運行效率。

整個系統具備60 個鑄幣槽,每個鑄幣槽代表了在一分鐘內一個固定時間段出塊的權限,在系統工作時,各個槽按順序(由獲得該鑄幣槽所有權的節點)出塊。

每個節點可以競爭各個鑄幣槽的使用權。由於每個節點對應了一個VEE 賬戶,而每個賬戶下面可以綁定9 個錢包地址,在競爭時是用其中一個地址去競爭一個槽,而且一個地址也只能競爭一個槽,所以每個節點最多可以同時佔有9 個鑄幣槽,這樣可以防止一個節點佔有全部的鑄幣槽。

SPOS 系統在運行時其實就是各個節點輪流出塊,這就可以把某個節點的偶發性失效對整個系統的影響降到最小。

由於每個槽上的節點需要按照時間來出塊,因此各個節點間的時間同步就顯得非常的重要,所以採用了網絡時間協議(Network Time Protocol(NTP))來確保各個節點能按順序進行出塊。

NTP 是用來使計算機時間同步化的一種協議,它可以使計算機對其服務器或時鐘源(如石英鐘,GPS 等等)做同步化,它可以提供高精準度的時間校正(LAN 上與標準間差小於1 毫秒,WAN 上幾十毫秒),且可由加密確認的方式來防止惡毒的協議攻擊。 NTP 的目的是在無序的Internet 環境中提供精確和健壯的時間服務。

節點可以在任意時刻發起對於一個鑄幣槽使用權的競爭,但為了防止競爭機制被濫用,因此系統會收取較高額度的競爭費用作為威懾。當一個節點作為挑戰者向一個鑄幣槽的使用權的所有者發起競爭申請,SPOS 協議會比較挑戰者在該鑄幣槽上的賬戶的權益(stake)和被挑戰的挖礦節點在該鑄幣槽上的賬戶的權益(stake),然後決定競爭的勝出者,並將該鑄幣槽的使用權交給勝出的一方。

雖然競爭的勝出方是通過較多的權益(stake)在競爭中獲勝的,但這些權益的流動性仍是可以保證的,鑄幣節點隨後是可以從自己的賬戶地址轉出權益的。

即使是從POS 協議的出發點來看,將同一筆權益同時轉給不同地址、鑄幣槽的競爭也是被禁止的,這等於是雙花攻擊。

然而由於權益具備流動性,有些節點為了鑄幣槽所有權的競爭,而快速的將權益從一個地址轉賬到其他地址用於其他鑄幣槽的競爭,從而形成了繁忙競爭攻擊(busy contention attack)。

為了防止這一攻擊,在對鑄幣槽的競爭中對於地址賬戶餘額的衡量標準採用了余額在時間上的累積均值。如果讓權益快速的流動,則地址賬戶的積累均值就會隨時間的推移而大幅下降,從而大幅降低了該地址賬戶面對挑戰時的競爭力,這樣當節點發起繁忙競爭攻擊時就會導致權益流出的地址賬戶很容易就喪失了鑄幣權,從而阻止節點發動此類攻擊。

用戶可以將自己的權益(stake)借給節點,當節點通過出塊獲得收益時,可以按照比例給權益的借出方分紅。雖然節點的賬戶餘額在計算時是算上了所租借的權益,但是節點賬戶無權使用/轉移這部分權益,權益的借出方則可以隨時撤回這些借出的權益。

如果一個節點上租借來的權益數量上漲、那麼由於單個節點的收益是固定的,那麼總權益的上漲勢必導致分紅率的下降、進而遏制租借權益的上漲,從而形成一套內在的自我調節機制。

這個系統在設計上看起來更加中心化,但King 也設計出了一套機制保障網絡的安全,確保每一個超級節點(supernode)都有平等的權力,防止某個節點權力過大。

如果將POW 比喻成陳舊緩慢的蒸汽機車,那麼SPOS 就是高速舒適的現代化高鐵,是次世代的區塊鏈共識機制。

我們總結了部分SPOS 機制:

  • SPOS 超級節點按固定順序出塊;

  • 以15 個超級節點開啟主網,隨著網絡增長,超級節點數增長到30-60;

  • 塊與塊之間間隔是固定的,這樣帶來了更佳穩定的延遲;

  • 60 個鑄幣槽,分別代表了一分鐘的60 秒;

  • 搶奪/釋放的機制,也讓鑄幣權的競爭更公平(相較DPOS,就是比幣數,幣可以在多個節點重複投票等問題);

  • 鑄幣平均算法MAB,可以支撐幣權更好的流動性,不讓幣往一個地方跑,保持去中心化,保護網絡安全;

SPOS 機制來帶的好處:

  • SPOS 是為高性能區塊鏈所設計的底層結構;

  • 固定的塊間隔設計,帶來的是兼具高吞吐量和更佳穩定的區塊鍊網絡(其他網絡的高吞吐都無法保證穩定性,最終也是支持不了高性能業務運行的);

  • 冷鑄幣的設計,保證了區塊鏈更安全的性能;

  • 經濟系統的設計,鼓勵生態系統持續投入升級超級節點,這樣保證了系統的運行效果將不斷提升;

區塊鏈技術最大的重點就是共識。我們看到共識技術的不斷進步,這也是極客精神的體現。

注:本文主要作者:王秋林,早期區塊鏈技術開發者,開發多款區塊鏈遊戲,曾在知名東京軟件公司研發工作。

內容大綱:崇慕,區塊鏈開發者,技術生態研究者,遊戲蠻牛創始人,dll.io創始人。

崇慕
作者文库