一文看懂數據可用性(DA)對區塊鏈的重要意義

註:原文來自medium,作者是Blockchain Capital 高級分析師Yuan Han Li。

你可能聽說過,以太坊的分片路線圖基本上已取消了執行分片,現在它只專註於數據分片,以最大限度地提高以太坊的數據空間吞吐量。

你可能還在最近看到了關於模塊化區塊鏈的討論,深入研究了rollup並了解了volition或validium‌,然後聽說了“數據可用性解決方案”。

但也許你會產生困惑,撓了撓頭,然後問自己數據可用性(DA)到底是什麼?

在我們深入研究之前,複習一下大多數區塊鏈是如何工作的基礎知識,可能會有所幫助。

交易、節點以及著名的“區塊鏈不可能三角”

當你遇到一個新的帶有高APY的OHM分叉項目時,你的下一步行動可能就是猛按“stake”按鈕,但是當你實際通過Metamask提交該tx時會發生什麼?

一文看懂數據可用性(DA)對區塊鏈的重要意義

簡單地說,你的交易會進入mempool存儲池,假設你給礦工或驗證者的賄賂足夠高,你提交的交易就會被納入到下一個區塊中,並被添加至區塊鏈。然後,包含你的交易的這個區塊,會被廣播到區塊鏈節點的網絡。全節點將下載這個新區塊,執行/計算該區塊中包含的每筆交易(包括你的),並確保它們都是有效的。例如,對於你的交易,這些全節點可能驗證你沒有從其他人那裡竊取資金,並且你實際上有足夠的ETH來支付gas費用等等。因此,全節點執行了有關礦工/驗證者的強制區塊鏈規則的重要任務。

正是由於這種機制,導致傳統區塊鏈遇到了擴容方面的問題,由於全節點檢查每筆交易以驗證它們是否遵循區塊鏈的規則,區塊鏈無法在不增加運行全節點的硬件要求的情況下,每秒去處理更多的tx(更好的硬件=更強大的全節點=全節點可以檢查更多tx=允許包含更多tx的更大區塊)。但是,如果運行全節點的硬件要求提高,那麼全節點的數量就會減少,系統的去中心化屬性就會受到影響。也就是說,如果檢查礦工/驗證器工作以保持誠實的人減少,這將是危險的(因為信任假設會增加)!

一文看懂數據可用性(DA)對區塊鏈的重要意義

要讓數據可用的需要,是我們無法同時擁有全部3個區塊鏈屬性的主要原因之一

該機制還描述了在傳統單體區塊鏈中保證數據可用性的重要性:區塊生產者(礦工/驗證器)必須廣播並提供來自其產生的區塊的交易數據,以便全節點可以檢查其工作。如果區塊生產者不讓其生產的區塊中的交易數據可用,我們將處於這樣一種情況:即全節點無法檢查他們的工作並通過執行區塊鏈的規則集來保持礦工/驗證者的誠實!

現在你了解了,為什麼數據可用性在傳統的單體區塊鏈中很重要,讓我們來繼續討論,它(DA)如何影響大家最喜歡的可擴展性解決方案——rollup。

在Rollup環境中,數據可用性的重要性

讓我們首先回顧一下rollup是如何幫助解決可擴展性問題的:與其提高運行全節點的硬件要求,不如減少全節點必須檢查是否有效的tx數量?我們可通過將tx計算和執行從全節點轉移到功能更強大的計算機(稱為定序器)來實現這一點。

那這不意味着我們必須相信定序器嗎?如果要保持低的全節點硬件要求,那麼在嘗試檢查定序器的工作時肯定會落後於定序器。

那麼,我們如何確保該定序器提出的新區塊是有效的(即,定序器沒有竊取每個人的資金)?考慮到它已經被反覆提過,我相信你已經知道了這個問題的答案,但請耐心等待(如果你需要複習,可以閱讀下Benjamin Simon的文章‌,或者是Vitalik的文章‌):

對於 Optimistic Rollup,我們依靠稱為欺詐證明的東西來保持定序器是誠實的(我們假設定序器正在運行,除非有人提交表明定序器包含無效/惡意交易的欺詐證明)。但如果我們希望其他人能夠計算欺詐證明,他們將需要定序器執行的交易中的tx數據才能提交欺詐證明。換句話說,定序器必須使tx數據可用,否則的話,沒有人能夠保證 optimistic rollup的定序器是誠實的!

一文看懂數據可用性(DA)對區塊鏈的重要意義

而在ZK Rollup的情況下,要保持定序器誠實就簡單多了:定序器在執行一批tx時,必須提交有效性證明(ZK-SNARK/STACK),而這種有效性證明可保證沒有任何tx是無效的/惡意的。此外,任何人(甚至是智能合約)都可以輕鬆驗證提交的證明。但對於ZK Rollup的定序器來說,讓數據可用仍然是非常重要的。這是因為,作為上述rollup的用戶,如果我們想使用垃圾幣,我們需要知道Rollup上的賬戶餘額是多少。如果交易數據不可用,我們將無法知道我們的帳戶餘額如何,並且將無法再與rollup 進行交互。

