了解恆星共識協議

了解恆星共識協議

恆星共識協議首次描述於 科學文章 大衛‧馬齊爾,2015 年。 這是一個“聯邦拜占庭協議系統”,允許去中心化、無領導的計算網絡有效地就決策達成共識。 恆星支付網路使用恆星共識協議(SCP)來維護所有參與者都可見的一致交易歷史記錄。

共識協議被認為難以理解。 SCP 比它們中的大多數簡單,但仍然享有這樣的聲譽 - 部分原因是由於科學文章前半部分的主題“聯合投票”是 SCP 的錯誤想法。 但事實並非如此! 這只是本文後半部用來創建的一個重要構建塊 實際的 恆星共識協議。

在本文中,我們將簡要解釋什麼是“協議體系”,什麼可以使其成為“拜占庭體系”以及為什麼使拜占庭體系成為“聯邦體系”。 然後我們將解釋 SCP 文章中描述的聯合投票程序,最後我們將解釋 SCP 協議本身。

協定係統

協議系統允許一組參與者就某個主題達成共識,例如午餐要點什麼。

在Interstellar,我們實施了自己的用餐協議系統:我們按照營運經理約翰的吩咐點餐。 這是一個簡單而有效的協定體系。 我們都信任約翰,相信他每天都會找到一些有趣又營養的東西。

但如果約翰濫用了我們的信任怎麼辦? 他可以單槍匹馬地決定我們都應該成為素食主義者。 一兩週後,我們可能會推翻他並將權力移交給伊麗莎白。 但突然間,她喜歡上了酪梨和鯷魚,並認為每個人都應該這樣做。 權力導致腐敗。 因此,最好找到一些更民主的方法:某種方式確保考慮到不同的偏好,同時確保及時且明確的結果,以便最終沒有人點午餐,或者五個人下不同的訂單,或者討論一直拖到晚上。

解決方案似乎很簡單:舉行投票! 但這是一種誤導的印象。 誰將收集選票並報告結果? 為什麼別人要相信他說的話? 也許我們可以 起初 投票給我們信任的領導者,他將領導投票 - 但誰將領導投票 第一個 透過投票? 如果我們不能就領導者達成一致怎麼辦? 或者,如果我們達成協議,但這位領導者陷入會議或請病假怎麼辦?

類似的問題也出現在分散式電腦網路。 所有參與者或節點必須就某些決定達成一致,例如輪到誰更新共享檔案或從處理佇列中刪除任務。 在加密貨幣網路中,節點必須反覆從多個可能的版本中選擇完整的故事,這些版本有時會發生衝突。 此網路協定向接收者保證代幣 (a) 有效(不是偽造的)且 (b) 尚未在其他地方使用。 這也確保了他將來能夠使用這些代幣,因為新的接收者將出於相同的原因獲得相同的保證。

分散式運算網路中的任何共識系統都必須是容錯的:儘管存在諸如連結緩慢、節點無回應和訊息排序不正確等錯誤,它也必須產生一致的結果。 拜占庭式 該協定係統還可以抵抗「拜占庭」錯誤:節點提供虛假訊息,無論是由於錯誤還是故意試圖破壞系統或獲得某種優勢。 「拜占庭式」容錯能力——即使某些群體成員可能撒謊或不遵守決策規則,也能相信群體決策的能力——被稱為 關於拜占庭帝國將軍的寓言誰試圖協調這次襲擊。 很好的描述 在安東尼·史蒂文斯。

以加密貨幣所有者愛麗絲為例,她必須在從鮑勃那裡購買美味的冰淇淋和償還卡羅爾的債務之間做出選擇。 也許愛麗絲想透過欺騙性地花費同一個硬幣來同時支付給他們兩個。 為此,她必須讓鮑伯的電腦相信硬幣從未支付給卡羅爾,並讓卡羅爾的電腦相信該硬幣從未支付給鮑伯。 拜占庭協議體系使這幾乎成為不可能,它使用了一種稱為「多數規則」的形式 法定人數。 這種網路中的節點拒絕轉移到歷史的特定版本,直到它看到足夠數量的對等點(法定人數)同意這種轉變。 一旦發生這種情況,他們將形成一個足夠大的投票集團,以迫使剩餘的網路節點同意他們的決定。 Alice 可以強迫一些節點代表她撒謊,但如果網路夠大,她的嘗試將被誠實節點的投票壓倒。

