比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > 比特幣 > Info

科普 | 什么是共識?(生活篇)_OLO

Author:

Time:1900/1/1 0:00:00

分布式一致性問題本質上可以從兩個維度來認識:一是如何就某一個值達成一致的決策;二是如何就一系列連續的值達成一致的順序決策。很顯然,如果我們能夠找到問題一的解決方案,那么問題二也就迎刃而解了。下面我們就從一個生活中的小問題來入手,看看如何去設計一個合理的算法來解決問題一。

有這樣一個家庭,由6個成員組成,分別是爸爸媽媽、爺爺奶奶、姐姐和一個3歲的弟弟。這一天,大家要線上決定一下明天出游時,弟弟戴什么顏色的帽子。由于此時5位家長分處在不同的地方,因此只能通過微信來交流。我們嘗試通過這樣一個案例來剖析一個最簡單的共識問題。

單點故障

既然目的是要做出一個一致的決策,最簡單的方式就是找出一個公信度最高的人,由他負責給出一個決策,大家都同意即可。比如,我們始終選擇媽媽的決策,因為平時都是媽媽負責弟弟的著裝。可是如果每次決策都需要等待媽媽的提案的話,難免有時候媽媽的手機會不在線,比如在坐飛機的時候手機開了飛行模式。因此,始終選擇一個人來做決定是不行的。這種因為一個參與方就導致整個集群出現阻塞的情況就是典型的單點故障問題。

少數服從多數

既然由一個人來做決策不可靠,最容易想到的一個解決方案就是:少數服從多數。即每次決策都至少得到半數以上人的同意才可以通過。當然,這里我們不考慮有人亂投票,即向不同人發送不一樣的投票。以當前的場景為例,5個人當中需要至少3個人接受同一個提案才能表明該提案值被選定。并且我們需要保證一旦某個提案值被選定了,就不可能在后續出現另外一個提案值也被選定。

IMF今日發布的加密貨幣科普視頻實為兩年前舊聞,且存在諸多疏漏:國際貨幣基金組織IMF今日在推特上發布了一條關于加密貨幣的科普視頻,這段時長兩分鐘的視頻最初發布于2018年6月。該視頻稱加密貨幣是“貨幣進化的下一步”,但沒有特別提到DLT、區塊鏈,甚至是代幣名稱等術語。BTC、XRP和ETH只出現在說明加密交易的圖形中。盡管這段視頻到目前為止已經獲得了超過13.7萬的點擊量和2900個贊,但來自加密社區的許多反應都是批評的,他們指出了信息中的漏洞和似乎具有誤導性的措辭。

Reddit用戶nanooverbtc稱:“他們犯了很多錯誤,比如把私鑰稱為密碼。”該視頻也沒有討論挖礦或加密貨幣供應。Kraken策略師Pierre Rochard等知名人士表示:“可證明的稀缺性是比特幣有趣的原因,你忘了提這一點。”(Cointelegraph)[2020/8/24]

注:這里的選定是全局視角的,而接受是單個人的視角的,即同一個人可能會接受多次提案,但是整個群體最終只能選定一個提案值。

▲場景1

首先依舊給出一個最簡單的方案,為了能夠完成最終的決策,我們規定每個人必須接受他收到的第一個提案,這樣也可以調動起大家的積極心,如果想要自己的提案通過就必須快速想出一種顏色并發出提案。

動態 | 鏈客社區聯合北京交通廣播推出區塊鏈技術科普節目:12月11日15:15—16:00,區塊鏈技術社區——鏈客區塊鏈技術社區將聯合北京交通廣播FM103.9從零開始為大眾科普解碼區塊鏈技術,蜻蜓FM及北京廣播網同期進行全球直播。首期做客嘉賓為鏈客區塊鏈技術社區創始人郄建軍和百度區塊鏈產品負責人于雅楠。[2019/12/11]