請注意,以上內容讓我們確切地看到了,為什麼人們一直在吹捧rollup。鑒於全節點不需要跟上定序器,為什麼不讓定序器成為一台功能強大的計算機呢?這將使定序器每秒執行的tx量達到可怕的程度,從而降低gas費用,讓每個人都感到高興。但是,你還記得定序器需要如何使tx數據可用嗎?這意味着即使定序器是一台真正的超級計算機,它每秒實際可計算的tx數量,仍將受到其使用的底層數據可用性解決方案/層的數據吞吐量的限制。

簡而言之,如果rollup所使用的數據可用性解決方案/層,無法跟上rollup的定序器希望轉儲到其上的數據量,那麼定序器(以及rollup)即使願意,也無法處理更多的tx,這會導致我們今天在以太坊上看到的gas費用飆升的情況。

這正是數據可用性極其重要的原因:保證數據可用性使我們能夠確保rollup定序器的行為,如果rollup要最大化其tx吞吐量,則最大化數據可用性解決方案/層的數據空間吞吐量是至關重要的

但是細心的讀者可能會意識到,我們實際上還沒有完全解決確保定序器正常工作的問題。如果rollup結算的“父”區塊鏈的全節點不需要跟上定序器,定序器可以選擇扣留大部分交易數據。父區塊鏈的節點如何強制定序器將數據轉儲到數據可用性層?如果節點無法強制執行,我們實際上在可擴展性方面沒有取得任何進展,因為我們將被迫信任定序器,或者自己去購買超級計算機!

這一問題就被稱為“數據可用性問題”。

“數據可用性問題”的解決方案

數據可用性問題最顯而易見的解決方案,就是強制全節點將定序器轉儲的所有數據下載到數據可用性層/解決方案,但我們知道,這並不現實,因為它需要全節點跟上定序器的tx計算速率,從而提高了運行全節點的硬件要求(降低了去中心化)。

因此很明顯,我們需要一個更好的解決方案來解決這個問題,而且,我們確實有一個好的解決方案!

數據可用性(DA)證明

每次定序器轉儲一個新的tx數據區塊時,節點可使用稱為數據可用性證明的新發明“採樣”數據,確保定序器確實提供了數據。

這些數據可用性證明的實際工作原理非常複雜(涉及到很多術語和數學),但無論如何,我都會去儘力解釋(感謝John Adler‌)。

我們可以首先要求對定序器轉儲的tx數據塊進行糾刪碼( erasure-coded),這基本上意味着減半原始數據大小,然後新的/額外的數據用冗餘片段編碼(這部分就是我們所說的糾刪碼)。通過對數據進行糾刪碼處理,我們可以用任意50%的糾刪碼數據恢復全部原始數據。

一文看懂數據可用性(DA)對區塊鏈的重要意義

但是請注意,通過對tx數據塊進行糾刪碼,這將需要行為不端的定序器扣留超過50%的區塊數據。如果該區塊沒有被糾刪碼,定序器可能會因為只扣留了1%的數據而出現錯誤-因此通過對數據進行糾刪碼,我們已經大大提高了全節點可以擁有的置信度,即定序器確實在使數據可用。

儘管如此,我們希望儘可能多地保證定序器使所有數據可用,理想情況下,我們希望像直接下載整個tx數據塊一樣自信。事實上,這是可能的:全節點可隨機選擇從區塊中下載一些數據。如果定序器行為不端,全節點被愚弄的可能性<50%,即當定序器試圖扣留數據時,隨機下載一段數據。這是因為,如果定序器試圖行為不端並扣留數據,請記住,他們必須扣留>50%的糾刪碼數據。

請注意,這意味着通過再次執行此操作,全節點可以大大降低被欺騙的可能性。通過隨機選擇另一塊數據進行第二次下載,被欺騙的可能性將小於 25%。事實上,當一個全節點第七次嘗試隨機下載一部分數據時,它未能檢測到定序器正在扣留數據的可能性將小於1%。

這一過程就被稱為數據可用性證明抽樣,或簡稱為數據可用性抽樣。它的效率是令人難以置信的,因為這意味着節點可以只下載父區塊鏈上定序器發布的完整數據塊的一部分,並且具有與下載和檢查整個數據塊基本相同的保證(節點可以使用父區塊鏈上的merkle根查找採樣內容/位置)。為了確保我真正把這一點牢記在心:想象一下,如果在附近散步10分鐘所消耗的熱量,與跑步10公里所消耗的熱量一樣多。這就是數據可用性採樣技術的突破性意義。

