什麼是 “資料可得性” ?

“資料可得性(data availability)”和“資料可得性問題”指的是一些區塊鏈擴容方案所面臨一個問題。具體來說,就是當新的區塊建立時,節點如何確保該區塊中的所有資料都已釋出到網路上?困難之處在於,如果區塊生產者沒有公佈區塊中的所有資料,就沒人能發現該區塊中是否隱藏了惡意交易。

在本文中,我將深入探討資料可得性問題的重要性,以及相關解決方案。

區塊鏈節點是如何執行的?

區塊鏈上的每個區塊都由兩部分組成:

  • 區塊頭,即,區塊的後設資料,由一些關於區塊內容的基本資訊組成,包括交易的默克爾根。
  • 交易資料,即,區塊的主要組成部分,由實際的交易資料組成。

區塊鏈網路中主要有兩類節點:

  • 全節點(又稱完全驗證節點)。這類節點會下載區塊鏈中的每筆交易並驗證其有效性。這需要消耗大量資源和數百 gb 的磁碟空間,但是這些節點的安全性最高,因為它們不會接受包含無效交易的區塊。
  • 輕客戶端。如果你的計算機沒有足夠的資源來執行全節點,你可以執行輕客戶端。輕客戶端不需要下載或驗證任何交易。它們只下載區塊頭,並認定區塊中包含的交易都是有效的。因此,輕客戶端的安全性低於全節點。

幸運的是,有一種方法可以讓輕客戶端間接檢查區塊中的所有交易是否有效。輕客戶端可以依賴全節點向其傳送關於無效交易的 欺詐證明,無需自己檢查交易的有效性。欺詐證明是一個很小的證明,可以證明區塊中的某個交易是無效的。關於欺詐證明的運作原理,本文不做具體介紹,請閱讀這篇文章。

這裡只有一個問題:全節點如果要為某個區塊生成欺詐證明,需要知道該區塊的交易資料。如果區塊生產者只公佈區塊頭,沒有公佈交易資料的話,全節點就無法驗證交易的有效性,並針對無效交易生成欺詐證明了。這就要求區塊生產者公佈區塊的所有資料,但是我們需要找到一種方法來強制實行。

為了解決這個問題,輕客戶端需要找到某種方法來檢查區塊的交易資料是否真的釋出到了網路上,以便全節點進行驗證。然而,我們又要避免讓輕客戶端下載整個區塊,因為這會使得輕客戶端喪失存在的意義。

我們該如何解決這一問題?首先,我們先來討論資料可得性問題的相關性,以及如何採取解決措施。

資料可得性問題與哪些方案有關

在上一節中,我們介紹了資料可得性問題。讓我們來討論一下它對可擴充套件性解決方案的重要性。

增加區塊大小

在比特幣等區塊鏈中,絕大部分一般的手提電腦都能執行全節點並驗證整條鏈,因為存在人為規定的區塊大小上限,來防止區塊鏈變得過大。

但是,如果我們想要增加區塊大小上限該怎麼辦?那就只有更人才能負擔得起執行全節點並獨立驗證區塊鏈的成本,大多數人都會執行安全性更低的輕客戶端。這並不利於去中心化,因為這會讓區塊生產者更容易更改協議規則,插入無效交易來欺騙輕客戶端。因此,為輕客戶端提供欺詐證明支援很重要,但是正如我們已經討論過的,輕客戶端需要一種方法來驗證區塊中的所有資料是否都已釋出至網路。

分片

提高區塊鏈吞吐量的一種方法是,將區塊鏈分成多條鏈,即,分片。這些分片都有自己的區塊生產者,而且可以相互通訊,以便在分片之間轉移代幣。分片的意義在於,將網路中的區塊生產者分組,這樣就不需要每個區塊生產者處理每個交易,只需將他們分散到不同的分片上即可。每個分片只需處理部分交易。

通常來說,在分片式區塊鏈上,驗證者只需要為一個或少數幾個分片執行全節點,併為其它分片執行輕客戶端。畢竟,如果每個驗證者都要為每個分片執行一個全節點,就無法實現分片的目的 —— 將網路的開銷分割給不同節點。

然而,這種方法本身存在缺陷。如果分片上的區塊生產者作惡,開始接受無效交易怎麼辦?相比非分片式系統,分片式系統更有可能發生這種情況,因為後者的每個分片上只有少量區塊生產者,攻擊起來更容易。請記住,區塊生產者會被不斷分配到不同的分片上。

為便於察覺是否存在分片接受無效交易的情況,我們必須確保分片中的所有資料都是公開可得的,以便使用欺詐證明來證明所有無效交易。

rollup

optimistic rollup 是一種基於 rollup 側鏈(類似分片)的新型可擴充套件性策略。這些側鏈有自己專屬的區塊生產者,可與其它側鏈互相轉移資產。

