加入PolkaWorld 社區,共建Web 3.0!
這篇文章是由Polkadot 聯合創始人Robert 發布的關於Polkadot 分片和經濟安全的技術文章,原文篇幅較長,PolkaWorld 將分四篇翻譯和發布!本篇是該文章的第一部分!請查閱!
這篇文章是關於支撐Polkadot 的技術。 Polkadot 是具有異構分片的分片區塊鏈。在這種情況下,分片意味著將工作拆分到多個子區塊鏈上,稱為平行鏈。異構意味著每個區塊鏈都有自己的狀態轉換功能,該功能專為特定用例而構建。不同類型的交易會有不同的歸屬地,這使得特定場景的鏈可以最有效地為其用戶服務。 Polkadot 為所有平行鏈提供安全和消息傳遞功能。
這篇文章主要是為對區塊鏈共識有一定了解的技術讀者寫的。我希望它對除了開發者以外的人有用,並為大家提供對基礎層區塊鏈面臨的問題和挑戰以及Polkadot 如何解決這些問題的見解。我不會詳細介紹我們的解決方案的每一個細微差別,但我會深入描述我們考慮的事物類型以及如何保證我們的目標實現。
Polkadot 之前的鏈
對區塊鏈的簡化理解只涉及一條單鏈,從這條鏈的創世區塊延伸到其盡頭。對於許多人來說,這是唯一重要的鏈概念,它代表了所有已經發生並已被網絡同意的狀態轉換。任何區塊鏈共識系統的最終目標都是為觀察者提供這一事實來源。然而,這條單鏈,我們可以稱為最終鍊或規範鏈,只是可能存在的許多可能的競爭鏈中最後剩下的倖存者。區塊鏈共識算法的作用是從許多可能的鏈開始,最終只確定其中一個。
區塊生產者可以產生下一個區塊,但一次可能有多個獲勝者。在工作量證明中,礦工通過找到一種方法來生成一個新塊,當該塊hash 到一個低於某個困難目標的唯一隨機數,從而獲得在給定塊之上的生產塊的權利。在充分競爭的環境中,礦工可能需要大量嘗試才能找到滿足此條件的區塊。作為參考,在撰寫本文時,比特幣網絡的累積哈希率為每秒162 Exahashes,這意味著比特幣礦工總每秒要嘗試162 萬億次來獲得貢獻下一個區塊的權利,難度目標設定為平均每10 分鐘只有一個哈希值低於目標值。請注意,多個礦工可以大致同時找到一個解決方案,該解決方案在區塊鏈中引入了一個小分叉。未來的礦工將不得不選擇在哪些區塊上進行開採,這可能會導致分叉變長。規則是遵循最長的鏈,對於從過去的區塊開始的攻擊者來說,追趕並壓倒更長的鏈變得越來越困難。因此,在最長鏈中足夠深的塊可以被認為是概率上最終的塊。
Ouroboros 系列權益證明協議使用稱為可驗證隨機函數(VRF) 的加密技術,通過將時間劃分為離散的插槽並將每個驗證人從已註冊和質押的驗證人集合(驗證人集合)中分配出來來模擬工作證明每個slot 產生一個可驗證的隨機值的機會,如果低於閾值,則作為允許驗證人創建新塊的憑證。與工作量證明一樣,多個驗證人可能會產生一個低於閾值的VRF 值並同時創建塊,從而導致分叉。驗證人不會激勵故意引入分叉,他們會受到slash 懲罰來扣除他們的鏈上的質押。這些協議還提供了最長鏈分叉選擇規則下的概率確定性。
與工作量證明中的礦工不同,Ouroboros 式網絡中的驗證人只需要運行一次計算就有機會創建一個塊,而不像礦工必須做的大量哈希值。這允許驗證人將大部分時間花在構建帶有交易的區塊上,並隨後允許區塊鏈包含更有價值的計算。
Polkadot 的中繼鏈使用一種稱為BABE 的協議,它是Ouroboros Praos 的演變。 BABE 對Praos 的具體改進是BABE 避免了依賴中心化NTP 服務器讓驗證人知道當前時間。
雖然概率確定性很好,但等待一個塊在最長鏈中達到一定深度是一種效率低下的機制,因為它旨在適應預期的最壞情況,即網絡處於一定程度的網絡壓力和攻擊之下。可能大多數網絡已經就哪些區塊是規範鏈的一部分達成了一致。事實上,在幾乎所有情況下,網絡都能夠在一個區塊達到最長鏈的最小深度之前就已經達成共識。為此,我們引入了確定性小工具(finality gadget)和絕對確定性(absolute finality)的概念。最終性小工具是在概率性最終區塊鏈之上運行的二級共識協議,它證明了網絡將認為哪些區塊是最終區塊的更快協議。這些共識協議引入了進一步的經濟安全屬性:在不slash 懲罰至少1/3+ 驗證人集合總權益的情況下,確定性小工具永遠不會最終確定2 個競爭塊。
Polkadot 的中繼鏈使用稱為GRANDPA 的確定性小工具。它可以在任何特定長度的子鏈上實現近乎瞬時的最終確定性,並且通過讓驗證人反復對他們認為位於最長鏈頭部的塊進行反复投票來粗略地發揮作用。 GRANDPA 目前在Polkadot 和Kusama 網絡上運行,在撰寫本文時擁有900 個驗證人的Kusama 上,它可以在3 秒內實現新區塊的最終確定性。
BABE 和GRANDPA 的結合允許Polkadot 僅使用來自單個驗證人的輸入來樂觀地增長鏈,這很快,並通過獲得絕大多數驗證人的簽名在後台完成。這種屬性的組合意味著在良好的網絡條件下,Polkadot 實現了高吞吐量和低延遲,而在糟糕的網絡條件下,中繼鏈實現了高吞吐量和(更)高延遲,因為GRANDPA 將轉向跟踪BABE 的最終性。
分片:通過子集選擇進行擴展
讓我們回到分片。分片的目標是通過以交易的形式在許多稱為分片的鏈上拆分工作來提高吞吐量。分片由頂級區塊鏈引用和保護。在Polkadot 中,頂級區塊鏈稱為中繼鏈,分片是平行鏈。中繼鏈上出現的大多數數據都是包含對新平行鏈區塊的引用的交易,這使得處理中繼鏈本身的任何分叉變得便宜。請注意,我在這里區分了中繼鏈的任意分叉和最終的中繼鏈。我們在這裡的大部分工作是確保中繼鏈的最終部分(用戶將其視為規範鏈)僅包含對有效平行鏈塊的引用。
此圖或類似圖在互聯網上廣泛分佈。它們展示了驗證人如何被分成組並分配給平行鏈,並從收集人那裡獲得平行鏈區塊提案。在這篇文章中,我對許多更細微的概念進行了視覺解釋。
如果每個驗證人只需要檢查一些提交的平行鏈塊,而不是全部,分片就只是對可擴展性的改進。如果有10 條平行鏈,並且每個驗證人必須檢查所有10 條鏈中的所有區塊,我們不妨將所有交易放在一個區塊鏈上,然後收工。訣竅是找到一種方法,讓每個驗證人在保持經濟安全的同時盡可能少地做驗證工作:提倡不良平行鏈區塊的驗證人在經濟上不會受到激勵。更具體地說,在他們所有質押被懲罰之前,將一個壞的平行鏈區塊包含在最終的中繼鏈中,一組對抗性的驗證人應該不可能串通一氣。驗證人,實際上是驗證人的一小部分,可以串通以獲得中繼鏈的未最終分叉所引用的不良平行鏈塊,但我們保證這些分叉在最終確定之前被忽略,並且違規者被懲罰。
當引用它們的中繼鏈塊最終確定時,平行鏈塊被最終確定。
當引用它們的中繼鏈塊最終確定時,平行鏈塊被最終確定
讓我們對我們要防禦的對手做出一些具體的假設:
-
攻擊者最多可以控制所有驗證人的1/3,並且可以控制所有這些驗證人的行為完全符合預期。
-
攻擊者可以查看誠實驗證人人與其控制的驗證人之間的所有網絡消息
-
攻擊者可以隨時拒絕最多X% 的驗證人,阻止他們發送或接收消息。
-
在攻擊者開始拒絕任何驗證人之前需要一個固定的延遲
在這篇文章中,我不會為該協議設置正式的安全證明,但這些約束應該可以讓我們深入了解我們打算防禦的攻擊類型。
事實上,我們平行鏈共識的基本單元實際上並不是平行鏈,而是我們稱之為可用性內核或簡稱內核的東西。這些類似於CPU 內核:它們並行運行,並在離散的slot 中安排工作。每個平行鏈都有自己的專用內核,這意味著它總是被調度到一個特定的內核上。但是,我們也可以將多個鏈多路復用到一個內核上。唯一的區別是調度算法。
內核服務是中繼鏈吞吐量的有效描述。內核直接對應於驗證人需要做的工作量。每個內核最多可以在每個中繼鏈塊處理一個平行鏈塊,在峰值。
在任何分片區塊鏈系統中,只有一些驗證人檢查每個平行鏈塊,數據可用性是確保檢查平行鏈塊所需的數據可以恢復以進行欺詐檢測的關鍵組成部分。可用性內核由中繼鏈管理,並跟踪哪些平行鏈塊正在等待數據可用性。可用性內核的主要目的是作為調度原語,並在數據可用性比平時慢時提供背壓。
可用性內核的邏輯如下所示。當內核准備好接受新的平行鏈塊時,內核是空的,此時它們被佔用。然後,數據要么變得可用,要么可用性過程超時。那時,內核再次變空。
將平行鏈共識劃分為5 個不同的協議是有幫助的,這些協議在中繼鏈共識中交織在一起。
-
收集
-
支持
-
可用性
-
審批檢查
-
爭議Disputes
Collation 收集是創建平行鏈塊的過程。收集人構建一個平行鏈塊並將其發送給驗證人。
Backing 支持是由一小組中繼鏈驗證人最初檢查平行鏈塊並在中繼鏈上註冊的過程。支持的主要副產品是,如果後來的協議失敗,它要求驗證人將自己置於危險之中。
Availability 可用性是支持驗證人分發檢查平行鏈塊所需的數據片段並確保以後可以檢查的過程。
Approval Checking 批准檢查是隨機驗證人恢復數據並執行平行鏈區塊的過程。他們根據是否認為平行鏈區塊有效來批准或發起爭議。
Disputes 爭議是解決驗證人對平行鏈區塊的衝突意見、忽略不良平行鏈區塊並懲罰違規者的過程。爭議僅作為故障保險存在,預計不會經常觸發。
請注意,驗證人可能同時參與這些協議中的每一個,並且通常是它們的多個實例化。例如,驗證人可能在參與支持較新區塊和對更舊區塊爭議的同時,參與對管道更下游的平行鏈區塊的批准投票。
這種內部並行性也反映了實現的架構:這些協議中的每一個都被實現為一個獨立的子系統,並且所有子系統都並行運行。每個節點總是在做一些事情。
原文鏈接:https://polkadot.network/blog/polkadot-v1-0-sharding-and-economic-security/
翻譯:PolkaWorld 社區