Vitalik Buterin:揭開分片技術特性的神秘面紗
ChinaDeFi
2022-08-30 13:30
本文约8076字,阅读全文需要约32分钟
分片提供了哪些特定的屬性,它與其他不分片的技術有什麼不同?

原文作者:Vitalik Buterin

原文來源:Hackernoon

原文編譯:ChinaDeFi

分片是以太坊可擴展性的未來,它將是幫助生態系統支持每秒數千筆交易的關鍵,它還允許世界上的大部分地區可以以負擔得起的成本定期使用該平台。然而,它也是以太坊生態系統和更廣泛的區塊鏈生態系統中被誤解較多的概念之一。它指的是一組具有非常特定屬性的思想,但現在它經常被與具有安全性較弱屬性的技術合併在一起。這篇文章的目的是解釋分片提供了哪些特定的屬性,它與其他不分片的技術有什麼不同,以及一個分片系統必須做出哪些犧牲來實現這些屬性。

一級標題

一級標題

一級標題

可擴展性三難困境

  • 描述分片的最佳方式應該是從計劃並啟發解決方案的問題陳述開始:可擴展性三難困境。

  • 可擴展性三難困境表示區塊鏈試圖擁有三個屬性,如果堅持使用“簡單”技術,那麼我們只能獲得這三個中的兩個。這三個屬性分別是:

  • 可擴展性:比起單個普通節點驗證的交易數量,鏈可以處理更多的交易。

去中心化:鏈可以在不依賴於一小群大型中心化參與者的情況下運行。這通常被解釋為當我們不能用一個普通筆記本電腦加入到一組節點時,就不應該對該節點有任何信任。

  • 安全性:鏈可以抵抗大部分對參與節點的攻擊。 (理想情況是50%;超過25%就還好,5%絕對不行)。

  • 現在我們來看看這三類“簡單解決方案”,通常只能得到其中的兩個:

  • 傳統區塊鏈:包括比特幣、pre-PoS/分片以太坊、萊特幣和其他類似的鏈。它們依賴於每個參與者運行一個完整的節點來驗證每個交易,因此它們具有去中心化和安全性,但沒有可擴展性。

高TPS鏈:包括DPoS家族,也包括許多其他類似的。它們依賴於少數節點(通常是10-100個)來維持彼此之間的共識,用戶必須信任其中的大多數節點。這是具有可擴展性和安全性的,但它不是去中心化的。

  • 多鏈生態系統:這是指“橫向擴展”的一般概念,通過在不同的鏈上運行不同的應用程序,並使用跨鏈通信協議在它們之間進行通信。這是去中心化和可擴展的,但它並不安全,因為攻擊者只需要在眾多鏈中的一個裡獲得多數共識節點即可破壞該鏈並可能引起連鎖反應,對其他鏈中的應用程序也會造成巨大損害。

  • 分片是一種可以同時滿足這三種需求的技術。一個分片區塊鍊是:

  • 可擴展:它可以處理比單個節點多得多的交易。

一級標題

一級標題

一級標題

通過隨機抽樣進行分片

最易理解的分片是通過隨機抽樣進行的分片。與我們在以太坊生態系統中構建的分片形式相比,通過隨機抽樣的分片有更薄弱的信任屬性,但它使用了更簡單的技術。

其核心思想如下。假設我們有一個包含大量(例如10000 個)驗證者的權益證明鏈,並且同時有大量(例如100 個)需要驗證的區塊。沒有一台計算機能夠強大到在下一組區塊進入之前驗證所有這些區塊。

因此,我們所做的就是將驗證工作隨機地進行拆分。我們隨機打亂驗證者列表,讓已打亂列表中的前100個驗證者來驗證第一個區塊,讓已打亂列表中的後100個驗證者來驗證第二個區塊,以此類推。這種被隨機選擇來驗證一個區塊(或執行一些其他任務)的一組驗證者被稱為委員會。

一級標題

一級標題

一級標題

  • 常見問題:分成100個委員會和分成100個獨立的鏈有什麼不同?

  • 有兩個關鍵的區別:

一級標題

一級標題

一級標題

使用更好的安全模型改進分片

一級標題

一級標題

一級標題

  • 計算的可擴展驗證

  • 我們可以將51%-attack-proof的可擴展驗證問題分解為兩種情況:

驗證計算:假設我們擁有計算的所有輸入,檢查某些計算是否正確完成。