仲裁需要多少個節點? 至少需要多數人,或者更確切地說,合格的多數人來打擊錯誤和詐欺。 但要統計大多數,您需要知道參與者的總數。 在星際辦公室或區選舉中,這些數字很容易被查到。 但如果你的群組是一個鬆散定義的網絡,其中節點可以隨意進入和離開而無需中心批准,那麼你需要 聯邦 拜占庭協議系統能夠不根據預定的節點列表,而是根據給定時間點不斷變化且不可避免地不完整的節點快照動態地確定法定人數。

從龐大網路中單一節點的角度來看,創建仲裁似乎是不可能的,但這是可能的。 這樣的法定人數甚至可以保證去中心化投票的結果。 SCP 白皮書展示如何使用稱為 透過聯邦投票.

不耐煩

本文的其餘部分更詳細地描述了聯合投票和恆星共識協議。 如果您對細節不感興趣,這裡是該過程的總體概述。

  1. 節點對「提名人」進行多輪聯邦投票。 聯邦投票意味著:
    • 節點對某些聲明進行投票,例如「我提出V的值」;
    • 此節點監聽對等體的聲音,直到找到一個可以「接收」的聲音;
    • 該節點為此斷言尋找「法定人數」。 法定人數「確認」被提名人。
  2. 一旦節點可以確認一個或多個提名人,它就會嘗試透過幾輪聯合投票來「準備」「選票」。
  3. 一旦節點能夠驗證選票已準備好,它就會嘗試透過更多輪的聯合投票來提交選票。
  4. 一旦節點可以確認選票的提交,它就可以透過將該選票用作共識結果來「外部化」該選票的值。

這些步驟涉及多輪聯合投票,共同構成一輪 SCP。 讓我們仔細看看每一步發生了什麼。

聯合投票

聯合投票是確定網路是否可以就提案達成一致的程序。 在投票輪中,每個節點必須從許多可能的值中選擇一個。 除非確信網路中的其他節點不會選擇不同的結果,否則它無法做到這一點。 為了確保這一點,節點來回交換大量訊息,以便每個人 確認法定人數 節點 接受 相同的 決定。 本節的其餘部分解釋了這句話中的術語以及整個過程如何發生。

法定人數和法定人數切片

讓我們從定義法定人數開始。 正如我們上面所討論的,在具有動態成員資格的去中心化網路中,不可能事先知道節點的數量,因此不可能知道大多數人需要多少個節點。 聯合投票透過引入新的想法解決了這個問題 法定人數削減 (仲裁切片):節點信任的一小組對等點,用於將投票狀態資訊傳達給網路的其餘部分。 每個節點定義自己的仲裁片(它成為該仲裁片的事實上的成員)。

法定人數的形成始於法定人數的削減。 對於每個節點,都會新增其剪切節點。 然後添加切片項 這些節點 等等。 隨著您繼續,越來越多的節點無法添加,因為它們已經包含在切片中。 當沒有更多的新節點要添加時,該過程停止:我們透過初始節點的仲裁切片的「傳遞閉包」形成了仲裁。

了解恆星共識協議
要從給定節點查找仲裁...

了解恆星共識協議
....新增其切片的成員...

了解恆星共識協議
……然後我們加入這些節點的切片成員。

了解恆星共識協議
我們繼續,直到沒有剩餘的節點可供新增。

了解恆星共識協議

了解恆星共識協議
沒有剩餘節點可供新增。 這是法定人數。

事實上,每個節點可以出現在多​​個切片中。 要形成法定人數,請僅選擇其中一個切片並新增成員; 然後為每個成員選擇任意切片並新增成員 切等。 這意味著每個節點都是許多可能的法定群體的成員。

了解恆星共識協議
每一步僅選擇一個仲裁片。

了解恆星共識協議

了解恆星共識協議

了解恆星共識協議
一個可能的法定人數。 或另一種選擇...

了解恆星共識協議
...選擇其他切片...

了解恆星共識協議

了解恆星共識協議
……(如果可能的話)……

了解恆星共識協議
....創建另一個法定人數。

節點如何知道其他節點位於哪些切片中? 與其他節點的其他資訊一樣:來自每個節點在其投票狀態發生變化時向網路廣播的傳輸。 每個廣播都包含有關發送節點的切片的資訊。 SCP白皮書沒有指定通信機制。 實作通常使用 八卦協議 確保訊息在整個網路中的廣播。

