摘要:共識(shí)是商定確定性交易順序和過濾無效交易的過程。選舉過程確保利益相關(guān)方最終得到控制,因?yàn)楫?dāng)網(wǎng)絡(luò)不能順利運(yùn)行時(shí),利益相關(guān)方的損失最大。這種行為不會(huì)持續(xù)很長(zhǎng)時(shí)間,因?yàn)槔嫦嚓P(guān)方最終會(huì)投票替換生產(chǎn)者。
譯者介紹:
奚海峰,萬(wàn)云首席技術(shù)官,曾在IBM擔(dān)任研究院工程師和高級(jí)咨詢顧問,在Sempra Commodities (全球大宗商品交易公司集團(tuán))擔(dān)任主管架構(gòu)師,在Tudor Investment ( 美國(guó)排名前20的對(duì)沖基金)擔(dān)任軟件開發(fā)主管。在美國(guó)12年間,榮獲了包括“IBM 研究成就獎(jiǎng)”在內(nèi)的多次嘉獎(jiǎng),在一流國(guó)際會(huì)議和雜志上發(fā)表過多篇學(xué)術(shù)論文,并且持有美國(guó)發(fā)明專利。
轉(zhuǎn)載請(qǐng)注明譯者及出處
這篇“缺失的白皮書”是對(duì)委托權(quán)益證明(DPOS)的分析,目的是為DPOS的工作原理及其魯棒性根源提供一個(gè)分析。DPOS的早期描述可以在bitshares.org(https://bitshares.org/technol...)找到;不過,那個(gè)描述還包含了許多不屬于實(shí)際共識(shí)過程的內(nèi)容。
所有區(qū)塊鏈本質(zhì)上都是一種由交易驅(qū)動(dòng)的確定性狀態(tài)機(jī)。共識(shí)是商定確定性交易順序和過濾無效交易的過程。有許多不同的共識(shí)算法都可以產(chǎn)生等效的交易排序,但DPOS已經(jīng)通過在多個(gè)區(qū)塊鏈上經(jīng)年累月的可靠運(yùn)行證明自身是健壯、安全和有效的。
像所有共識(shí)算法一樣,塊生產(chǎn)者可能導(dǎo)致的最大損害是審查。所有塊的有效性必須基于確定性的開源狀態(tài)機(jī)邏輯。
DPOS算法概要
DPOS算法分為兩部分:選擇一組塊生產(chǎn)者和調(diào)度生產(chǎn)。選舉過程確保利益相關(guān)方最終得到控制,因?yàn)楫?dāng)網(wǎng)絡(luò)不能順利運(yùn)行時(shí),利益相關(guān)方的損失最大。選舉方法對(duì)實(shí)際運(yùn)行中如何達(dá)成共識(shí)幾乎沒有影響,因此,本文將重點(diǎn)介紹如何在塊生產(chǎn)者被選擇之后達(dá)成共識(shí)。
為了幫助解釋這個(gè)算法,我想假設(shè)3個(gè)塊生產(chǎn)者A,B和C。因?yàn)楣沧R(shí)(的達(dá)成)需要2/3+1多數(shù)來解決所有情況,這個(gè)簡(jiǎn)化的模型將假設(shè)生產(chǎn)者C是打破僵局的那個(gè)人。在現(xiàn)實(shí)世界中,將有21個(gè)或更多的塊生產(chǎn)者。像工作量證明一樣,一般規(guī)則是最長(zhǎng)鏈勝出。任何時(shí)候當(dāng)一個(gè)誠(chéng)實(shí)的對(duì)等節(jié)點(diǎn)看到一個(gè)有效的更長(zhǎng)鏈,它都會(huì)從當(dāng)前分叉切換到更長(zhǎng)的這條鏈。
我將舉例說明在大多數(shù)想得到的網(wǎng)絡(luò)條件下DPOS如何運(yùn)行。這些例子應(yīng)該可以幫助您理解為什么DPOS穩(wěn)健且難以破壞。
正常操作
在正常操作模式下,塊生產(chǎn)者每3秒鐘輪流生成一個(gè)塊。假設(shè)沒有人錯(cuò)過自己的輪次,那么這將產(chǎn)生最長(zhǎng)鏈。塊生產(chǎn)者在被調(diào)度輪次之外的任何時(shí)間段出塊都是無效的。
少數(shù)分叉
不超過節(jié)點(diǎn)總數(shù)三分之一的惡意或故障節(jié)點(diǎn)可能創(chuàng)建少數(shù)分叉。在這種情況下,少數(shù)分叉每9秒只能產(chǎn)生一個(gè)塊,而多數(shù)分叉每9秒可以產(chǎn)生兩個(gè)塊。這樣,誠(chéng)實(shí)的2/3多數(shù)將永遠(yuǎn)比少數(shù)(的鏈)更長(zhǎng)。
離線少數(shù)的多重生產(chǎn)
(離線的)少數(shù)人可以試圖產(chǎn)生無限數(shù)量的分叉,但是他們的所有分叉都將比多數(shù)人的那條鏈短,因?yàn)樯贁?shù)人在出塊速度上注定比多數(shù)人來的更慢。
網(wǎng)絡(luò)碎片化
網(wǎng)絡(luò)完全有可能碎片化,導(dǎo)致沒有任何分叉擁有多數(shù)塊生成者。在這種情況下,最長(zhǎng)的鏈將倒向最大的那個(gè)少數(shù)群體。當(dāng)網(wǎng)絡(luò)連通性恢復(fù)時(shí),較小的少數(shù)群體會(huì)自然切換到最長(zhǎng)的那條鏈,明確的共識(shí)將恢復(fù)。
有可能存在這樣三個(gè)分叉,其中兩個(gè)最長(zhǎng)的分叉長(zhǎng)度相同。在這種情況下,第3個(gè)(較?。┓植娴膲K生產(chǎn)者重新加入網(wǎng)絡(luò)時(shí)會(huì)打破平局。塊生產(chǎn)者總數(shù)為奇數(shù),因此不可能長(zhǎng)時(shí)間保持平局。稍后我們還會(huì)講到生產(chǎn)者“洗牌”,它使得出塊順序隨機(jī)化,從而確保即使是生產(chǎn)者數(shù)目相同的兩個(gè)分叉也會(huì)以不同的步長(zhǎng)增長(zhǎng),最終導(dǎo)致一個(gè)分叉超過另一個(gè)。
在線少數(shù)的多重生產(chǎn)
在這種場(chǎng)景下,少數(shù)節(jié)點(diǎn)B在其時(shí)間段內(nèi)產(chǎn)生了兩個(gè)或更多可供選擇的塊。下一個(gè)計(jì)劃生產(chǎn)者(C)可以選擇基于B產(chǎn)生的任何一種方案繼續(xù)構(gòu)建鏈條。一旦如此,這個(gè)選擇就成為最長(zhǎng)的鏈,而所有選擇B1的節(jié)點(diǎn)都將切換分叉。少數(shù)不良生產(chǎn)者企圖廣播再多的替代塊也無關(guān)緊要,它們作為最長(zhǎng)鏈的一部分永遠(yuǎn)不會(huì)超過一輪。
最后不可逆塊
在網(wǎng)絡(luò)碎片化的情況下,多個(gè)分叉都有可能持續(xù)不斷增長(zhǎng)相當(dāng)長(zhǎng)的時(shí)間。長(zhǎng)遠(yuǎn)來看最長(zhǎng)的鏈終將獲勝,但觀察者需要一種確切的手段來判定一個(gè)塊是否絕對(duì)處于增長(zhǎng)最快的那條鏈。這可以通過觀察來自2/3+1多數(shù)塊生產(chǎn)者的確認(rèn)來決定。
在下圖中,塊B已被C和A所確認(rèn),這代表了2/3+1多數(shù)確認(rèn),由此我們可以推斷沒有其它鏈會(huì)比這個(gè)更長(zhǎng) – 如果2/3的生產(chǎn)者是誠(chéng)實(shí)的。
個(gè)“規(guī)則”類似于比特幣的6塊確認(rèn)“規(guī)則”。一些聰明人也許可以謀劃一系列事件使得兩個(gè)節(jié)點(diǎn)(應(yīng)該是“交易”?)出現(xiàn)在不同的最后不可逆塊上。這種邊緣案例要求攻擊者能完全控制通信延遲,并且在幾分鐘內(nèi)兩次--而不是一次--使用該控制。即便這真的發(fā)生了,那么最長(zhǎng)鏈(勝出)的長(zhǎng)期規(guī)則仍然適用。我們估計(jì)這種攻擊的可能性足夠接近0,且經(jīng)濟(jì)后果無關(guān)緊要,因此不足為慮。
生產(chǎn)者法定人數(shù)不足
在缺乏明晰的生產(chǎn)者法定人數(shù)這種不太可能的情況下,少數(shù)人還是可以繼續(xù)出塊。利益相關(guān)方可以在這些塊里包括更改投票的交易。這些投票可以選出一組新的生產(chǎn)者,并將出塊參與率恢復(fù)到100%。一旦如此,少數(shù)鏈將最終超過所有其他以低于100%參與率運(yùn)行的鏈。
在此過程中,所有觀察者都會(huì)知道,在一條參與率超過67%的鏈形成之前,網(wǎng)絡(luò)狀態(tài)是不定的。那些選擇在此條件下進(jìn)行交易的人所冒的風(fēng)險(xiǎn)與選擇接受不到6個(gè)確認(rèn)的人相似。他們知道存在這樣一些小的可能性,即:共識(shí)也許最終在一個(gè)不同的分叉上建立起來。在實(shí)踐中,這種情況比接受少于3個(gè)比特幣交易確認(rèn)的塊要安全多了。
多數(shù)生產(chǎn)者舞弊
如果多數(shù)生產(chǎn)者變得腐敗,那么他們可以產(chǎn)生無限數(shù)量的分叉,每個(gè)分叉都看起來以2/3多數(shù)確認(rèn)向前走。這種情況下,最后不可逆塊算法蛻變?yōu)樽铋L(zhǎng)鏈算法。最長(zhǎng)鏈就是為最大多數(shù)所批準(zhǔn)的那條鏈,而這將由少數(shù)剩下的誠(chéng)實(shí)節(jié)點(diǎn)決定。這種行為不會(huì)持續(xù)很長(zhǎng)時(shí)間,因?yàn)槔嫦嚓P(guān)方最終會(huì)投票替換生產(chǎn)者。
交易作為權(quán)益證明(TaPoS)
當(dāng)用戶為一個(gè)交易簽名時(shí),他們是在對(duì)區(qū)塊鏈狀態(tài)的一定假設(shè)下這樣做的。這個(gè)假設(shè)是基于他們對(duì)最近幾個(gè)塊的看法。如果最長(zhǎng)鏈的共識(shí)發(fā)生改變,則潛在會(huì)使簽名者之前的假設(shè)失效。
就TaPoS而言,所有交易都包含最近一個(gè)塊的散列,如果該塊在鏈歷史中不存在則這些交易被認(rèn)為是無效的。任何在孤兒分叉上給交易簽名的人,都會(huì)發(fā)現(xiàn)該交易無效且無法遷移到主分叉。
該過程的一個(gè)附帶作用是可以抵御試圖產(chǎn)生替代鏈的長(zhǎng)期攻擊。每個(gè)利益相關(guān)方在每次交易時(shí)都直接對(duì)區(qū)塊鏈做出確認(rèn)。隨著時(shí)間推移,所有的塊都是由所有利益相關(guān)方確認(rèn)過的,這在一條偽造鏈里是無法復(fù)制的。
確定性生產(chǎn)者洗牌
在上面所有例子中,我們展示的都是塊生產(chǎn)者按循環(huán)調(diào)度出塊。實(shí)際上,每出N個(gè)塊(N是生產(chǎn)者數(shù)量),塊生產(chǎn)者集合都會(huì)洗牌一次。這種隨機(jī)性確保塊生成者B不會(huì)總是忽略塊生成者A,每當(dāng)形成多個(gè)擁有相同數(shù)量生產(chǎn)者的分叉時(shí),平局最終都會(huì)被打破。
結(jié)論
在每一個(gè)我們能想到的自然網(wǎng)絡(luò)分裂的情況下,委托權(quán)益證明都是強(qiáng)健的,甚至在面對(duì)相當(dāng)數(shù)量生產(chǎn)者舞弊的情形時(shí)也是安全的。不像其它共識(shí)算法,當(dāng)大多數(shù)生產(chǎn)者不合格時(shí),DPOS還是可以繼續(xù)工作。在此過程中,社區(qū)可以投票替換掉不合格的生產(chǎn)者,直到恢復(fù)100%參與率。我還不知道有任何其它算法可以在如此高強(qiáng)度和變化多端的失敗條件下依然保持強(qiáng)健。
說到底,DPOS引人注目的安全性來自于其選擇塊生產(chǎn)者和驗(yàn)證節(jié)點(diǎn)質(zhì)量的算法。運(yùn)用贊成投票的過程可以確保一個(gè)人即使擁有50%的有效投票權(quán)也不能獨(dú)自挑選哪怕一個(gè)生產(chǎn)者。DPOS旨在優(yōu)化擁有強(qiáng)壯網(wǎng)絡(luò)連接的誠(chéng)實(shí)節(jié)點(diǎn)100%參與(共識(shí)過程)的名義條件。這使得DPOS有能力在平均只有1.5秒的時(shí)間內(nèi)以99.9%的確定性確認(rèn)交易,同時(shí)以優(yōu)雅和可檢測(cè)的方式降級(jí) – 從降級(jí)中恢復(fù)正常也不過是小事一樁。
其它共識(shí)算法以網(wǎng)絡(luò)條件差的不誠(chéng)實(shí)節(jié)點(diǎn)為名義條件展開設(shè)計(jì),這樣設(shè)計(jì)的最終結(jié)果就是性能更差、延遲更高、通信開銷高的網(wǎng)絡(luò),而且這個(gè)網(wǎng)絡(luò)在33%節(jié)點(diǎn)失效的情況下會(huì)完全停擺。
在BitShares成功運(yùn)行三年以及在Steem運(yùn)行一年期間,我們經(jīng)歷了各種各樣的網(wǎng)絡(luò)條件和軟件錯(cuò)誤。DPOS成功穿行于其間,在處理了比任何其它區(qū)塊鏈更多交易的同時(shí)持續(xù)達(dá)成共識(shí),展現(xiàn)了非凡的能力。
英文版原文鏈接:https://steemit.com/dpos/@dan...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/41309.html
摘要:而共識(shí),是就確定性交易順序達(dá)成一致并過濾無效交易的過程。請(qǐng)注意,這個(gè)規(guī)則類似于比特幣的個(gè)塊確認(rèn)。在實(shí)際操作中,這種情況仍然要比接受少于個(gè)比特幣確認(rèn)要安全的多。其他共識(shí)算法的設(shè)計(jì)初衷是,節(jié)點(diǎn)不誠(chéng)實(shí)且網(wǎng)絡(luò)條件惡劣。 原文:https://steemit.com/dpos/@dan...網(wǎng)絡(luò)上已經(jīng)有了好幾個(gè)版本的譯文,可能是原文寫的沒那么平易近人,這些譯文我都看得不太懂 :) showIm...
摘要:比特幣是第一個(gè)區(qū)塊鏈應(yīng)用,同時(shí)也是最著名的應(yīng)用之一,它所使用的共識(shí)機(jī)制就是。區(qū)塊鏈系統(tǒng)的參與者鎖定他們?cè)谠搮^(qū)塊鏈上持有的虛擬資產(chǎn)或,他們會(huì)簽署消息以達(dá)成一致意見。 一.POW(Proof Of Work) Proof Of Work,也就是工作量證明。工作量證明系統(tǒng)(或者說協(xié)議、函數(shù)),是一種應(yīng)對(duì)拒絕服務(wù)攻擊和其他服務(wù)濫用的經(jīng)濟(jì)對(duì)策。它要求發(fā)起者進(jìn)行一定量的運(yùn)算,也就意味著需要消耗計(jì)算...
摘要:同時(shí)因?yàn)樗泄?jié)點(diǎn)都是對(duì)等節(jié)點(diǎn),避免了潛在的攻擊風(fēng)險(xiǎn)。創(chuàng)建輪次一個(gè)事件的創(chuàng)建輪次是或者,其中是該事件父節(jié)點(diǎn)的最大輪次。 背景 在深入探索Hashgraph之前,我們先聊聊關(guān)于共識(shí)協(xié)議的背景,眾所周知比特幣和以太坊目前都采用POW共識(shí)機(jī)制,如果暫不考慮大礦場(chǎng)聯(lián)合做些小動(dòng)作,工作量證明機(jī)制確實(shí)是個(gè)非常安全的協(xié)議,簡(jiǎn)單粗暴的算法設(shè)計(jì)從經(jīng)濟(jì)收益層面杜絕了幾乎99%的潛在攻擊,比特幣網(wǎng)絡(luò)從2009...
摘要:比特幣的共識(shí)算法被稱為工作量證明目前,每分鐘,比特幣網(wǎng)絡(luò)會(huì)獎(jiǎng)勵(lì)成功記賬的礦工個(gè)比特幣。新的算法被稱為委托權(quán)益證明,是由發(fā)明的。 本文首發(fā)萬(wàn)云Wancloud,翻譯:任重遠(yuǎn),萬(wàn)向區(qū)塊鏈業(yè)務(wù)專家,參與工信部區(qū)塊鏈白皮書撰寫 本文摘自BitShares 101中關(guān)于委托權(quán)益證明和工作量證明的討論。 在這一章節(jié)中,我將會(huì)向大家解釋一下誕生于2014年8月的某項(xiàng)技術(shù)。該技術(shù)所帶來的飛躍將會(huì)使得D...
摘要:從外因的角度來說,系統(tǒng)應(yīng)該能夠容忍黑客攻擊受托人作弊的情況。這里的黑客攻擊不是說,造成的后果最多是部分服務(wù)器宕機(jī),我們已經(jīng)歸到內(nèi)因里去了,這里的黑客攻擊主要是指通過入侵拿到部分受托人密鑰并獲取權(quán)限,然后利用這些權(quán)限獲利。 0 前言 我曾分析了DPOS算法的漏洞并且模擬了一個(gè)簡(jiǎn)單的攻擊的方法,然后實(shí)現(xiàn)了一個(gè)簡(jiǎn)化的PBFT算法模型試圖去修復(fù)該漏洞,并且對(duì)比了效果。 隨后在正式的產(chǎn)品中實(shí)現(xiàn)了...
閱讀 1589·2021-11-24 09:39
閱讀 3718·2021-09-29 09:47
閱讀 1641·2021-09-29 09:34
閱讀 3141·2021-09-10 10:51
閱讀 2628·2019-08-30 15:54
閱讀 3282·2019-08-30 15:54
閱讀 930·2019-08-30 11:07
閱讀 1082·2019-08-29 18:36