從長期來看,一個將 Plasma 和 Sharding 混合起來的系統 (其中基礎層進行分片,Plasma 鏈則存在於基礎層之上,以提供更進一步的擴展性) 似乎要比只依賴於其中一種策略的系統更能夠滿足不同用戶羣體的需求。在這篇文章中以太坊創始人 V 神將詳述三者的差異與區別。

原文標題:《側鏈、Plasma 和 Sharding 三者之間有何區別?V 神幫你解答!
作者:Vitalik Buterin
編譯:Jhonny

一個經常出現的問題是:Sharding 與側鏈 (sidechain) 或 Plasma 到底有什麼不同?這三種體系結構似乎都涉及到一種中心輻射型體系結構(hub-and-spoke architecture),即由一條處於中心的、支撐系統共識的「主鏈」和一組包含實際用戶交易的「子鏈」組成的結構。

子鏈的哈希通常會定期地發佈到主鏈中 (理論上來說,不存在主鏈的分片鏈可能也是這樣,但目前還沒有實現;本文將不會專注於這方面,但其中的論據是差不多的)。基於這些基本的相似性,爲何在這三種方案的採用方面會存在差異呢?

區分側鏈 (sidechain) 和 Plasma 是相對簡單的。Plasma 鏈其實就是具有非託管特徵的側鏈:如果 Plasma 鏈中出現任何錯誤,那該錯誤可以被檢測到,且用戶可以安全地從 Plasma 鏈中退出,阻止攻擊者造成任何持久的破壞。

Plasma 用戶需要付出的唯一代價就是他們必須等待一個挑戰期 (challenge period),並在 (擴展性較差的) 主鏈上支付更高的交易費。普通的側鏈並沒有這種安全特性,因此它們往往沒有那麼安全。但是在很多情況下,設計 Plasma 鏈要更加困難複雜,且有人可能會認爲,對於許多低價值的應用程序來說,並不值得爲這些程序的安全而增加這種複雜性。

那 Plasma 和 Sharding 之間進行對比呢?兩者之間的關鍵技術差異與緊密耦合(tight coupling)這一概念有關緊密耦合是 Sharding 的一個特徵,但並不是側鏈或 Plasma 的特徵,也就是說,在 Sharding 系統中,主鏈 (在以太坊 2.0 中稱爲「beacon chain (信標鏈)」) 與子鏈的有效性是分不開的。換句話說,如果子鏈上的某個區塊附屬於主鏈上的某個無效區塊,那該子鏈區塊也是無效區塊;更重要的是,如果主鏈上的某個區塊包含了一個無效的子鏈區塊,那該主鏈區塊也是無效區塊。

沒有分片的區塊鏈網絡(比如當前的以太坊網絡) 中,規範鏈 (也即網絡中的所有人都認爲包含了「真實」歷史記錄的那條鏈) 被認爲是完全可用且有效的;以比特幣和以太坊爲例,一個典型的說法就是,規範鏈 (canonical chain) 就是那條「最長的有效鏈」(更學究式的說法是那條「最重的有效可用鏈」)。

而在有分片的區塊鏈網絡(比如未來實現的以太坊 2.0 網絡) 中,「規範鏈是那條最重的有效可用鏈」的觀念依舊適用,有效性和可用性既是對主鏈的要求,也是對分片鏈的要求

但是,分片系統所帶來的全新限制挑戰是,用戶無法直接地充分驗證某條特定鏈的有效性和可用性,因爲數據實在太多了。設計分片鏈面臨的挑戰是需要通過給予用戶最大程度上的無需信任和實際間接的方式來驗證哪條鏈是完全可用和有效的鏈,以此來繞過這個限制,這樣用戶就仍能決定哪條鏈是規範鏈了。在實踐中,這涉及到了諸如 committees(委員會)、SNARKs/STARKsfisherman schemes(漁夫方案) 以及 fraud &data availability proofs(欺詐和數據可用性證明) [1] 等技術。

如果某條鏈的結構並沒有這種緊密耦合特徵,那可以說該結構就不是一個 Layer 1 分片方案,而只是一個位於無法擴展的 Layer 1 主鏈之上的 Layer2 系統。Plasma 並不是一個緊密耦合的系統:一個無效的 Plasma 區塊完全可以將其區塊頭 (header) 提交至以太坊主鏈上,因爲以太坊基礎層無法知曉該區塊頭代表了一個無效的 Plasma 區塊,甚至無法知曉該區塊頭是代表了一個 Plasma 區塊;以太坊基礎層所能看到的只是一筆包含一小段數據的交易而已。但是,單條 Plasma 鏈失效的影響只會侷限在該條 Plasma 鏈之中

一文看懂側鏈、Plasma 和 Sharding 三者之間區別

但是,如果你在不下載和執行整個操作的情況下,去分析用戶爲了確定他們正在查看的鏈是否完全有效和可用的過程,那你可能會發現, Plasma 的運作方式和 Sharding 存在更多的類似之處。