回想一下,在非聯邦拜占庭協議系統中,法定人數被定義為所有節點的大多數。 拜占庭協議系統是從這個問題的角度來設計的:系統可以容忍多少個不誠實的節點? 在由 N 個節點組成的系統中,設計可以承受 f 個故障,一個節點應該能夠透過接收來自 N−f 個對等點的回饋來取得進展,因為其中有 f 個節點可能已關閉。 但是,在收到來自 N−f 個對等點的回應後,我們可以假設所有 f 個對等點(節點未從其中收到回應)實際上都是誠實的。 因此,N−f 個對等點(從中收到回應)中的 f 個是惡意的。 為了讓節點達成相同的共識,剩餘的大多數節點必須是誠實的,也就是說,我們需要 N−f 大於 2f 或 N > 3f。 因此,通常設計為能夠承受 f 次故障的系統總共有 N=3f+1 個節點,仲裁大小為 2f+1。 一旦提案通過了法定人數閾值,網路的其餘部分就會確信任何競爭提案都會失敗。 這就是網路收斂到結果的方式。

但在聯邦拜占庭協議體系中,不但不能有多數(因為沒有人知道網路的總規模),而且多數的概念完全沒有用! 如果系統中的成員資格是開放的,那麼有人只需執行所謂的 Sybil 攻擊即可獲得多數席位:跨多個節點重複加入網路。 那為什麼可以呼叫傳遞切片閉包 法定人數,以及它如何能夠抑制競爭提案?

從技術上來說,不可能! 想像一個由六個節點組成的網絡,其中兩個三元組在彼此的仲裁切片中相互隔離。 第一個小組可能會做出第二個小組永遠不會聽說的決定,反之亦然。 這個網絡沒有辦法達成共識(除非是偶然)。

因此,SCP 要求,對於聯邦投票(以及要應用本文的重要定理),網路必須具有稱為 法定人數的交集。 在具有此屬性的網路中,可以建構的任何兩個仲裁總是在至少一個節點中重疊。 為了確定網路的普遍情緒,這與擁有多數票一樣好。 直觀地說,這意味著如果任何法定人數同意聲明 X,則其他任何法定人數都不能同意其他任何內容,因為它必然包括第一個法定人數中已經投票給 X 的某個節點。

了解恆星共識協議
如果網絡中存在法定人數的交集......

了解恆星共識協議
....然後您可以建立任兩個法定人數...

了解恆星共識協議
……總會相交的。

了解恆星共識協議

了解恆星共識協議

(當然,重疊的節點可能會被證明是拜占庭式謊言或其他不好的情況。在這種情況下,法定人數交集根本無助於網絡達成一致。因此,SCP 白皮書中的許多結果都是基於明確的假設,例如網路仲裁交叉中還剩下什麼 即使刪除壞節點後。 為了簡單起見,讓我們保留這些假設 隱含的 在本文的其餘部分)。

期望在獨立節點的網路中實現可靠的群體交叉似乎是不合理的。 但造成這種情況的原因有兩個。

第一個原因是網路本身的存在。 互聯網是具有交叉群體的獨立節點網路的完美範例。 網路上的大多數節點僅連接到少數其他本地節點,但這些小集合重疊得足夠多,以至於可以沿著某些路線從每個其他節點到達每個節點。

第二個原因是特定於 Stellar 支付網路(SCP 最常見的用途)。 Stellar網路上的每一項資產都有一個發行人,Stellar的指導方針要求每個發行人指定網路上的一個或多個節點來處理贖回請求。 對於您感興趣的每個資產,直接或間接將這些節點納入仲裁切片中符合您的最佳利益。 對給定資產感興趣的所有節點的法定人數將至少在那些兌換節點上重疊。 對多種資產感興趣的節點將把各個發行人的所有贖回節點納入其法定人數切片中,並且他們將尋求將所有資產集中在一起。 此外,任何未以這種方式連結到網路上其他資產的資產,以及 不應連接 - 這樣設計是為了使該網絡沒有法定人數重疊(例如,美元區的銀行有時希望與歐元區的銀行和比索區的銀行進行交易,因此它們位於同一網絡上,但沒有他們中的一些人關心出售棒球卡的兒童獨立網絡)。

當然 ожидание 法定人數交叉不是 保證。 其他拜占庭協議系統的複雜性很大程度上歸功於法定人數的保證。 SCP 的一個重要創新在於,它將創建仲裁的責任從共識演算法本身中移除,並將其帶到了應用程式層級。 因此,儘管聯邦投票足夠普遍,可以對任何問題進行投票,但其可靠性實際上關鍵取決於這些含義的更廣泛含義。 某些假設用途可能不像其他用途那樣有利於創建連接良好的網路。