但是,這種方案可能導致一種無法完成決策的困境。如上圖所示,爸爸提出了紅色帽子,覺得比較正能量!并及時將提案私戳給了媽媽,媽媽也欣然接受。幾乎同一時間,爺爺提出了藍色帽子,覺得比較復古!并及時將提案私戳給了奶奶,奶奶也欣然接受。而姐姐認為綠色比較時髦,然而等她將消息發送出去后,發現大家都已經有了自己的選擇。最終形成了2-2-1的局面,沒有哪個提案能夠達到半數以上。因此,我們發現,如果想要最終完成決策,有些人可能要接受多個不同的提案。

▲場景2

既然如此,我們再考慮如下方案,即每個人都接受他收到的所有提案。

這次,我們只考慮有兩個人發起了提案,分別是爸爸的紅色提案和姐姐的綠色提案。如果爸爸的提案已經獲得了3票的同意達到了選定狀態,隨后姐姐才發起提案,根據每個人都接受所有提案的原則,綠色提案最終也能夠達到選定狀態。顯然,這種方案違背了唯一性的原則,如果一直這樣運轉下去可能最終也沒法選定一個提案值。

聲音 | 上海股交所總經理:區塊鏈想要大規模發展要做好社會科普工作:金色財經報道,上海股交所總經理張云峰表示,區塊鏈當前還處于一個“概念”的階段,距離成熟應用,影響到百姓的日常生活還有很長的路要走。對于“區塊鏈”和其會帶來的社會和經濟效果,沈陽應當持審慎的態度。區塊鏈想要大規模發展,一方面要做好這項復雜技術的社會科普工作,加快社會大眾對區塊鏈的了解。另一方面,要充分發揮市場的作用,讓企業用實實在在的技術創新,賦能實體經濟的發展。[2019/11/17]

此時,我們發現一個問題,即爸爸的紅色提案既然事先已經達到了選定狀態,那么我們可以讓姐姐在提案之前確認下所有人的狀態,如果已經有半數節點對某個提案值達成了共識,那么姐姐就可以停止發出提案,或者再發出一個包含相同提案值的提案來保證唯一性。這樣是否就能夠解決問題了呢?

▲場景3

場景2中的問題依然存在,如上圖所示,如果爸爸和姐姐分別事先確認了下所有人的狀態都處在未投票的狀態,并依次發出了各自的提案,由于爸爸是分別私戳的,因此消息有一定的延遲,而姐姐直接拉了一個群聊一次性通知給了爺爺和奶奶,因此姐姐的提案先于爸爸的提案達到選定狀態,稍后等爸爸的提案通知到了媽媽和爺爺的時候,他們又該如何決策呢?

聲音 | ETC Labs主管:科普教育是未來幾年公鏈面臨的巨大挑戰:ETCLabs主管Darin Kotalik認為,科普教育是未來幾年公鏈面臨的巨大挑戰,人們必須要對區塊鏈有基本的認識,分清楚公鏈和私鏈的區別。[2019/8/25]

通過上面的問題,我們發現,為了防止整個決策進入到一種無法終止的狀態,我們還需要通過某種方式對提案進行排序,從而拒絕一些舊的、無效的提案,并及時地向提案者反饋自己接受的提案值,避免提案者一直發起相同的提案。也就是說,如果爺爺在收到爸爸的延遲提案時,能夠知道先前已經存在一個更新的提案并拒絕舊提案,同時告知爸爸已經接受了姐姐的綠色提案的話,就可以避免出現多種提案達到選定狀態的困境。

例如,我們可以分別為5個人分配一系列提案號,提案號按如下規則遞增:

同時做如下規定:

一條提案由提案值color和提案號seqNo組成,可表示為(color,seqNo)每個人記錄下自己收到的最大提案號,并拒絕提案號比它更小的提案當提案者收到一個已經被接受的提案時,必須無條件接受該提案,否則有可能陷入無限提案的循環每個提案都需要分為兩階段來完成,分別為事先詢問階段與最終確認階段,其中詢問階段用來確定一個序號值seqNo并及時檢測出是否已經存在被接受的提案值,確認階段用來確定一個提案值color。

