摘要:而共識,是就確定性交易順序達成一致并過濾無效交易的過程。請注意,這個規則類似于比特幣的個塊確認。在實際操作中,這種情況仍然要比接受少于個比特幣確認要安全的多。其他共識算法的設計初衷是,節點不誠實且網絡條件惡劣。
原文:https://steemit.com/dpos/@dan...網絡上已經有了好幾個版本的譯文,可能是原文寫的沒那么“平易近人”,這些譯文我都看得不太懂 :)
這篇“缺失的白皮書”是對委托權益證明(Delegated Proof of Stake, DPOS)的分析,旨在分析 DPOS 的工作原理及其魯棒性(robust)的根源。DPOS 的早期描述可以在 bitshares.org 找到;不過,那個描述里包含了很多與實際共識不大相關的內容。
本質上,所有區塊鏈都是一種由交易驅動的確定性狀態機。而共識,是就確定性交易順序達成一致并過濾無效交易的過程。有各種不同的共識算法都可以產生等效的交易排序,但通過在多個區塊鏈上長年累月的可靠運行,DPOS 已經證明其具備健壯性、安全性和有效性。
像所有共識算法一樣,塊生產者(俗話就是出塊人)可能導致的最大損害是審查(censorship)。所有塊的有效性必須基于確定性的開源狀態機邏輯。
DPOS 算法概要DPOS 算法分為兩部分:
選擇一組塊生產者
調度生產
選擇出塊人的過程,確保了利益相關方(stakeholder,通俗點也可以說是持幣人)最終能有控制權,因為當網絡不能順利運行時,利益相關方的損失最大。就實際運行中如何達成共識而言,如何選擇出塊人其實幾乎沒有多大影響,因此,本文將重點介紹在選好出塊人之后,如何達成共識。
為了幫助解釋這個算法,我將假設 3 個塊生產者 A,B 和 C。因為需要達成 2/3+1 的多數共識來解決所有情況,這個簡化的模型將假設生產者 C 是打破僵局的那個人(也就是 2/3+1 里面的 1,勝負手)。在現實世界中,將有 21 個或更多的出塊人。像工作量證明一樣,一般規則是最長鏈勝出。任何時候,當一個誠實的節點看到一個有效的更長鏈,它都會從當前鏈切換到更長的這條鏈。
我將舉例說明在大多數能夠想到的網絡條件下,DPOS 是如何運行的。這些例子應該可以幫助您理解為什么 DPOS 穩健且難以破壞。
正常操作(Normal Operation)在正常操作下,出塊人輪流每 3 秒鐘出一個塊。假設沒有人錯過自己的輪次,那么將會產生最長鏈。出塊人在被調度輪次之外的任何時間段出塊都是無效的。也就是說,如果沒有輪到自己出塊,出的任何塊都是無效的。
少數分叉(Minority Fork)如果出現不超過節點總數三分之一的惡意或故障節點,那么可能會產生少數分叉(minority fork, 或者可以說是小群體分叉)。在這種情況下,少數分叉每 9 秒只能產生一個塊,而多數分叉每 9 秒可以產生兩個塊。這樣,誠實的 2/3 多數將永遠比少數(的鏈)更長。
離散少數的雙重生產(Double Production by Disconnected Minority)如果有很多“各自為政”的小群體,那么他們可以試圖產生無數的分叉,但是因為少數人在出塊速度上注定比多數人更慢,所以所有小群體的分叉都會比多數人的那條鏈短。
網絡碎片化(Network Fragmentation)網絡完全有可能碎片化,從而導致沒有任何分叉擁有數量上占多數的出塊人。在這種情況下,最長鏈將倒向最大的那個小群體(“矮子里面挑高個”)。當網絡連通性恢復時,其他較小的小群體會自然切換到最長的那條鏈(也就是最大的小群體那條鏈),繼而恢復明確的共識。
有可能存在這樣三個分叉,其中兩個較長的分叉長度相同。在這種情況下,當第 3 個(較小)分叉的出塊人重新加入網絡時,就會打破平局。出塊人總數為奇數,因此不可能長時間保持平局。稍后我們還會談到出塊人“混洗(shuffle)”,它使得出塊順序隨機化,從而確保即使是出塊人數目相同的兩個分叉,也會以不同的速度增長,最終導致一個分叉勝出。
在線少數的雙重生產(Double Production by Connected Minority)在這種場景下,少數節點 B 在其時間段內產生了兩個或更多的競爭塊(alternative block)。下一個出塊人(C)可以選擇基于 B 產生的任意一個塊繼續往前走。如此一來,C 的這條鏈就成為最長鏈,而所有選擇 B1 的節點都將切換到最長鏈。即使少數不良出塊人試圖廣播再多的競爭塊也無關緊要,因為它們作為最長鏈的一部分永遠不會超過一輪(round,所有出塊人挨個出塊,轉完一圈就是一輪)。
最后不可逆塊(Last Irreversible Block)在網絡碎片化的情況下,在相當長的一段時間內,很有可能有多個分叉都持續不斷地增長。長遠來看,最長的鏈終將獲勝,但觀察者(observer)需要一種確切的手段,以此來確定一個塊是否在增長最快的鏈上。這可以通過看是否有 2/3+1 多數出塊人的確認來確定。
在下圖中,塊 B 已被 C 和 A 所確認,即表示有 2/3+1 多數確認,由此我們可以推斷沒有其它鏈會比這條鏈更長 – 如果 2/3 的出塊人是誠實的。
請注意,這個“規則”類似于比特幣的 6 個塊確認。一些“聰明”人也許可以謀劃一系列事件,使得兩個節點的最后不可逆塊不同。這種極端的例子要求攻擊者能完全控制通信延遲,并且在幾分鐘內控制兩次--而不僅僅是一次。即便這真的發生了,最長鏈勝出的長期規則仍然適用。我們認為這種攻擊的可能性足夠接近 0,且經濟后果無關緊要,因此不足為慮。
出塊人不足(Lack of Quorum of Producers)有一種不太可能會出現的情況,即沒有明確到底有多少個出塊人,在這種情況下,少數人還是可以繼續出塊。在這些塊里,利益相關方可以包含更改投票的交易。這些投票可以選出一組新的出塊人,并將出塊參與率恢復到 100%。一旦如此,這條小群體的鏈最終將超過所有其他出塊參與率低于 100% 的鏈。
在此過程中,所有觀察者都會知道,在出現一條參與率超過 67% 的鏈之前,網絡都處于不穩定的狀態。如果有人選擇在此條件下進行交易,那么他將承受與接受不到 6 個確認類似的風險。他們也知道存在這樣的小概率事件,即最終的共識(或者說最長鏈)出現在另一個不同的分叉上。在實際操作中,這種情況仍然要比接受少于 3 個比特幣確認要安全的多。
多數出塊人出現問題(Corruption of Majority of Producers)如果多數出塊人出現問題,那么他們可能產生無限的分叉,每個分叉都看起來以 2/3 多數確認向前推進。這種情況下,最后不可逆塊算法蛻變為最長鏈算法。最長鏈就是為最多人認同的鏈,而這條鏈實際將由少數剩下的誠實節點決定。這種行為不會持續很長時間,因為利益相關方最終會投票替換掉這些出塊人。
交易權益證明(Transactions as Proof of Stake, TaPoS)用戶為一個交易簽名,是基于對區塊鏈狀態的一個假設,而這個假設又基于他們對最近幾個塊的“認識”(perception)。如果最長鏈的共識發生改變,則很可能會使簽名者之前簽名時所依據的假設失效。
就 TaPoS 而言,所有交易都包含最近一個塊的哈希,如果該塊在區塊鏈中不存在,那么認為這些交易是無效的。任何在孤兒分叉(orphaned fork)上給交易簽名的人,最終都會發現該交易無效,且無法遷移到主分叉。
這個過程有個附帶的好處,它可以抵御試圖產生替代鏈的長程攻擊(long-range attack)。每次交易時,利益相關方都直接對區塊鏈做出確認。隨著時間的推移,所有的塊都是由所有利益相關方確認過的,這在一條偽造的鏈(forged chain)所做不到的。
確定性出塊人混洗(Deterministic Producer Shuffling)在上面我們所展示的所有案例中,出塊人按循環調度出塊。實際上,每出 N 個塊(N 是出塊人數量),出塊人集合都會進行一次混洗。這種隨機性確保了出塊人 B 不會總是忽略出塊人 A,并且當出現多個數量出塊人相同的分叉時,最終會有一個分叉勝出。
結論在每一個想得到的自然網絡破壞下,DPOS 都是健壯的,甚至在面對大部分出塊人作弊時,也是安全的。不像其它共識算法,當大多數出塊人出現問題時,DPOS 仍然可以繼續工作。在此過程中,社區可以投票替換掉不合格的出塊人,直到恢復 100% 參與率。在如此高強度和變化多端的故障條件下,我還不知道有任何其它算法也可以依然保持如此健壯。
DPOS 之所以能有這么高的安全性,歸根結底來自于其選擇出塊人和驗證節點質量的算法。通過贊成投票制(approval voting),可以確保即使一個人擁有 50% 的有效投票權,也不能獨自選擇一個出塊人。DPOS 的設計初衷是在良好的網絡連接,誠實節點 100% 參與共識的情況下優化性能,這使得 DPOS 有能力在平均只有 1.5 秒的時間內以 99.9% 的確定性確認交易,同時能夠以一種優雅和可檢測的方式降級 – 降級也不是什么大事。
其他共識算法的設計初衷是,節點不誠實且網絡條件惡劣。這種設計的最終結果就是,網絡的性能更差,延遲更高,更新開銷大,并且在 33% 節點出現問題的情況下就會徹底停止正常運轉。
在 BitShares 成功運行三年,Steem 運行一年期間,我們經歷了各種各樣的網絡條件和軟件錯誤。對于各種狀況,DPOS 都成功地得以應對,并且證明了在維護共識的同時,處理了比任何其它區塊鏈更多的交易。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/23993.html
摘要:共識是商定確定性交易順序和過濾無效交易的過程。選舉過程確保利益相關方最終得到控制,因為當網絡不能順利運行時,利益相關方的損失最大。這種行為不會持續很長時間,因為利益相關方最終會投票替換生產者。 譯者介紹: 奚海峰,萬云首席技術官,曾在IBM擔任研究院工程師和高級咨詢顧問,在Sempra Commodities (全球大宗商品交易公司集團)擔任主管架構師,在Tudor Investmen...
摘要:同時因為所有節點都是對等節點,避免了潛在的攻擊風險。創建輪次一個事件的創建輪次是或者,其中是該事件父節點的最大輪次。 背景 在深入探索Hashgraph之前,我們先聊聊關于共識協議的背景,眾所周知比特幣和以太坊目前都采用POW共識機制,如果暫不考慮大礦場聯合做些小動作,工作量證明機制確實是個非常安全的協議,簡單粗暴的算法設計從經濟收益層面杜絕了幾乎99%的潛在攻擊,比特幣網絡從2009...
摘要:比特幣的共識算法被稱為工作量證明目前,每分鐘,比特幣網絡會獎勵成功記賬的礦工個比特幣。新的算法被稱為委托權益證明,是由發明的。 本文首發萬云Wancloud,翻譯:任重遠,萬向區塊鏈業務專家,參與工信部區塊鏈白皮書撰寫 本文摘自BitShares 101中關于委托權益證明和工作量證明的討論。 在這一章節中,我將會向大家解釋一下誕生于2014年8月的某項技術。該技術所帶來的飛躍將會使得D...
摘要:從外因的角度來說,系統應該能夠容忍黑客攻擊受托人作弊的情況。這里的黑客攻擊不是說,造成的后果最多是部分服務器宕機,我們已經歸到內因里去了,這里的黑客攻擊主要是指通過入侵拿到部分受托人密鑰并獲取權限,然后利用這些權限獲利。 0 前言 我曾分析了DPOS算法的漏洞并且模擬了一個簡單的攻擊的方法,然后實現了一個簡化的PBFT算法模型試圖去修復該漏洞,并且對比了效果。 隨后在正式的產品中實現了...
閱讀 1969·2021-09-04 16:45
閱讀 755·2019-08-30 15:44
閱讀 901·2019-08-30 13:07
閱讀 461·2019-08-29 16:06
閱讀 1385·2019-08-29 13:43
閱讀 1276·2019-08-26 17:00
閱讀 1530·2019-08-26 13:51
閱讀 2301·2019-08-26 11:48