Vitalik:側鏈 VS Plasma VS 分片,區塊鏈擴展方案優劣對比

區塊鏈 技術 設計 巴比特 2019-06-17

特別感謝Jinglan Wang對文章的審閱及提供的反饋。

我們經常會遇到一個問題:分片(sharding)、側鏈以及Plasma有什麼不同?這三種體系結構似乎都涉及了一箇中心“主鏈”的星形拓撲結構,該中心“主鏈”充當系統的共識支柱,此外還有一組包含實際用戶級事務(transaction)的“子”鏈。子鏈中的哈希通常週期性地發佈到主鏈(理論上不帶中心的分片鏈是可能的,但到目前為止還沒有實現,本文不會關注它們,但參數是相似的)。考慮到這種基本的相似性,選擇其中一種方案,而不選用其他方案的理由是什麼呢?

側鏈和Plasma的區分是簡單的。Plasma鏈是具有非監護性質的側鏈: 如果Plasma鏈中存在任何錯誤,則錯誤是可檢測到的,用戶可安全地退出Plasma鏈,並防止攻擊者造成任何持久的傷害。用戶所承受的唯一成本,是他們必須等待一個challenge週期,並在(不可擴展的)基礎鏈上支付一些更高的交易費用。而常規的側鏈則沒有這種安全屬性,因此它們的安全性較低。然而,設計Plasma鏈在很多情況下要困難得多,有人可能會說,對於很多低價值應用而言,增加複雜性而帶來更好的安全性,其實是不值得的。

Vitalik:側鏈 VS Plasma VS 分片,區塊鏈擴展方案優劣對比

(圖:Vitalik Buterin,來自Duncan Rawlinson)

那麼,Plasma和分片之間,又是什麼關係,兩者孰優孰劣呢?關鍵的技術差異在於緊密耦合(tight coupling)的概念。緊密耦合是分片的一種屬性,但不是側鏈或Plasma的屬性,這意味著主鏈(例如以太坊2.0中的信標鏈)的有效性與子鏈的有效性密不可分。也就是說,根據定義,將無效主鏈區塊指定為附屬項的子鏈區塊是無效的,更重要的是,根據定義,包含無效子鏈區塊的主鏈區塊是無效的。

在非分片區塊鏈中,規範鏈(即所有人都接受的代表“真實”歷史的鏈)的定義,是完全可用和有效的;例如,在比特幣和以太坊的情況下,人們通常說規範鏈是“最長有效鏈”(或者,換個更賣弄學問說法是,規範鏈是“最重的有效和可用鏈”)。在分片區塊鏈中,最重有效和可用的規範鏈概念同樣適用,其有效性和可用性要求同時適用於主鏈和分片鏈。然而,分片系統面臨的新挑戰是,由於數據太多,用戶無法直接完全驗證任何給定鏈的有效性和可用性。工程學分片鏈的挑戰在於,通過給用戶一個最大程度的不信任和實際的間接手段來驗證哪些鏈是完全可用和有效的,從而使他們仍然能夠確定哪條鏈是規範的。在實踐中,這包括委員會、SNARKs/STARKs、fisherman方案、欺詐及數據可用性證明等技術。

如果一個鏈結構沒有這種緊密耦合特性,那麼可以說它不是layer-1分片方案,而是一個位於不可擴展的layer-1鏈之上的layer-2系統。Plasma不是一個緊密耦合的系統:一個無效的Plasma塊絕對可以將其塊頭提交到主以太坊鏈中,因為以太坊基礎層不知道它代表一個無效的Plasma塊,甚至根本不知道它代表一個Plasma塊;它看到的只是一個包含一小部分數據的事務。然而,單個Plasma鏈失效的後果,便侷限於該Plasma鏈內。