投票、接受和確認

在聯合投票輪中,節點可以選擇開始對某個值 V 進行投票。這意味著向網路廣播一條訊息:“我是節點 N,我的仲裁切片是 Q,我正在為 V 投票。” 當節點以這種方式投票時,它承諾它從未投票反對 V,也永遠不會。

在點對點廣播中,每個節點都可以看到其他節點如何投票。 一旦節點收集了足夠的這些訊息,它就可以追蹤仲裁切片並嘗試尋找仲裁。 如果他看到法定人數的同行也投票給 V,他可以繼續 採用 V 並向網路廣播這條新訊息:“我是節點 N,我的仲裁切片是 Q,我接受 V。” 接受比簡單的投票提供了更有力的保證。 當一個節點投票給 V 時,它永遠不能投票給其他選項。 但如果一個節點接受 V,網路上的任何節點都不會接受其他選項(SCP 白皮書中的定理 8 證明了這一點)。

當然,很可能不會立即出現與 V 一致的節點法定人數。其他節點可能會投票支持其他值。 但節點還有另一種方式從簡單投票轉向接受。 N 可能會接受 W 的不同值,即使他沒有投票支持它,即使他沒有看到它的法定人數。 要決定更改您的投票,只需查看 阻塞集 已接受 W 的節點。阻塞集是每個仲裁片 N 中的一個節點。顧名思義,它可以 堵塞 任何其他含義。 如果這樣一個集合中的所有節點都接受 W,那麼(根據定理 8)將永遠不可能形成採用不同值的法定人數,因此 N 接受 W 也是安全的。

了解恆星共識協議
具有三個仲裁切片的節點 N。

了解恆星共識協議
BDF 是 N 的阻塞集:它包括 N 的每個切片中的一個節點。

了解恆星共識協議
BE 也是 N 的阻塞集,因為 E 出現在 N 的兩個切片中。

但阻塞集不是法定人數。 如果只攻擊 N 的每個切片中的一個節點就足夠了,那麼欺騙節點 N 接受所需的值就太容易了。因此,接受該值並不是投票的結束。 相反,N 必須確認該值,即查看接受該值的節點的法定數量。 如果走到這一步,那麼,正如 SCP 白皮書所證明的那樣(定理 11),網路的其餘部分最終也將確認相同的值,因此 N 將以某個值作為結果結束聯邦投票。

了解恆星共識協議
聯合投票。

投票、接受、確認的過程構成一輪完整的聯合投票。 Stellar共識協議結合了許多這樣的輪次來創建一個完整的共識系統。

恆星共識協議

共識系統的兩個最重要的屬性是 - 安全 и 生存能力。 如果共識演算法永遠不會向不同的參與者給出不同的結果(鮑勃的歷史副本永遠不會與卡羅爾相矛盾),那麼它就是「安全的」。 「宜居性」是指演算法總是會產生一個結果,即不會卡住。

描述聯邦投票程序 安全的 從某種意義上說,如果一個節點確認了 V 的值,則其他節點都不會確認另一個值。 但「不會證實另一種含義」並不意味著它一定會證實某事。 參與者可以對如此多的不同值進行投票,以至於沒有任何值會達到接受閾值。 這意味著在聯邦投票中沒有 生存能力.

Stellar共識協議使用聯合投票來確保安全性和生存性。 (SCP的安全性和生存性保證有理論上的限制。設計選擇了非常強的安全性保證,犧牲了少量的生存性緩解措施,但如果有足夠的時間,達成共識的可能性很大。) 簡而言之,這個想法是對多個值進行多次聯合投票,直到其中一個值通過下面描述的所有 SCP 投票階段。

SCP尋求共識的價值觀可以是交易歷史或午餐訂單或其他東西,但需要注意的是,這些並不是被接受或確認的價值觀。 相反,聯邦投票是根據 關於這些價值觀的陳述.

第一輪聯邦投票於 提名階段 (提名階段),在一組類似「我提名V」的陳述上,可能是針對V的許多不同值。提名的目的是找到一個或多個經過接受和確認的陳述。

找到可驗證的候選人後,SCP 進入投票階段,目標是找​​到某個特定的候選人 公告 (即,建議值的容器)和可以聲明的法定人數 犯罪 為了它(提交)。 如果法定人數進行投票,則其值將被接受為共識。 但在節點對選票提交進行投票之前,它必須先確認 消除 所有票數較低的選票。 這些步驟——取消選票以找到可以提交的選票——涉及對多個選票主張進行多輪聯合投票。