通過讓父區塊鏈的全節點能夠進行數據可用性採樣,我們現在已經解決了我們之前的困境,即如何確保rollup定序器不會出現錯誤行為。我們現在都覺得很開心了,因為我們可以相信rollup確實能夠擴展我們最喜歡的區塊鏈。但是,等一下,在你停止閱讀這篇文章之前,請記住,如果我們想要讓區塊鏈被全世界的人使用(因此我們的投資標的可以有更多的上升空間),我們仍然需要找到一種方法來擴展數據可用性本身。我們需要rollup,如果我們希望用rollup來擴展區塊鏈,我們不僅需要削弱定序器作惡的能力,我們還必須擴展數據空間吞吐量,以便定序器有一個廉價的地方來轉儲其tx數據。

數據可用性證明也是擴展數據空間吞吐量的關鍵

目前,以太坊(Ethereum)作為最知名的L1公鏈,其路線圖側重於擴展數據空間吞吐量。以太坊希望通過數據分片來實現這一點,這本質上意味着並非每個驗證器都會繼續下載與節點當前相同的tx數據(驗證器也會運行節點)。相反,以太坊將把它的驗證器網絡分成不同的分區(稱為“分片”),如果你有 1000 個驗證器,所有這些驗證器都用來存儲相同的數據,而你將其分成4組,每組250個驗證器,那麼用於轉儲數據的 rollup可用空間就突然增加了4倍!這聽上去很簡單,對吧?

一文看懂數據可用性(DA)對區塊鏈的重要意義

以太坊近期的數據分片路線圖爭取實現64個數據分片

然而,問題是,分片內的驗證器只會下載轉儲到其分片的tx數據。這意味着,一個分片中的驗證器不能保證定序器轉儲的所有數據都是可用的,它們只能保證轉儲到其分片區的數據是可用的,但不能保證其餘數據可用於其他分片。

這意味着我們會遇到這樣一種情況,即一個分片中的驗證器無法確保定序器沒有出現錯誤,因為它們不知道其他分片中發生了什麼,這就是我們的朋友(數據可用性採樣)再次派上用場的地方。如果你是一個分片中的驗證者,那麼你可以在每個其他分片中使用數據可用性證明簡單地採樣數據可用性!這將為你提供基本相同的保證,就像你是每個分片中的驗證者一樣,從而允許以太坊安全地實現數據分片。

還有其他的區塊鏈(例如Celestia和Polygon Avail),它們希望擴展到海量的數據空間吞吐量。與大多數其他區塊鏈不同,Celestia和Polygon Avail僅尋求做兩件事:排序區塊和交易,並成為數據可用性層。這意味着要保持 Celestia / Polygon Avail 的驗證器誠實,重要的是要有一個去中心化的節點網絡,以確保驗證器確實正確地存儲和排序tx數據。但是,由於不需要解釋(即執行/或計算)這些數據,你不需要一個全節點來保證驗證器的行為!相反,執行數據可用性採樣的輕節點,將具有與全節點基本相同的保證,並且有許多輕節點採樣數據可用性證明將足以讓驗證器負責保證數據可用性。這意味着,只要有足夠多的節點使用數據可用性證明對數據可用性進行採樣(這很容易,因為數據可用性證明甚至可通過手機計算),你可以使區塊大小更大並增加驗證器的硬件要求,從而提高數據空間吞吐量。

一文看懂數據可用性(DA)對區塊鏈的重要意義

現在,總結一下:數據可用性問題可能是區塊鏈三難困境的癥結所在,它影響到了我們所有的擴容工作。幸運的是,我們能通過數據可用性證明的核心技術,來解決數據可用性問題。這使我們能夠大規模地擴展數據空間吞吐量,為rollup提供了一個廉價的地方來轉儲足夠的tx數據來處理足夠的tx,以供全球人口使用。此外,數據可用性證明意味着我們不必信任rollup定序器,我們可以讓它們保持誠實並驗證它們的行為。現在,希望這篇文章可以幫助你準確理解,為什麼數據可用性對rollup發揮其全部潛力而言是至關重要的。

想更深入一些嗎?我建議你鑽進以下的兔子洞:

  1. 最初的論文提出了一個欺詐和數據可用性證明系統,以提高輕客戶端安全性並擴展區塊鏈(這篇論文‌由Mustafa Al-Bassam、Alberto Sonnino和Vitalik Buterin共同撰寫‌)。
  2. 更容易理解以及更簡短的版本‌。
  3. 以太坊以rollup為中心的路線圖‌。
  4. Vitalik演講:2020年及以後如何擴展以太坊‌
  5. John Adler談論數據可用性問題‌
  6. Ismail Khoffi談論Celestia‌
  7. zkSync的Angela Lu、Arbitrum的Daniel Goldman以及Fuel Labs的John Adler一起錄製的內容‌,為我們提供了Rollup和以太坊數據分片路線圖的很多信息。

本文鏈接:https://www.8btc.com/article/6721900

轉載請註明文章出處

(0)
上一篇 2022-01-13 09:02
下一篇 2022-01-13 10:00

相关推荐