前言
以下文章有關DPoS共識機制的部分擷取自DPOS Consensus Algorithm - The Missing White Paper一文,有興趣的讀者可以點擊連結閱讀原文。本文并同時參考了《區(qū)塊鏈與新經(jīng)濟》這本書的內容撰寫。
暨復式簿記后,記帳上的第二次重大革命--分布式帳本
有人說過:“復式簿記法”(double-entry bookkeeping ledger)是人類歷史上最偉大的發(fā)明,因為它促進了整個資本主義的興盛。
復式簿記法是在500年前被發(fā)明出來的,它最簡單的概念就是:有進必有出、借貸必平衡,在結構上具有不重復、不遺漏的特征,便于審計(audit)。
沒有學過財務報表的人,可能會覺得這個概念聽起來很抽象。
先來看一張資產負債表(Balance Sheet) 長什么樣子?

左邊是資產,右邊是負債與股東權益,左邊與右邊的金額必定相等。
首先我在錢包里放了1000元,這時我的資產負債表就會變成:
資產 | 負債與權益 |
---|---|
現(xiàn)金: 1000 | 權益: 1000 |
我在帳戶內投入了1000元,使可用現(xiàn)金多出1000元。
今天我拿了100元去買咖啡,當這筆交易產生時,我會借記費用、貸記現(xiàn)金,費用在結算時會作為股東權益的減少,這時我的資產負債表就會變成:
資產 | 負債與權益 |
---|---|
現(xiàn)金: ?900 | 權益: 900 |
分布式記帳技術(也就是區(qū)塊鏈技術)沿襲了復式簿記法的精神,每一筆交易必定有輸入(Inputs)與輸出(Outputs),輸入是“錢從哪里來”,輸出則是“錢流向哪里”(如下圖所示)。
在分布式帳本的世界里,每一筆交易要被驗證,記錄到區(qū)塊中,最重要的核心過程就是達成網(wǎng)絡中各節(jié)點(node)的“共識”。
共識算法
共識算法目前最主要有三種:PoW、PoS、DPoS。
PoW
PoW 工作量證明是最早被比特幣采用的共識算法,背后運作的原理是為信息的傳遞加入了成本,借此減少假信息傳遞的誘因。工作量證明的核心特征是不對稱性,驗證者在大量地試錯(Trial and Error)后才能找到正確的數(shù)值(通常要花10分鐘左右),而當數(shù)值被找出來后,其他人可以輕易地反向驗證這個值的正確性。
PoW最大的缺點在于,在一個有效的信息被驗證之前,會有大量的無效值先被計算出來,浪費了大量的電力能源,除了運算不具效率外,也很容易使算力集中在少數(shù)人手里,即資本足夠大的少數(shù)礦池擁有記帳權。
PoW的缺點:耗能、效率低、記帳權向資本集中。
PoS
PoS 權益證明隱含的概念是:帳本理應由持有最大經(jīng)濟利益的人去維護。如果是以一家企業(yè)作為比方,持有最大經(jīng)濟利益的就是股東,所以公司的每個重大決策都必須股東會投票決議通過后才能執(zhí)行(看議案的重大程度,可以是1/2以上表決通過,或是2/3)。
PoS計算權重靠的是“幣天數(shù)銷毀量”
幣天數(shù)代表一個特定的幣距離最后一次在網(wǎng)路上交易的時間。假設我在2017/1/1買了10個幣,一直到2017/6/30前我都沒有交易。我在2017/7/1用10個幣買了一杯咖啡,這時我的“幣天數(shù)銷毀量”就是10*180天,總量共1,800單位。
以挖礦來說,某個礦工節(jié)點,一旦挖到新區(qū)塊后,他的幣天數(shù)就會被歸零,并重新開始計數(shù)(幣天銷毀)。同時間一起參與挖礦的其他礦工,雖然沒有成功挖到區(qū)塊,但他的幣因為沒有產生交易,所以幣天數(shù)還能繼續(xù)保留計算。
在給定的時間點下,只存在有限的幣天數(shù),幣天數(shù)在那些長期持有大量貨幣結余的人手中持續(xù)增加。幣天數(shù)可以被視為在網(wǎng)絡中權益的代表。每當這些幣有交易時,幣天數(shù)即被銷毀,因此不能被重復使用。
這和一般股權制的企業(yè)相比下,會出現(xiàn)一個問題,一般股份公司是按照某個時間基準日時,股東名冊的持股數(shù)量,決定股東在股東會上的表決權有多少;而在PoS制度下,持幣期間很長的人理所當然地說話就可以比較大聲,漸漸會演變成只有長期持有的大股東能說話,小股東完全沒有置喙的余地。大多數(shù)資源與記帳權集中在少數(shù)人手里,這個幣的流通性也會漸漸衰弱。
PoS: 解決了PoW的效率難題(約每5秒產生一個區(qū)塊),但只要時間一久,最終也會有記帳權分配不均的現(xiàn)象。因為只要夠早進入、持幣夠久,就有話語權,權力最終還是向資本集中。
DPoS
DPoS 股份授權證明機制引入了“受托人”的角色。
DPoS 的運作機制如下:
所有持幣者先選出受托人負責簽署區(qū)塊:選舉過程比較類似由股東會選舉出董事會(101人代表),代替股東會做出日常營運決策。授權董事會后,決策會更有效率 (相較于PoW每10分鐘產生一個區(qū)塊,DPoS每3秒鐘即可產生一個區(qū)塊。)
與PoW相同,DPoS的規(guī)則也是最長鏈勝出。其中每個受托人必須按照生產排程,輪流產生區(qū)塊,拿一間工廠作為比方,假設排程排定A、B、C分別輪早、中、晚班生產,A在晚上是無法刷門禁卡進入廠房生產的,同樣地,C在早班時段也是無法進廠房的。