以下部分更詳細地描述了提名和投票。

提名

在提名階段開始時,每個節點可以自發地為V選擇一個值,並對「我提名V」這一聲明進行投票。 此階段的目標是透過共同投票確認某些價值的提名。

也許有足夠多的節點對完全不同的提案進行投票,以至於沒有提名能夠達到接受門檻。 因此,除了廣播自己的提名投票之外,節點還「反映」其同行的提名。 Echo 意味著,如果一個節點投票給提名V,但看到來自鄰居的消息投票給提名W,那麼它現在將同時投票給V 和W。(並非所有節點投票都會在提名期間回顯,因為這可能會導致投票激增) SCP包含了一個機制來調節這些投票,簡而言之,有一個公式可以從節點的角度來確定peer的“優先級”,並且只反映高優先級節點的投票。提名時間越長接受,閾值越低,因此節點擴展了將反映其投票的對等體集合。優先級公式包括槽號作為其輸入之一,因此一個槽位的高優先級對等體可能是一個低優先級對等體另一個,反之亦然)。

從概念上講,提名是平行的,V和W都是單獨的聯邦投票,每一個都能夠單獨獲得接受或確認。 實際上,SCP 協議訊息將這些單獨的投票打包在一起。

儘管投票支持 V 的提名意味著永遠不會投票反對 V 的提名,但「反對」的含義是在應用程式層級(在本例中為 SCP)確定的。 SCP 沒有看到與「我提名 X」投票相矛盾的聲明,即不存在「我反對提名 X」的訊息,因此節點可以投票提名任何值。 其中許多提名將一事無成,但最終節點將能夠接受或確認一個或多個值。 一旦提名人被確認,他就成為 候選人.

了解恆星共識協議
使用聯合投票的 SCP 提名。 可以有許多由對等方提出並由節點“反映”的“B”值。

提名可能會產生多個已確認的候選人。 因此,SCP要求應用層提供某種方法將候選者組合成一個 綜合 (合成的)。 連接方法可以是任何方法。 最主要的是,如果這種方法是確定性的,那麼每個節點將組合相同的候選者。 在午餐投票系統中,「統一」可能僅僅意味著拒絕兩名候選人之一。 (但以確定性方式:每個節點必須選擇相同的值來重置。例如,按字母順序排列的較早選擇)。 在恆星支付網路中,對交易歷史進行投票,合併兩個提議的提名人涉及合併它們包含的交易以及兩個時間戳中最新的交易。

SCP 白皮書證明(定理 12),在擴展階段結束時,網路最終收斂為單一組合。 但有一個問題:聯合投票是一種非同步協議(如 SCP)。 換句話說,節點不透過時間進行協調,而僅透過它們發送的訊息進行協調。 從節點的角度來看,尚不清楚何時 結束了 延伸階段。 儘管所有節點最終都會到達同一個組合,但它們可能會沿途採取不同的路線,沿途創建不同的組合候選,並且永遠無法判斷哪一個是最終的。

但也很正常。 提名只是準備。 主要是限制候選者的數量以達成共識,這發生在這個過程中 競選公職 (投票)。

跑步

公告是一對,其中 counter 是從 1 開始的整數,value 是提名階段的候選人。 這可以是節點本身的候選者或該節點接受的相鄰節點的候選者。 粗略地說,投票涉及反覆嘗試,透過在選票聲明上持有潛在的許多聯合投票,迫使網路在某些選票上就某些候選人達成共識。 選票上的計數器會記錄所做的嘗試,計數較高的選票優先於計數較低的選票。 如果時事通訊陷入困境,新的投票開始,現在在選票上。

區分是很重要的 (例如,午餐應該是什麼:披薩或沙拉), 時事通訊 (反值對)和 陳述 關於選票。 SCP 輪包括多輪聯邦投票,特別是針對以下聲明:

  • 「我已準備好進行 B 選票」並且
  • “我宣布投票 B 的提交”

從給定節點的角度來看,當它找到可以確認(即找到法定人數接受)聲明“我提交選票 B”的選票 B 時,就達成了共識。 從此時起,可以安全地按照 B 中指定的值採取行動 - 例如,下午餐訂單。 它被稱為 外在化 含義。 一旦確認接受選票,節點就可以確定任何其他節點已經外部化了相同的值或將來會這樣做。