財政部副部長朱光耀:數字經濟還處在發展的過程中,要以科普、推動的態度來推進數字經濟發展:今日,在中國發展高層論壇2018年會上,財政部副部長朱光耀表示:“數字經濟還處在發展的過程中,要以科普、推動的態度來推進數字經濟發展。也要關注數字經濟的其他影響,包括稅收征管、反洗錢監管措施等要跟上。”[2018/3/25]

場景1的解決方案比較簡單,即在一定時間內無法收到大多數人的同意消息之后,嘗試用新的提案號再發起一次提案,直到某次提案消息能夠成功傳達到大多數人后,即可完成決策。

下面我們來看一下如何解決場景2與場景3。

注:下圖中,以Pn表示事先詢問消息,詢問其他節點是否接受提案號n;以R(v,n)表示響應消息,告知提案者當前已經接受的最大提案號和提案值;以A(v,n)表示最終確認消息,告訴其他節點嘗試最終確認一個提案值v,其提案號為n。

場景2解決方案

對于已經達成選定狀態的提案,我們可以保證后續的提案不會覆蓋原先的提案值。

此時提案決策流程如下:

爸爸使用提案號1發起詢問爸爸、媽媽、爺爺都同意提案號1,并且反饋當前未接收任何提案值,提案號默認為0由于收到了大多數人的同意,爸爸發出最終確認消息給到了大多數人,提案號為1,提案值為紅色,此時紅色其實已經達到選定狀態姐姐使用提案號5發起詢問由于提案必須經過至少3人同意,而任選3人必然與此前同意爸爸提案的人群有交集,因此處在交集中的人能夠及時反饋之前已經同意的提案,即1號紅色提案,其余人還是反饋空投票姐姐在等到大多數人的反饋結果之后,發現此前已經有提案被其他人同意了,選擇提案號最高的那個提案值,覆蓋自己的提案值姐姐發出最終確認消息,提案號為5,提案值為紅色最終所有人都接受了紅色提案,雖然提案號可能不盡相同場景3解決方案

對于未達成選定狀態的提案,如果有新的提案提出,最終選定的提案值可能有兩種情況。

第一種情況是新提案者能夠發現舊的提案值,最終會選定舊的提案值。

第二種情況是新提案者不能夠發現舊的提案值,最終會選定新的提案值。

場景3-1解決方案

新提案者能夠發現舊的提案值,最終會選定舊的提案值。

此時提案決策流程如下:

爸爸使用提案號1發起詢問爸爸、媽媽、爺爺都同意提案號1,并且反饋當前未接收任何提案值,提案號默認為0由于收到了大多數人的同意,爸爸發出最終確認消息,但是因為消息延遲的原因,最終確認消息只發送到了爸爸、爺爺。媽媽延遲接受了該消息,因此紅色其實并未達到選定狀態姐姐使用提案號5發起詢問由于提案必須經過至少3人同意,而如果此時選中的3人中恰巧有一人接受過爸爸的最終確認消息,他會立即反饋之前已經同意的提案,即1號紅色提案,其余人還是反饋空投票姐姐在等到大多數人的反饋結果之后,發現此前已經有提案被其他人同意了,選擇提案號最高的那個提案,覆蓋自己的提案值姐姐發出最終確認消息,提案號為5,提案值為紅色媽媽延遲接收到了爸爸的最終確認消息,由于沒有收到提案號更大的提案,因此也接受了紅色提案最終所有人都接受了紅色提案,雖然提案號可能不盡相同場景3-2解決方案

新提案者不能夠發現舊的提案值,最終會選定新的提案值。

此時提案決策流程如下:

爸爸使用提案號1發起詢問爸爸、媽媽、爺爺都同意提案號1,并且反饋當前未接收任何提案值,提案號默認為0由于收到了大多數人的同意,爸爸發出最終確認消息,但是因為消息延遲的原因,最終確認消息只發送到了爸爸、媽媽。爺爺延遲接受了該消息,因此紅色其實并未達到選定狀態姐姐使用提案號5發起詢問由于提案必須經過至少3人同意,而如果此時選中的3人中恰巧都沒有人接受過爸爸的最終確認消息,那么姐姐會收到3個人反饋的空投票由于收到了大多數人的同意,姐姐發出最終確認消息給到了大多數人,提案號為5,提案值為綠色,此時綠色其實已經達到選定狀態媽媽延遲接收到了爸爸的最終確認消息,由于之前已經接受了提案號更大的提案,因此拒接爸爸的舊提案值,并將新提案值及時反饋給爸爸爸爸在收到拒接響應消息后,會嘗試從頭開始重新發起提案,最終選擇綠色提案最終所有人都接受了綠色提案,雖然提案號可能不盡相同總結

總結一下,為了能夠讓決策最終能夠收斂,其實我們已經顯式或者隱式地做了一些約束:

1.每個人的手機需要實時在線并且任意一條微信消息都可以在一定時延內收到,當出現網絡斷開的場景時,可能會導致共識無法達成

2.每個人都需要嚴格按照上述規則進行提案/投票,不能有胡亂提案/投票的動作

上面其實就是運用了經典分布式一致性算法Paxos的原理。然而Paxos解決的僅僅是一個最基本的共識的問題,即在非拜占庭的同步網絡環境下,如何就一個決策值達成一致。如果系統進入了異步網絡環境呢?如果出現了拜占庭節點呢?當我們將這一系列的問題考慮進去之后,整個問題就變得復雜的多了。

好在前人已經給我們提供了非常多的理論基礎,為了應對不同的問題,已經出現了非常多優秀的共識算法。大家感興趣的話,后面會有詳細的共識算法分類介紹,為大家全面地展示不同場景下共識算法的選擇與權衡。添加小助手加入技術交流群,歡迎您和我們共享觀點,共論區塊鏈的無限未來~

作者簡介

端豪

趣鏈科技基礎平臺部共識算法研究小組

Tags:區塊鏈加密貨幣OLOSEQ區塊鏈專業大學排名加密貨幣-新浪財經poloniex交易平臺appSEQ幣

比特幣
ETH 2.0 抽絲剝繭,升級后將帶來哪些關鍵變化?_以太坊

原標題:《ETH2.0抽絲剝繭》以太坊2.0是對以太坊網絡的升級,它提高了網絡的速度、效率和可擴展性,同時保持了安全性和去中心化.

1900/1/1 0:00:00
6月合伙人計劃收益已發放丨比原鏈項目周報(第202期)_OIN

重要消息丨Vapor共識節點2020年度固定收益獎勵即將結束通知隨著Bytom2.0逐漸完善,Bytom2.0將于8月上線,Bytom2.0將從主側鏈架構變成統一平臺.

1900/1/1 0:00:00
杭州眾奇科技執行董事陳禮斌:分布式存儲優勢在于更節能、更隱私、更安全丨2021世界區塊鏈大會_區塊鏈

巴比特訊,7月25日,“2021世界區塊鏈大會·杭州”在杭州未來科技城學術交流中心舉行。本次大會由杭州時戳信息科技有限公司主辦.

1900/1/1 0:00:00
張小軍:DID的重要性提升 應用以公務、醫療為主_DID

巴比特訊,今日,由分布式數字身份產業聯盟主辦,蘇州高鐵新城數字金融產業發展有限公司、蘇州長通互聯科技有限公司、蘇州成方云數字科技有限公司協辦的分布式數字身份高峰論壇于蘇州高鐵新城舉辦.

1900/1/1 0:00:00
干貨 | 如何復活已經被遺忘的狀態?過期狀態復活方法比較_STA

原標題:《干貨|過期狀態復活方法比較》感謝?@adietrichs?對本文的審閱。狀態保質期是目前解決狀態增長問題的推薦方案。在本文中,我們將狀態保質期視為一種會定期讓完整狀態樹失效的機制.

1900/1/1 0:00:00
分析 | 全面綜述:女巫攻擊和防御方法_ORK

本文,主要梳理了女巫攻擊及其防御進展。從現有的方法中,我們確定了三種主要抵御攻擊的方式:可信認證、資源測試和社交網絡.

1900/1/1 0:00:00
ads