比如,在 Sharding 中,用於阻止可用性問題的一項常用技術就是漁夫 (fishermen) 方案:如果某個節點認爲某個區塊的其中一段數據不可用 (unavailable),那該節點可以對此發佈一個挑戰,從而創造了一個時間段,在該時間段內,任何人都可以發佈這段數據。如果某個區塊在足夠長的時間內沒有被挑戰,那麼那些附屬於該區塊的其他區塊就可能被回滾 (revert)。這似乎與 Plasma 很類似,在 Plasma 中,如果某個區塊不可用,用戶可以向主鏈發佈一條消息,從而當主鏈響應時進行狀態退出。

這兩種技術最終都可能以相同的方式在面臨壓力是做出讓步:當分片系統中存在過多的錯誤挑戰時,用戶將無法追蹤是否所有的可用性挑戰都已經得到響應;如果在 Plasma 系統中有太多的可用性挑戰,那主鏈可能會不堪重負,因爲用戶的退出 (exits) 將佔滿主鏈的區塊大小限制。在這兩種情況下,似乎可以存在一個通常具有 O(C^2) 擴展性的系統 (其中 C 表示某個節點的計算能力),但當遭遇攻擊時,擴展性將下降至 O(C)。然而,Sharding 對此具有更多的防禦能力

首先,當前的分片設計使用隨機抽樣的委員會(committees),如此一來,除非某人佔有整條鏈的很大一部分 (可能是超過 1/3) 的驗證者節點,否則是無法輕易地控制任何一個委員會的。此外,有比漁夫方案更好的處理數據可用性的策略:數據可用性證明(data availability proofs)。在一個使用數據可用性證明的機制中,如果某個區塊是不可用的 (unavailable),那客戶端的數據有效性檢查將會失敗,客戶端將會把該區塊視爲不可用區塊。如果該區塊是無效的 (invalid),那即便只有一個欺詐證明 (fraud proofs),那也會使各個客戶端相信該區塊是無效的。因此,從理論上來說,分片系統要比 Plasma 鏈更不易於遭受拒絕服務攻擊(DoS attacks)。

其次,在面臨大量攻擊者 (數量超過了所有驗證者的 1/3 甚至 1/2) 時,分片鏈能夠提供更強大的安全保障。在 Plasma 系統中,如果對負責審查退出的主網發起 51% 攻擊時,總是可以成功地對 Plasma 鏈進行攻擊;而在分片鏈中就不會這樣。這是因爲數據可用性證明和欺詐證明是發生在客戶端內部的,而不是在區塊鏈內部,因此這些證明是不會被 51% 攻擊審查。

第三,分片鏈提供的防禦更易於普及;Plasma 的退出模式要求將狀態分割成獨立的部分,每個部分都是爲了任何單個參與者的利益而進行維護,而依靠數據可用性證明、欺詐證明、漁夫方案和隨機抽樣的分片鏈則在理論上更爲通用。

因此 Plasma 和 Sharding 在 Layer 2 上提供的有效性和可用性保障存在很大差異,由於這些保障要求對激勵機制和哪方對哪些數據段存在利益關係等進行論證等,因此這些保障很有限,且更爲複雜。

但 Plasma 鏈也有很大的優勢

首先,Plasma 鏈可以被迭代,新的設計可以更快地被實現,因爲每條 Plasma 鏈都可以在無需與該生態系統中的其他鏈進行協調的情況下單獨地進行部署。

其次,sharding 就其內在而言更爲脆弱(fragile),因爲它試圖保證一定量數據的絕對和完全可用性和有效性,且這些數據量必須設置在協議之中:如果數據量太少,那系統的擴展性將比它本來可以實現的更差;而如果數據量太多,那這個系統就面臨崩潰的風險。

擴展性的最大安全水平也依賴於系統中的用戶數量,而用戶數量是一個不可預測的變量。相比之下,Plasma 鏈則允許不同的用戶在這方面做出不同的權衡,且允許用戶更加靈活地根據情況的變化進行相應調整。

由單個運營商運行的 Plasma 鏈還可以提供比分片系統更多的隱私保護;而在分片系統中,所有的數據都是公開的。即便是在不需要進行隱私保護的領域,Plasma 鏈也可能更有效率,因爲分片系統的總數據的可用性要求需要大量額外的冗餘數據作爲安全界限。另一方面,在 Plasma 系統中,每段數據的數據要求都可以最小化,從而使長期來看,每條單獨的數據可能只需要複製幾次,而不是像在分片系統中那樣需要複製上千次。

因此,從長期來看,一個將 Plasma 和 Sharding 混合起來的系統 (其中基礎層進行分片,Plasma 鏈則存在於基礎層之上,以提供更進一步的擴展性) 似乎要比只依賴於其中一種策略的系統更能夠滿足不同用戶羣體的需求。

但不幸的是,這兩者之間在某些關鍵部分有着難以消解的差異(比如,分片系統中的客戶端所進行的數據可用性檢查無法轉移到 Plasma 主鏈中,因爲這些檢查只有在主觀地、基於私人數據的情況下才有效)。但這兩種擴展性解決方案 (以及狀態通道方案) 都有着明朗的發展前景

來源鏈接:vitalik.ca