驗證數據可用性:檢查計算輸入本身是否以某種形式被存儲,如果真的需要,可以下載它們;這種檢查應該在不實際下載整個輸入本身的情況下執行(因為數據可能太大,無法下載每個區塊)。

在區塊鏈中驗證一個區塊時,其中包括計算和數據可用性檢查:我們需要確信區塊中的交易是有效的,並且區塊中聲明的新狀態根哈希是執行這些交易的正確結果,但是我們還需要確信區塊中已經發布了足夠的數據,以便下載該數據的用戶可以計算狀態並繼續處理區塊鏈。第二部分是一個非常微妙但非常重要的概念,稱為數據可用性問題;稍後再詳細說明。

  • 可擴展的驗證計算相對容易;具體有兩類技術:欺詐證明和ZK-SNARK。

  • 兩種技術可以簡單描述如下:

欺詐證明是一個接受計算結果的系統,需要一個有質押存款的人簽署一個消息,內容為“我證明,如果你用輸入X進行計算C,你會得到輸出Y”。在默認情況下,我們信任這些消息,但我們也為其他已質押存款的人提供了挑戰的機會(帶有簽名的消息表示“我不同意,輸出是Z”)。只在有挑戰時,所有節點才會運行計算。雙方中任何一方的錯誤都將失去他們的存款,並且所有的計算都取決於該計算的結果將被重新計算。

一級標題

一級標題

一級標題

數據可用性的可擴展驗證更加困難

欺詐證明不能用於驗證數據的可用性。計算的欺詐證明依賴於這樣一個事實:在提交原始訴求的那一刻,計算的輸入就在鏈上發布了,因此,如果有人質疑,質疑執行發生在與原始執行發生的完全相同的“環境”中。在檢查數據可用性的情況下,我們不能這樣做,因為問題恰恰在於需要檢查的數據太多,無法將其發佈到鏈上。因此,數據可用性的防欺詐方案遇到了一個關鍵問題:有人可以聲稱“數據X是可用的”,但不發布它,等待挑戰,然後發布數據X,使挑戰者在網絡的其他部分看來是不正確的。

一級標題

一級標題

一級標題

一級標題

一級標題

一級標題

  • 那麼,如何在不嘗試下載的情況下檢查1 MB的數據是否可用呢?這聽起來不可能的!

  • 關鍵是一項被稱為數據可用性抽樣的技術。數據可用性抽樣的工作原理如下:

使用一種名為erasure coding的工具,將一個有N個塊的數據擴展為有2N個塊的數據,這樣其中的任何N個區塊都可以恢復整個數據。

一級標題

一級標題

一級標題

  • 回顧:我們如何再次確保一切都是正確的?

  • 假設我們有100個區塊,並且想要在不依賴委員會的情況下有效地驗證所有區塊的正確性。我們需要做以下事情:

每個客戶端對每個區塊執行數據可用性採樣,驗證每個區塊中的數據是否可用,即使整個區塊的大小為1兆字節或更大,每個區塊也只需下載幾千字節。客戶端只有在其可用性挑戰的所有數據都得到正確響應時才會接受一個區塊。

既然我們已經驗證了數據的可用性,那麼驗證正確性就變得更容易了。有兩種方法:

  • 1. 我們可以用ZK-SNARK。每個區塊都有一個ZK-SNARK來證明正確性。

一級標題

一級標題

一級標題

分片系統的關鍵特性是什麼?折衷方案是什麼?

  • 分片的關鍵目標是盡可能地複制傳統(非分片)區塊鏈最重要的安全屬性,但不需要每個節點親自驗證每筆交易。

  • 分片非常接近。在傳統的區塊鏈中:

無效的區塊無法通過,因為驗證節點會注意到它們是無效的,並忽略它們。

  • 不可用的區塊無法通過,因為驗證節點無法下載它們,並忽略它們。

    在一個具有高級安全特性的分片區塊鏈中:

    無效區塊無法通過,因為:

  • 欺詐證明會迅速捕捉他們,並告知整個網絡該區塊的不正確性,並嚴懲創建者;

    ZK-SNARK證明了正確性,我們不能為一個無效的區塊創建一個有效的ZK-SNARK。

    不可用的區塊無法通過,因為:

如果一個區塊的可用數據少於50%,那麼對於每個客戶端,至少有一個數據可用性樣本檢查幾乎肯定會失敗,這將導致客戶端拒絕該區塊;

