Ouroboros Genesis 設計更新

文章來源:

深入探討 Ouroboros Genesis 的設計和實現,它是負責卡爾達諾可靠性和安全性的共識協議的最新版本

Ouroboros Genesis 是對已經很強大的 Ouroboros 協定的一系列增強,具有在網路節點是新的或在缺席後返回時保護網路節點的對策。

Ouroboros 是卡爾達諾區塊鏈核心的共識協議。鑑於卡爾達諾的持續發展和不斷增加的採用,Ouroboros 已沿著其計劃的升級路徑取得進展。 Ouroboros Classic 是第一個可證明安全的權益證明協議。 Ouroboros BFT 是啟用拜倫更新的臨時解決方案。Ouroboros Praos 繼續開發Ouroboros經典版。 Ouroboros 的進化將在 Ouroboros Genesis 中更進一步,目前計劃於 2024 年第三季交付。

本文介紹了 Ouroboros Genesis 協議的開發和實施的最新更新。

到目前為止Ouroboros的故事

區塊鏈是一種在稱為節點的機器之間複製的分散式帳本。由於沒有單一的中央機構,因此必須存在一種機制來保證所有帳本副本的一致性和不變性。該機制就是共識協議。該協議還為節點驗證新區塊並將其添加到鏈中設置了激勵措施。

Ouroboros將卡爾達諾的時間分成紀元(epoch),紀元又細分為時隙(slot)。時隙代表可以建立區塊的短時間段。

當大多數節點在線並且具有一致的帳本副本時,Ouroboros Classic 被證明是安全的。對手無法預測哪個節點將成為下一個時隙領導者(向鏈添加區塊的節點),使得攻擊非常昂貴。

Ouroboros Praos 增加了選擇下一個槽位領導者的隨機性,並增加了針對其他可能攻擊的對策。

Ouroboros Genesis 將解決節點首次加入網路(從創世塊開始)或長時間缺席後重新加入的情況。這些節點在趕上之前都處於脆弱的境地。例如,當對手試圖重寫鏈的歷史記錄時,就會發生遠程攻擊。對手累積了大量股份,使他們能夠比主鏈更快地秘密創建區塊。然後,當備用歷史鏈準備好時,對手嘗試將主鏈切換到對手的鏈。 Genesis 實施將減輕遠端攻擊,除非同步節點變得黯然失色。當攻擊者試圖用惡意對等點包圍受害者節點,從而掩蓋真實網路時,就會發生日食攻擊。

最新動態

Genesis 引入了以下新概念:

  • 帳本同行
  • 輕量級檢查點(作為臨時後備/覆蓋)
  • 限制渴望 (LoE)
  • Genesis密度斷層 (GDD)
  • 耐心限制(LoP)
  • 創世狀態機。

帳本同行

與 Genesis 論文最深的背離是保留 Praos 節點回溯限制的早期架構決策。在 Praos 下,如果沒有人工干預,Cardano 節點回朔不會超過 2,160 個區塊。正如 Genesis 論文中所述,遭受 Eclipse 攻擊的節點多年來只能選擇對抗鏈的擴展,

由於在實踐中節點沒有必要具有無限的回朔能力,因此架構師優先考慮回朔限制,這是資源使用的許多限制的關鍵。在《創世記》中放棄它會刪除先前工程工作的很大一部分所調用的主要不變量。此外,只要同步的 Cardano Genesis 節點能夠存取健康的誠實節點,它就應該像 Praos 節點一樣,不需要回朔超過 2,160 個區塊。

日食對創世節點的潛在威脅比論文中所表達的更嚴重,但論文並沒有直接解決這些問題。這些攻擊危及 Genesis 的安全性,因為持續時間超過幾秒鐘的日食足以讓同步 Genesis 節點從對抗鏈中選擇 2,161 個區塊,儘管實現了 Genesis 密度比較。在不了解誠實鏈的情況下,創世規則將簡單地選擇目前可訪問的最密集的鏈。在日食的情況下,這可能不一定是誠實的鏈條。這與《創世記》論文形成鮮明對比,在《創世記》論文中,黯然失色的節點及其用戶只是被延遲、困惑、誤導等。或活躍性,因為該節點最終可以連接到誠實的對等方,並且因此恢復。

僅考慮 Praos 網絡,理論上節點永遠不會落後,日食仍然可能是有害的。與 Genesis 的主要區別在於,Praos 節點(本質上被追趕)可以承受更長的日食,然後才很有可能加入對抗鏈。然而,即使不考慮同步過程中的額外漏洞,Praos 節點確實需要一些針對日食的防禦。

一種防禦措施是在節點選擇邏輯中引入帳本節點的概念,以充分限制日食的機率和持續時間。在同步時,創世節點會調整其帳本對等配置,以大幅降低黯然失色的可能性。如果沒有日食,創世節點將永遠不會從對抗鏈中選擇 2,161 個區塊。

更改後的對等選擇的工作原理如下。透過檢查最近的權益分佈,創世節點會選擇參與維護網路的樣本節點,從而大大降低了選擇惡意節點的機率。

後備方案:輕量級檢查點

Genesis 論文指出,健康的 Praos 網路中的最佳鏈將在兩條鏈交叉後立即在固定時隙視窗中擁有比任何其他鏈更多的區塊。唯一的例外是 Praos 網路不健康。

嚴重的網路中斷需要執行災難復原計劃,該計劃需要利益相關者之間進行鏈下合作,在中斷間隔內重寫鏈以修復誠實的鏈。發生這種情況後,創世規則將再次有利於誠實的鏈。