但是,如果你試圖分析用戶如何執行“間接驗證”程序的過程,以確定他們所查看的鏈是否完全有效且可用,且在不下載和執行整個過程的情況下,則我們可發現分片與Plasma工作方式更為相似的地方。例如,用來防止可用性問題的一種常見技術是fishermen:如果一個節點將一個區塊的給定部分視為不可用,它可以發佈一個聲明此問題的challenge,從而創建一個時間段,任何人都可以在該時間段內發佈該數據。如果一個區塊在足夠的時間內沒有被質疑,則可還原將其作為依賴項進行引用的區塊。這看起來與Plasma基本上類似,在Plasma中,如果區塊不可用,用戶可以將消息發佈到主鏈以響應退出狀態。這兩種技術最終都會在壓力下以同樣的方式屈服:如果一個分片系統中有太多的錯誤challenge,那麼用戶就無法跟蹤是否所有的可用性challenge都得到了解決;如果一個Plasma系統中有太多的可用性challenge,那麼當出口填滿該鏈的塊大小限制時,主鏈可能會不堪重負。在這兩種情況下,似乎系統具有O(C^2)的 可伸縮性(其中C是一個節點的計算能力),但在發生攻擊時,可伸縮性降至O(C)。然而,分片對此具有更多的防禦性。

首先,當前的分片設計使用了隨機抽樣的委員會機制,所以即使是一個委員會也不能輕易地做惡(足以產生一個虛假區塊的程度),除非一個委員會擁有鏈整個驗證器集的很大一部分(可能大於1/3)。

第二,有比fishermen更好的數據可用性處理策略:數據可用性證明。在使用數據可用性證明的方案中,如果區塊不可用,則客戶端的數據可用性檢查將失敗,客戶端會認為該區塊不可用。如果該區塊是無效的,那麼即使是一個欺詐證明也會使得他們相信整個區塊的這一事實。一個O(1)大小的欺詐證明,可以使客戶端相信O(C)大小的區塊是無效的,因此O(C) 數據足以使客戶端相信O(C^2)數據是無效的(在最壞的情況下,客戶端與N哥姊妹區塊交互,所有姊妹區塊的母塊只有一個是有效的;在更可能的情況下,一個單一的欺詐證明就足以證明整個無效鏈的無效性。)因此,理論上說,分片系統比Plasma鏈更不容易被DoS(拒絕服務)攻擊所擊倒

第二,分片鏈在面對大型攻擊者及多數攻擊時提供了更強的保障(超過1/3甚至1/2的驗證者集)。 Plasma鏈總是可被審查退出的主鏈成功地實施51%攻擊,而分片鏈則不能。這是因為數據可用性證明和欺詐證明發生在客戶端內部,而不是鏈內部,因此分片鏈不能被51%攻擊審查。第三,分片鏈提供的防禦更易於概括。Plasma的exit模型要求狀態被分離成獨立的部分,每個部分都符合任何單個參與者的利益,而依賴數據可用性證明、欺詐證明、fishermen以及隨機抽樣的分片鏈,在理論上是廣泛適用的。

然而,Plasma鏈也有很大的優勢。首先,它們是可以進行迭代的,並且可以更快地實現新的設計,因為每個 Plasma鏈可以單獨地進行部署,而不需要協調生態系統的其餘部分。第二,分片本身就更脆弱,因為它試圖保證某些數量數據的全部可用性和有效性,而這個數量必須在協議中設置。如果這個數量太少,則不利於系統的可擴展性,太多,則整個系統都有崩潰的風險。可擴展性的最大級別安全還取決於系統的用戶數,這是一個不可預測的變量。另一方面,Plasma鏈允許不同的用戶在這方面進行不同的權衡,並允許用戶更靈活地適應環境變化。

單運營商Plasma鏈,也可提供比所有數據公開的分片系統更多的隱私性。即使在不需要隱私的地方,它們也可能更有效,因為分片系統的總數據可用性要求需要大量額外的冗餘作為安全邊際。另一方面,在Plasma系統中,對每一數據塊的數據要求可以最小化,從長遠來看,每一數據塊可能只需要複製幾次,而不是像在分片系統中那樣複製一千次。

因此,從長遠來看,一個混合系統,其中存在一個分片基礎層,並在其上存在Plasma鏈,以提供進一步的可擴展性,似乎是最可行的方法,這種混合模型更能夠服務於不同群體的用戶需求,而不是僅僅依賴於一種或另一種策略。不幸的是,Plasma和分片無法摺疊成相同的設計,這兩者在某些關鍵方面有著不可彌補的不同(例如,客戶端在分片系統中進行的數據可用性檢查,不能移動到Plasma中的主鏈,因為這些檢查僅在主觀和基於私有信息進行時才起作用。但這兩種可擴展性解決方案(以及狀態通道!)都擁有一個光明的未來。

相關推薦

推薦中...