在共識上尋求共識—Dpos和兩軍悖論

買賣虛擬貨幣

前言:共識機制一直是區塊鏈領域最核心的問題之一。PoW、PoS、DPoS、PBFT等,不同的演算法都有自己的優劣點,在共識問題上的爭論從來就沒有停止過,這也是理解區塊鏈的關鍵問題所在。本文對於理解區塊鏈共識很有幫助,原文作者iang,源自於Steemit.com,由藍狐筆記社群李熙和翻譯。

鋪設基於區塊鏈的高效能金融生態系統的架構備受爭議,原因在於有很多方式可以選擇——集中式,分散式,無須許可,封閉式。

除開以上提及的這些,我們還有一個讓人煩惱的問題,就是如何應對競態條件(電腦科學術語:多程序間通訊中,兩個或多個程序對共享的資料進行讀或寫的操作時,最終的結果取決於這些程序的執行順序)。

不論和中涉及,總有一些你想做的事和其他人想做的事不能兼得。或者說,你想要某件事發生,並且想要其他人能知道這件事會發生,這種情況在電腦科學的世界被稱為兩軍悖論:

兩支各由將軍領導的軍隊準備進攻一座要塞。軍隊各自在城外的兩個山谷駐紮。有另一個山谷將這兩座山谷分割開來,兩支軍隊的將軍想要交流的唯一方式就是派出信使穿越這座山谷。

然而,中間的山谷被城中的守軍佔據,因此任何被排除的信使都有一定機率被駐紮在山谷中的守軍俘獲。當兩個將軍同意他們將進攻但還未就進攻時間達成共識時,他們必須滿足同時進攻的條件才能成功的拿下要塞。

因此他們必須與彼此交流已在進攻時間上達成共識,並且兩位將軍都必須知道另一位將軍也知道他們已經就此達成共識,原因在於確認收到對方訊息的這一條資訊也有同樣的概率丟失,這就導致:兩人需要就一個潛在的無限條資訊組成的資訊流需要達成共識。

思想實驗包含:考慮他們該怎樣達成共識。在這個最簡單的形式之中,已知一個將軍是領袖,決定進攻時間,並且必須將這個時間告知另外一位將軍。現在問題在於我們需要一套演算法能夠讓將軍用來傳送訊息和處理已被收到的訊息,並允許他們正確的涵蓋以下內容:

是的,我們將在已達成共識的時間發起進攻。

要做到這一點是很容易的。兩軍悖論的微妙之處在於設計一套真正安全並能滿足以上條件的系統是幾乎不可能的(引自:維基百科)

在區塊鏈中我們稱為的共識問題(同樣也可稱為協調問題),在金融密碼學的世界,被稱為雙重支付問題,而在資料庫中這被稱為原子性。也就是說,這在電腦科學是一個十分底層的問題,且並不是什麼新鮮事兒。

現在讓我們瞭解一下這個問題的前世今生:

中心化的雙重支付保護

加密金融中的原始機制是一個簡單的客戶-伺服器或受信任的第三方(比如SOX,一種支付系統),這就是說支援雙重支付的價值發行者(這個發行者是一種貨幣)僅僅依靠一個伺服器在雙重支付中進行調解。十分典型的是,請求遵循先入先出(FIFO)排隊方式,這在今天的資料庫已經是標準了。

圖1-SOX,一種早期的電子現金系統,這種系統使用了一種客戶-伺服器發行者(Issuer)的結構來解決雙重支付的問題

盲現金(BlindedCash)

一箇中心化雙重支付保護的顯著變種就是對貨幣的盲簽名,這個概念由David Chaum於上世紀80年代末期發明。盲貨幣作為一種貨幣token可以單獨被使用(可驗證),但是就像所有的資料一樣,Alice可以將其同時給Bob和Carol。

對Bob而言,針對這種情況的解決方案就是將其收到的貨幣退還給發行的伺服器,也就是印鈔廠,並索要被重新簽過名的另一份貨幣。同理,Carol也可以這麼做,甚至以更快的速度。

圖2-盲電子現金系統使用了複雜的數學

現在,盲簽名在被用於Token上時存在一個特殊把戲:當Token完成一次被修改的RSA加密演算法時,其能夠創造一個之前未被使用過的全新簽名,但這個簽名卻依然有效,因此這個貨幣依然是被承認的。