儘管許多聯合投票在概念上是針對許多不同選票的主張進行的,但它們不會交換那麼多訊息,因為每個訊息都封裝了許多選票。 因此,一則訊息會同時促進許多聯合投票的狀態,例如:「我接受範圍從前」

「準備」和「提交」這兩個詞是什麼意思?

當節點確信其他節點不會提交具有不同值的選票時,節點會投票提交選票。 準備申請的目的就是要證明這一點。 表示「我準備好提交選票 B」的投票是承諾永遠不會提交小於 B 的選票,即計數較小的選票(SCP 要求選票中的值按一定順序排列。因此,時事通訊較少的,如果 N1

為什麼「我準備好提交選票 B」意味著「我保證永遠不會提交小於 B 的選票」? 因為 SCP 將中止定義為提交的反義詞。 準備選票的投票還涉及取消其他一些選票資格的投票,正如我們之前討論的,投票支持一件事就是承諾永遠不會投票反對它。

在廣播提交之前,節點必須先找到一個可以確認已準備好的公告。 換句話說,它對主題「我準備好提交選票 B」進行聯合投票,可能對許多不同的選票進行聯合投票,直到找到接受法定人數的選票。

準備投票所需的選票從哪裡來? 首先,節點廣播投票<1,C>的準備情況,其中C是提名階段產生的複合候選人。 然而,即使在投票準備工作開始之後,提名也可能導致更多候選人成為新的選票。 同時,同級可以有不同的候選人,他們可以形成一個阻塞集,接受“我準備好提交 B2 選票”,這將說服節點也接受它。 最後,還有一個超時機制,如果當前選票被卡住,它會針對計數較高的新選票產生新一輪的聯合投票。

一旦節點發現可以確認已準備好的選票 B,它就會廣播一條新訊息「提交選票 B」。 這個投票告訴peer節點該節點永遠不會放棄B。事實上,如果B是一張選票,然後「提交選票" 指無條件同意投票支持每張選票的準備情況到 < 無窮大, s >。 如果其他對等方仍處於協議的早期階段,則此額外值可協助其他對等方趕上提交對等方。

在這個階段,值得再次強調的是,這些都是非同步協議。 僅僅因為一個節點對提交發送贊成票並不意味著它的對等節點也會這樣做。 他們中的一些人可能仍在對聲明進行投票,準備投票,其他人可能已經將其含義具體化了。 SCP 解釋了節點應如何處理每種類型的對等訊息,無論其處於什麼階段。

如果訊息「我已經宣布提交» 無法接收或確認,即訊息被接受或確認的機率或者- 或者,在任何情況下,任何值為 C 的選票,而不是任何其他選票,因為節點已經承諾永遠不會取消。 當節點廣播對提交的投票時,它將是 C 或什麼都沒有,這取決於共識的進展程度。 然而,這還不足以讓節點外部化 C。一些拜占庭對等點(根據我們的安全假設,其組成少於法定人數)可能會對節點撒謊。 接受並然後確認一些選票(或選票範圍)使節點有信心最終將 C 外化。

了解恆星共識協議
SCP透過聯合投票進行投票。 未顯示:計時器可能隨時響起,增加選票計數(並可能產生新的額外提名候選人組合)。

這就是全部! 一旦網路達成共識,就準備好一次又一次地這樣做。 在 Stellar 支付網路上,這種情況大約每 5 秒發生一次:這項壯舉需要 SCP 保證的安全性和生存性。

SCP 可以透過多輪聯合投票來實現這一目標。 聯合投票是透過仲裁切片的概念實現的:每個節點決定信任的對等點集合,作為其(主觀)仲裁的一部分。 這種配置意味著即使在具有開放會員資格和拜占庭欺騙的網路中也可以達成共識。

進一步閱讀

  • 原始SCP白皮書可以找到 這裡這裡 草案實施規範。
  • SCP 協議的原作者 David Mazier 以簡化(但仍然是技術性的)方式對其進行了解釋。 這裡.
  • 您可能會驚訝地發現本文中沒有「挖礦」或「工作量證明」等術語。 SCP 沒有使用這些方法,但其他一些共識演算法卻使用了這些方法。 贊恩威瑟斯彭 (Zane Witherspoon) 寫道: 共識演算法概述.
  • 逐步說明 一個在一輪 SCP 中達成共識的簡單網路。
  • 對於對 SCP 實作感興趣的讀者:請參閱 C++程式碼,由 Stellar 支付網絡使用,或 去代碼,我寫這篇文章是為了更好地理解 SCP。

來源: www.habr.com

添加評論