然而,災難復原計劃的執行本質上是困難且昂貴的。至少與此同時,簡單的檢查點機制將使足夠大的警惕的權益池運營商的合作子集在區塊生產中斷期間或之後立即快速輕鬆地保持對網路的控制。

邏輯很簡單並且與協議的其餘部分一致:一個配置文件指定區塊號和哈希對的列表,每個區塊都會導致具有相同區塊號的任何其他區塊被視為無效。此檢查點的配置資料應謹慎使用,並且僅從可信任來源取得。理想情況下,復原計畫的最終執行將允許(甚至要求)對檢查點清單的反應性添加是臨時的。唯一永久的檢查點將確保拜倫時代的創世金鑰不再與卡爾達諾鏈相關。

限制渴望

由於帳本對等點有效地防止了日蝕,因此同步節點可以假設它至少有一個健康的對等點為所有誠實鏈提供服務。因此,透過簡單地禁止同步創世節點選擇超過其帳本對等鏈的交集的鏈中超過 2,160 個區塊,可以直接確保安全性。它只會選擇所有帳本節點都同意的區塊,其中幾乎肯定包括誠實的節點。此約束稱為渴望限制 (LoE),因為同步節點不得急切地提交其迄今為止看到的最佳區塊。敵對節點為其替代區塊提供服務的速度可能比任何誠實節點為歷史區塊提供服務的速度要快得多。

Genesis密度斷層

對於攻擊者來說,濫用 LoE 導致受害者停止同步區塊、違反同步節點的活躍屬性是微不足道的。有以下三種方法:

• 攻擊方聲稱它沒有更多的塊
• 攻擊方服務替代鏈
• 攻擊方聲稱它有替代區塊,但也不提供服務。

創世記論文中的基本規則直接緩解了前兩個問題。如果兩個對等點服務於不同的鏈,並且至少其中一條鏈在相交後擁有不少於2,161 個區塊,則Genesis 優先選擇在兩條鏈相交後在固定時隙窗口中擁有更多區塊的鏈。 (誠實的鏈總是會贏得這種比較。回想一下,共享前綴反映了鏈的交叉點,即使其中一條鏈只是另一條鏈的延伸。)創世節點將通過與另一個對等點斷開連接來支持誠實的鏈。此操作稱為創世密度斷開 (GDD)。經過足夠多的 GDD 後,剩餘節點的交集將沿著歷史誠實鏈走得更遠。

耐心限制

第三種攻擊向量是最難分析的。由於對等方聲稱擁有更多區塊,因此 GDD 被停用。也就是說,它聲稱,如果允許有更多時間來服務更多區塊,則該固定視窗中的區塊計數將會增加。誠實的節點總是真誠地做出這樣的聲明,直到同步節點確實擁有所有誠實的區塊。但攻擊者可能會惡意地提出這樣的主張。耐心限制(LoP)確保聲稱擁有更多區塊的節點必須實際發送它們,並且要及時發送。關鍵的複雜性在於,即使是誠實的對等點也無法連續數小時保持完美的響應能力,它們偶爾會出現延遲突發等。是處理速率塊,而對等點已經聲明了塊並且正在以比某個慷慨的最低速率慢的速度提供塊,但是每個誠實對等點的存儲桶容量將足夠高,以吸收通常從健康賬本對等點預期的突發延遲。

創世狀態機

一旦 Genesis 節點發現自己被趕上,就會停用 LoE、GDD 和 LoP,這有兩個重要原因。首先,Praos 網路中陷入困境的節點從根本上必須在其當選的時隙中鑄造出最好的區塊。例如,如果這樣的節點仍在使用創世規則,那麼強大的對手可能會濫用 LoE 來暫時禁止受害者選擇其剛剛鑄造的區塊,從而阻止其傳播到網路。很難限制此類向量在系統範圍內的影響,因此 Genesis 節點在不同步時的行為應該與 Praos 節點完全相同。

其次,追趕節點不需要與同步節點一樣多的對等節點,因為它不容易受到日蝕的影響。因此,由於所有節點維護誇大的帳本對等計數而為網路帶來顯著的額外負載是不必要且不可取的。 Genesis 狀態機管理節點在考慮自身是否被捕獲之間的轉換:

  • 當捕獲時,節點將停用LoE、GDD 和LoP。 • 如果滿足以下條件,節點就會斷定它已被捕獲:

    • 它有足夠的帳本同行
    • 所有節點都聲稱沒有額外的區塊(經過良好調整的 LoP 確保必須盡快發生)
    • 該節點已經選擇了同行中最好的鏈。 這比信任本地選擇的年齡等更可靠,因為攻擊方可能能夠觸發此類閾值,導致受害者過早降低其防禦。
  • 如果節點鏈太舊(例如,20 分鐘左右),則節點將回退到同步。值得注意的是,如果機器睡眠時間夠長(例如,使用者合上筆記型電腦蓋子一段時間),這種情況就會在節點作業系統進程的生命週期內發生。

下一步

上述設計在過去一年左右已經穩定下來。雖然它仍在略有發展,但沒有重大變化。在過去的幾個月裡,IOG 一直與 Tweag 合作實施和測試它。

第一個支持 Genesis 的實現計畫於 2024 年第三季發布。

在那之前,即將推出的引導對等設計將作為 Genesis 的增量。引導狀態機是 Genesis 狀態機的一個更簡單的變體。同步時,節點僅與引導節點通信,其中每個節點都是可信的,因此 LoE、GDD 和 LoP 是不必要的。相較之下,Genesis 將允許同步節點安全地包含不可信的對等點,只要它不黯然失色(即,只要一個對等點是誠實的),這將允許引導引導對等點退休,從而分散同步節點的基礎設施並滿足銜尾蛇創世紀的承諾。