- 今天有一些惡意的節(jié)點生產了分叉區(qū)塊,假設A、C都是誠實的節(jié)點,只有B節(jié)點是惡意的,由于B產生區(qū)塊的速度(每9秒只能產生1個)慢于A、C合力產生區(qū)塊的速度(每9秒產生2個),根據(jù)最長鏈勝出的規(guī)則,誠實的節(jié)點還是會勝出。

- 同理,因為一個節(jié)點要產生重復兩個區(qū)塊的速度必定慢于誠實區(qū)塊產生的速度,所以根據(jù)最長鏈勝出的規(guī)則,誠實的節(jié)點還是會勝出。

- 如果今天A、B、C三個受托人的網(wǎng)絡有段時間是碎片化、各自為政的呢?在短期內的確有可能三鏈并行,但一旦網(wǎng)絡連結恢復,短鏈自然會向最長的鏈回歸。

因為受托可簽署人數(shù)為奇數(shù),所以兩大派系勢均力敵僵持不下的情況不會維持太久,最終勢必會有其中一方的鏈更長。
對惡意節(jié)點的懲罰
注冊成為候選受托人需要支付一筆保證金(約10 XTS),就像是參與民意代表選舉前繳納的保證金一樣,一般來說擔任受托人約兩周后才可達到損益平衡,這促進了受托人的穩(wěn)定性,確保至少會挖滿兩周的礦。
懲罰機制為:不按排程產生區(qū)塊的節(jié)點將在下一輪被投票剔除,也會被沒收之前繳納的保證金。
DPoS優(yōu)缺點:優(yōu)點是效率較PoW和PoS更高、產生區(qū)塊的速度更快;
缺點是雖然惡意的節(jié)點將在下一輪投票被踢出,但單個惡意區(qū)塊在短期仍有可能是有效的狀態(tài)。
短期雖然可能存在惡意區(qū)塊,但長期下來,可以透過受托人的自主選擇來回歸鏈條的有效性:
假定現(xiàn)在總共有3個受托人A、B、C,D加入排程后,只要確認之前的區(qū)塊中,有2/3以上個受托人遵循的鏈是哪條就可以了。

小結
DPoS制度下,汰換惡意節(jié)點的頻率是關鍵,雖然照上面的場景來看,長期都會回歸有效正確的區(qū)塊,但短期來看,惡意節(jié)點產生的glitch也可能對整體健全具有破壞性。