因此,盲簽名的“盲”字表示,貨幣的發行者不能追蹤Alice用這些貨幣幹了什麼,這顯然是十分有價值的!另一個關於電子現金的把戲是如果Alice確實嘗試兩次使用同一筆貨幣,造幣廠可以使用加密手段來將這兩筆被消費的貨幣合併,去掉匿名保護,並揪出罪魁禍首。

我涉及了部分關於盲雙倍支付的內容,因為這是一個非常複雜的用於管制雙重支付的系統中的一個例子,也因為這是我們誕生於上世紀80-90年代的金融密碼學領域的開端。

投票

多伺服器的選擇變得流行主要是為了追求可靠性。比如,早期NASA的太空梭就有以三個IBM主框架形成的投票環(以及一些備用框架)。在每一個投票系統中,都是佔大多數的獲勝,其餘的小部分會被斷開連線,並被取代。

早期的建議投票系統事實上被證明有許多不足,而現在在行業中流行的關鍵詞是Paxos(一種基於訊息傳遞且具有高度容錯特性的一致性演算法)和PBFT(practical byzantine fault tolerant,拜占庭容錯),而且支撐著這些內容的是Lamport(Paxos提出者),以及大量理論,PhD,論文,圖靈獎!總之就是各種複雜的東西。

以上提到的這些內容都有一些挺嚴重的侷限性,主要有:

· 從管理上來說他們是中心化的,並且/或者/因此 · 所有的參與者都是已知的。

換句話說,拜占庭將軍問題的解決方案中我們知道誰是將軍的假設,在以上提到的這些情況中並不適用。

工作證明(Proof of Work)

中本聰發現任何中心化的部件都能夠被攻擊,並會受到攻擊。這個發現是準確的:MTB關停了eCash系統就是因為遭遇了意料之外的成人購物,DigiCash被政府當局干預致殘,WebMoney遭到名譽上的攻擊,e-gold和LibertyReserve被美聯儲扳倒。

這個名單可以一直列下去,即使是作者本人也比預想中裡這些災難更近。你可以自己做一些調查來終結這些指責,以及其他一些偏見。

覺察到這個缺陷的人不止一個,但是是比特幣給出瞭解決方案。

因此,中本聰說,我們需要終結這種易受攻擊的中心化機構(CVP,也稱TTP)。並且,透過推測我們也知道並不能信任已知機構的投票系統,我們必須分享並驗證這些資料是相同的,並且同時我們必須有容易接入的出入口,即匿名性。

這個東西很棒,但是仍不能讓我們解決雙重支付問題,我們只是將資料從單個地方挪到了一個大的多的地方(從一個節點到多個節點)。

一個優雅且著名的解決方案是工作證明(PoW)或者中本簽名,一個基於用雜湊數學問題來確認正確區塊交易的彩票系統。這個彩票系統的密碼學的本質隨機選擇一個製造區塊的礦機。

將被稱為挖礦的昂貴的雜湊搜尋和獎勵耦合,並加上一些繁瑣的博弈論和概率問題,所有這些元素都被用來將系統設計得能夠驅使礦機不停工作。

圖 3. 在PoW中,機器人必須從一大堆錯誤的數字中找出諸如000000000374af72…的正確答案

比特幣是一個出色並且優雅的解決方案,因為它開闊了我們的思維,讓我們想到了完全的分散式的應用(或貨幣)的可能性。但是PoW消耗了太多能量,多到市場無法承受,多到能夠成為一項附著在貨幣上的嚇人的稅(比特幣4%,以太坊11%!)。

而隨著使用比特幣的費用越來越高,大多數人將無法使用它。高額回報和上升的價格同樣也導致了大規模的挖礦,並不可避免的導致了礦機的中心化。雖然系統本身依舊毫無問題的執行,但這由能夠抵禦審查的設計方案完成的系統卻落入了少數幾個公司,而這幾個公司幾乎都坐落在一個以審查嚴格而聞名的國家。

權益證明(Proof of Stake)

有人提出我們只需要將以CPU投票的模式改為以價值投票的模式來選擇誰對(下個區塊中)雙重支付的問題做出決策。畢竟,區塊鏈十分準確的建立在貨幣擁有的制度上,因此擁有更多貨幣的人更可能選擇保護系統,因此這個偏向性是合理的。