但是,如果有惡意的區塊生產者將無效交易打包進區塊,將側鏈上所有使用者的資金盜走怎麼辦?為解決這一問題,我們可以使用欺詐證明來發現這種情況。但是,還是那個老問題,側鏈使用者需要找到某種方法來確保側鏈上所有區塊的資料都公開可見,以便發現無效交易。為了解決這一問題,以太坊上的 rollup 將所有 rollup 區塊都發布到以太坊區塊鏈上,依賴以太坊來實現資料可得性。也就是說,將以太坊作為資料可得性層。

zk-rollup 與 optimistic rollup 類似。區別在於,前者並非使用欺詐證明來發現無效區塊,而是使用有效性證明來證明區塊的有效性。有效性證明本身不需要資料可得性。然而,總的來說,zk-rollup 需要資料可得性,因為如果區塊生產者建立了一個有效區塊,併為其生成有效性證明,卻沒有公佈區塊資料,使用者就無法知道區塊鏈的狀態以及他們的餘額,也就無法與區塊鏈進行互動。

進一步探索

rollup 的設計旨在將區塊鏈作為資料可得性層來儲存交易,但是實際的交易處理和計算都發生在 rollup 上。這是一種很有趣的思路:區塊鏈實際上不需要進行任何計算,但是至少需要將交易分裝到區塊中,並確保交易的資料可得性。

這也是 lazyledger 的設計思路,即,一種“懶惰的”區塊鏈,只需要完成區塊鏈的兩個核心任務 —— 透過可擴充套件方式對交易進行排序,並實現交易的資料可得性。這使得 lazyledger 成為 rollup 等系統中的最小“可拔插”元件。

資料可得性問題的解決方案

下載所有資料

正如上文所討論的那樣,解決資料可得性問題的最直接方法就是,要求所有人(包括輕客戶端)下載所有資料。顯然,這種方法不具備良好的可擴充套件性。比特幣和以太坊等大多數區塊鏈均採用這種方法。

資料可得性證明

資料可得性證明是一種新技術:客戶端只需下載區塊中的一小部分資料,即可檢查該區塊中所有資料是否均已釋出。

資料可得性證明採用了一種被稱為糾刪碼的數學元件。糾刪碼被廣泛應用到了從 cd-rom 到衛星通訊再到二維碼等資訊科技中。糾刪碼可以將原本 1 mb 的區塊資料擴充成 2mb,其中多出的 1 mb 就是叫做糾刪碼的特殊資料。如果區塊中的任何位元組丟失,糾刪碼都可以幫你找回它們。即使整個區塊的資料丟失, 糾刪碼也可以幫你找回所有資料。同樣地,有了糾刪碼,即使 cd-rom 中的資料都被擦除,你的計算機也可以讀取到(譯者注:糾刪碼並不能幫你節約頻寬,假設 1mb 的資料被擴充成了 2 mb,你仍然需要獲得至少 1mb 的資料才能恢復出原始資料,雖然並不要求這 1 mb 的資料是連續的)。

這就意味著,要實現 100% 的資料可得性,區塊生產者只需將區塊中 50% 的資料釋出到網路上。 如果惡意區塊生產者想要成功隱瞞 1% 的資料,就必須隱瞞超過 50% 的資料,否則這 1% 的資料可以透過剩下 50% 的資料找回(譯者注:此段第一句存疑)。

有了這個知識,客戶端就能採取措施來確保區塊中的資料不會被隱藏。客戶端可以嘗試隨機下載區塊切分而成的資料塊,如果他們未能成功下載資料塊(即表明,該資料塊屬於惡意區塊生產者未公開的那 50% 的資料),它們就會拒絕承認該區塊的資料可得性。如果下載一個隨機資料塊,客戶端就有 50% 的概率發現無效區塊。如果下載兩個資料塊,就有 75% 的概率。如果下載三個資料塊,就有 87.5% 的概率。以此類推,直到下載七個資料塊之後,就有 99% 的概率。透過這種方式,客戶端只需下載區塊中的一小部分資料,即可有效檢查整個區塊的資料可得性。

資料可得性證明的全部細節會更復雜一些,而且依賴於其它假設,例如,網路中的輕客戶端數量不能低於某個下限,這樣就有足夠多的輕客戶端請求資料塊,以便恢復整個區塊的資料。如果你想了解更多資訊,可以檢視關於資料可用性證明的論文。

結論

在本文中,我們介紹了資料可用性問題,討論了資料可用性對區塊鏈可擴充套件性的重要性,並提出瞭解決方案。

如果你想了解更多資訊,請檢視以下資料:

  • john adler’s whiteboard session about fraud and data availability proofs
  • original fraud and data availability proofs paper
  • coded merkle trees paper on an alternative data availability scheme
  • ethereum research wiki post on the data availability problem

(完)


原文連結: https://coinmarketcap.com/alexandria/article/what-is-data-availability
作者: mustafa al-bassam
翻譯&校對: 閔敏 & 阿劍

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读