如果一個區塊至少有50%的數據可用,那麼實際上整個區塊都可用,因為只需要一個誠實節點來重構區塊的其餘部分就可以。

沒有分片的傳統高TPS鏈無法提供這些保證。多鏈生態系統無法避免攻擊者選擇一條鏈進行攻擊並輕鬆地接管它的問題(鏈可以共享安全性,但如果這一點做得不好,它將變成事實上的傳統高TPS鏈,具有所有的缺點,如果做得好,它將只是上述分片技術的更複雜的實現)。

  • 側鏈高度依賴於實現,但它們通常容易受到傳統高TPS鏈的弱點(如果它們共享礦工/驗證者)或多鏈生態系統的弱點(如果它們不共享礦工/驗證者)的影響。分片鏈可以避免這些問題。

  • 然而,分片系統的裝甲中有一些裂縫。值得注意的是:

  • 只依賴委員會的分片鏈很容易受到適應性對手的攻擊,問責制也更弱。也就是說,如果對手有能力實時入侵(或關閉)他們選擇的任何一組節點,那麼他們只需要攻擊一小部分節點就可以破壞一個委員會。此外,如果一個對手(無論是適應性對手還是僅僅是佔50%的攻擊者)破壞了一個委員會,只有很少的部分會被懲罰。這就是為什麼數據可用性抽樣與欺詐證明或ZK-SNARK一起是隨機抽樣技術的重要補充的另一個關鍵原因。

  • 只有當有足夠數量的在線客戶端共同發出足夠的數據可用性抽樣請求時,數據可用性抽樣才安全,這些請求的響應幾乎總是重疊到至少占到50%的區塊。在實踐中,這意味著必須有幾百個客戶端在線(並且這個數字隨著系統容量與單個節點容量的比率的增加而增加)。這是一種n中的少數信任模型——通常是相當可信的,但肯定沒有非分片鏈中節點的n中的0信任那麼可靠。

  • 如果分片鏈依賴於欺詐證明,那麼它依賴於時間假設;如果網絡太慢,節點可能會在防欺詐程序出現並表明它是錯誤的之前接受最終確定的區塊。幸運的是,如果我們遵循在發現無效區塊後恢復所有無效區塊的嚴格規則,那麼這個閾值是一個用戶設置的參數:每個用戶選擇他們到最終結果等待多長時間,如果他們不想等待足夠長的時間,那麼就遭受損失,更謹慎的用戶可確保安全。儘管如此,這還是削弱了用戶體驗。使用ZK-SNARK驗證有效性解決了這個問題。

需要傳遞大量的的原始數據量,這增加了在極端網絡條件下發生故障的風險。少量數據比大量數據更容易被發送。區塊瀏覽器如果想要保存整個鏈,就需要存儲更多的數據。

一級標題

一級標題

一級標題

為什麼不中心化生產和分片驗證?

  • 經常被提出的一個分片替代方案是建立一個結構類似於中心化高TPS鏈的鏈,只不過它在上面使用數據可用性採樣和分片來驗證有效性和可用性。

  • 這改善了目前存在的中心化高TPS鏈,但它仍然比分片系統弱得多。這有以下幾個原因:

  • 在高TPS鏈中,很難發現區塊生產者的審查。審查檢測需要(i) 能夠查看每筆交易並驗證沒有明顯值得進入但無法進入的交易,或(ii)在區塊生產者中有一個n中的1信任模型,並驗證沒有區塊無法進入。在中心化的高TPS鏈中,(i)是不可能的,(ii)更困難,因為小節點數量使n中的1的信任模型更容易崩潰,如果鏈的區塊時間對DAS來說太快(就像大多數中心化的高TPS鏈所做的那樣),很難證明一個節點的區塊沒有被拒絕,因為它們都被發布得太慢了。

  • 如果大多數區塊生產者和生態系統成員試圖強行通過一項不受歡迎的協議更改,用戶的客戶端肯定會發現它,但對於社區來說,反抗和分叉都要困難得多,因為他們將需要啟動一組新的非常昂貴的高吞吐量節點來維護一個保持舊規則的鏈。

適當的分片系統最好作為基礎層。有了一個分片基礎層,我們始終可以通過將其構建為rollup來創建一個中心化生產系統。但是,如果我們有一個依賴於中心化區塊生產的基礎層,則不能在其上構建更加去中心化的第2層。

原文鏈接

ChinaDeFi
作者文库