雖然可能讓小額貨幣擁有者感到不適,也對民主制度有所冒犯。

這個理論也因為一下原因受到批判:(1)將權力交給最多價值擁有者手中;(2)“無風險”問題(the “nothing at stake” problem):不斷試圖分叉不需要任何代價,而對於礦機來說最優的策略是儘可能多的挖礦(製造區塊),因此不論礦機挖的區塊所屬於的區塊鏈最終是否獲勝成為正確的那一條鏈,都能獲得交易費。

簡單的權益證明似乎並不奏效,究竟什麼系統才奏效呢?讓我們將問題逐步分解。

讓我們去參與一個挖礦中心化的會議

當我們觀察比特幣礦工由中國壟斷的現狀時,很明顯他們互相之間時認識的,因此他們能夠相互交流。而當面對今天的大到能將國家變暖的挖礦規模的,我們知道比特幣開始對礦工的匿名假設早已變得如履薄冰了,因為我們只需要看電力消費就能知道誰在挖礦,或參與任意一個比特幣會議。

另一方面,他們可以相互勾結。至今他們並沒有選擇這麼做,或者至少我們不知道。因為從歷史上說這個情況還不能被證明是可靠的,也許動機與道德能夠被改進提高?

只有他們的動機和道德能夠讓他們不相互勾結;在這種情況下礦工又回到了烏龍指失誤(鍵盤輸入導致的錯誤)的時候,有的交易者會意外的將一定數量的比特幣而不是satoshi設為交易費,所以道德在這裡確實起著一定的作用。另一方面,一些礦機會挖出空的區塊,即使有成堆的被延遲的交易排成長龍。

今天的礦機中心化不僅是意料之外的,也不符合比特幣最初的設想。礦工的正直會是一個可持續的未來嗎,從歷史角度來講,正直並未被證明是可靠的,想想銀行就知道,所以我們真的應該繼續支援依靠動機和道德來支撐的區塊鏈嗎?

如果我們退一步接受礦工可以中心化的事實呢?並且我們知道他們是誰?或者更矛盾的講,礦工應該中心化並透過身份驗證?

如果我們接受礦工中心化和礦工身份驗證,我們可以指定礦工。但是指定ASIC礦機只會將我們帶回在開始的易受攻擊的中心化局面。

DPoS —— 如何管理將軍

那麼我們究竟該如何更好的管理礦工呢?如果我們可以指派他們,我們同樣可以解僱,這就將我們帶回了兩軍悖論

圖 4. 生產者製造區塊, 1.驗證交易,2.新增生產者獎勵,3.計劃每一個接收的資訊,4.根據內部狀態進行處理,5.批准交易為/非雙重支付/,6.釋出已被簽名的交易

考慮到現實和經驗帶來的一連串新的需求,設計一種新的雙重支付系統似乎可行,DPoS(Delegated Proof of Stake)就是這樣的再設計,並使用了以下工具:

1. 一個生產者被選為決策者來避免一個區塊中的雙重支付,見圖4,每製造新的區塊獲得新誕生的貨幣作為獎勵;

2. 很多生產者被選擇並被給予一個由一圈區塊構成的羅賓環,從而在環內創造出一個存在競爭的市場,以保證可靠性並解決分叉,見圖5;

3. 鏈上執行者一個開放的社羣透過投票來管理生產者,每個成員透過PoS原理進行投票。選擇和解僱生產者使用的是同一原理,即多輪拍賣式。見圖6。

圖 5. 七個將軍解決七個生產者問題組成的圈

之後社羣會被要求透過以下手段管理他們自己的鏈:

· 檢查和同意他們進行的交易

· 投票選舉或解僱生產者,根據他們的記錄和其他參考選項(比如生產者可以自由的提供其他動機比如降低收入)

· 維護他們的權益(stake)或投票權

圖 6. 社羣透過投票取代不合格的生產者

一個政治化的經濟體?

從共識的角度來說,DPoS是基於證據(proof)的代理權益(stake-delegation),即生產者向社羣提供自己製造區塊的證據,然後社羣使用其權益來管理生產者。

從政治的角度來說,DPoS與基於土地擁有者投票的兩層代理民主制度(two-layerrepresentative democracy with landowner suffrage)較為相似。在這種制度中:

· 代表(representatives)即為那些由社羣選舉出的生產者,有生產者來處理那些日常的問題;

· 對代表的投票權被給予那些擁有一定資產的人。這筆資產可以是承諾給社羣的一筆積蓄,也可以是凍結起來的積蓄;這筆資產從更廣義上代表著歷史上的土地擁有者的投票權,作為對商人階層帶給社會的財富與貿易的認可。

這種機制的準確設計——存款帳號,有多少生產者,多就誕生一個區塊,多久一個環,以及眾多其他元素,顯然是更深層次也是更有趣的問題,今天就不做討論了。

它該如何運作?

這個機制以及被不少具有一定規模的系統使用,Bitshare,Steem,EOS,Tezos,PeerPlays,Ark.io等等。

雖然可以對其批判,但迄今為止評論似乎更頻繁的討論其特點以及與其他機制比較,而不是其弱點:

1. PoS因為“無風險(nothing at stake)”問題而變得脆弱,但只有當權益(stake)被用來直接參與區塊建設的時候這個問題才會出現。而DPoS則解決了這個問題,因為在DPoS中對區塊的處理被交給了生產者,這種責任的分離解決了“無風險問題”;

2. 有幾種生產者會出現惡意行為的可能——他們可能會對交易進行干涉。但這事實上可以被轉換為好吃,因為不合格的生產者會透過投票被解僱,這就是DPoS的意義。與比特幣現在製造空區塊的非法行為相比,DPoS的表現要強得多,因為它有一個懲罰機制;

3. 勾結依然存在可能性。當然,勾結在其他區塊鏈也存在可能性。重要的是哪一種機制在勾結存在的情況下執行的更好,至今為止這我們的錢都得到了妥善的管理,因為懲罰機制的存在。而在缺乏管理的純PoW中,不管礦工做什麼都不會受到懲罰,即使是51%攻擊。在DPoS中,只要勾結被發現了,不管是1%還是51%我們都可以透過調整管理方式來對付。

4. 純粹的比特幣使用者會指出,新增管理層打破了區塊鏈的無信任本質。然而並非如此,因為關於無信任有以下謬誤:

a. 其他區塊鏈沒有管理層的謬誤。這並不正確,事實上是由管理層的,只不過沒有被明寫出來,被拒絕承認,以及不穩定。從本質上來說,我們使用有明確規章制度和透明的管理取代了專設的管理。問題不在於這麼做是否加強了管理程度,而在一明確的管理是否比暗地裡管理更好。

b. 比特幣的設計然我們不需要信任礦工。在考慮一下空區塊的問題:我們現在必須相信礦工會生產有效的區塊,而事實並非如此,這就將區塊鏈的數學上本質和“信任”的人性本質分離開來。PoW下的區塊鏈終結了一部分信任,但並不是所有,而在這種情況下,當我們真正需要信任時,我們卻無法再建立信任。

DPoS還有一些值得被提及的優點:

1. 由於其廢除了雜湊挖礦,DPoS會比PoW便宜得多。而收益的會是社羣,因為我們會將這部分稅歸還給社羣(如前面寫到的比特幣4%,以太坊11%)。

2. DPoS更加環保。

3. 透過新增正式的管理層,我哦們也能夠有計劃的為軟體進行升級。這意味著,使用者將會有機會對系統的改變做出投票,生產者根據投票結果行動。這個機制幾乎使惡意分叉成為不可能,並使區塊鏈充滿活力,由於它可以隨著不斷變化的需求而進化。比如:仍未解決的PoW中DAO(decentralizedautonomous organization,去中心化自治組織)的夢魘,以及關於區塊大小的爭論都是在DPoS中得到解決的問題。

4. 正式的管理機制也給了社羣對改進區塊鏈提出建議的機會。

5. DPoS致力於使做決策變得高效,從而使系統真正能被大規模使用。讓我們把關於效能的討論留給其他文章,但這裡值得一提的是,測試中Bitshare實現了1000倍於但當下比特幣的效能。這樣的效能讓人變得能夠容忍很多其他的瑕疵。

這些優點當然也意味著存在尚未被發現的缺點,但他們會是企業和個人能夠容忍的缺點。

免責聲明:

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

推荐阅读

;