數據可用性提出了以下問題:節點如何確定在創建新區塊時,其中包含的所有數據都真正廣播到網絡中?區塊鍊網絡中的對等節點如何確定與新提出區塊相關的所有數據確實可用?
作者: ZKCross
原文標題:《Data Availability in Layer-2 Blockchains》
編譯:麟奇,鏈捕手
區塊鏈數據可用性
最新的以太坊分片路線圖優先考慮數據分片,而不是執行分片,從而顯著提高以太坊數據吞吐量。此外,模塊化區塊鏈還深入研究了Rollup、volitions和validity以及數據可用性解決方案。其都是區塊鏈數據可用性的最新討論和趨勢。
任何參與區塊鍊和加密貨幣領域的人都可能好奇在這種情況下區塊鏈數據可用性意味著什麼。
術語“區塊鏈中的數據可用性”是指許多區塊鏈擴展方案面臨的特定問題。它檢查區塊鏈節點如何生成新塊,以及這些新塊中包含的所有數據是否都廣播到網絡。困難在於,如果區塊生產者不發佈區塊中包含的所有數據,則沒有人能夠發現該區塊中是否隱藏了惡意交易。要充分了解數據可用性如何在區塊鏈上工作,重要的是要了解區塊鏈中的區塊構成以及區塊鏈節點的功能。
區塊鏈節點入門
區塊鏈的數據結構包含一個區塊鏈,區塊鏈中的每個區塊由兩部分組成:區塊頭和交易數據列表。
- 區塊頭是區塊的元數據,包含區塊的一些基本信息,例如交易的默克爾根。
- 交易部分的區塊包含實際交易。
區塊鍊網絡中有兩種類型的節點:全節點(驗證節點)和輕客戶端。區塊鏈必須支持數據可用性,尤其是rollup和layer 2鏈。
數據可用性問題
數據可用性問題是區塊鏈三元悖論:安全性、可擴展性和去中心化。
三難困境指的是人們普遍認為,在任何給定時刻,去中心化網絡只能提供去中心化、安全性和可擴展性這三個好處中的兩個。可擴展性、安全性和去中心化都是相互作用的。在交易達成之前,網絡必須對其合法性達成一致。如果系統龐大,達成協議的過程可能需要一些時間。
對數據可用性的攻擊
當流氓節點廣播區塊頭但保留包含錯誤交易的部分區塊時,就會發生區塊鏈數據可用性攻擊。雖然可以下載和存儲整個區塊鏈的誠實完整節點知道某些數據不可用,但它們缺乏正式的機制來向資源有限且無法訪問整個區塊鏈數據的輕節點證明這一點。因此,側鍊和分片區塊鏈策略都容易受到數據可用性攻擊。側鍊網絡(或分片)上的流氓節點將區塊的哈希提交到可信賴的區塊鏈,而不會將區塊數據傳輸到此攻擊中的其他節點。
數據可用性攻擊是區塊鏈領域的一個眾所周知的問題,最初是在區塊鏈輕客戶端的背景下提出的。 Vitalik之後將其普及。輕節點所做的僅僅是存儲區塊頭和驗證pow需求。他們依靠全節點來驗證區塊並在不正確的區塊中提供欺詐證明。
在輕節點情況下,數據可用性攻擊不是致命的。通常,礦工也會對完整的節點進行操作。如果一個區塊不可用,他們會忽略它並同時挖礦(即在其母區塊上)。只要區塊無法訪問,任何誠實的礦工都不會在區塊上進行構建。它最終會脫離最長的鏈。此時,輕節點會自動忽略這樣的區塊。當涉及二級區塊鍊和分片時,這種攻擊更加需要被重視。
關鍵區別在於,除了區塊鏈(或分片)之外,可能缺少大多數誠實的礦工/完整節點。因此,側鏈(或分片)中的參與者沒有統一、系統的方法來決定是否將缺失的區塊合併到他們的分佈式賬本中。
數據可用性問題
區塊鏈中的數據可用性問題提出了以下問題:節點如何確定在創建新區塊時,其中包含的所有數據都真正廣播到網絡中?區塊鍊網絡中的對等節點如何確定與新提出區塊相關的所有數據確實可用?
例如,將Bob 視為ZK-Rollup (ZKR) 的操作員。他驗證了比特幣上的ZK 證明。儘管他沒有將所有交易數據傳輸到比特幣,但即使他的證明確定了rollup中所有狀態更改的有效性,rollup的用戶也可能不知道他們當前的餘額。此外,由於ZK特性,它無法洞察現有條件。
解決數據可用性攻擊
在模塊化區塊鏈中,由於驗證和數據可用性的脫鉤,確保模塊化區塊鏈中數據可用性的單獨方式至關重要。 Rollups提供交易證明並在鏈下計算新狀態,但仍需要在鏈上發布某些交易數據以防止數據可用性問題。 ZK-rollups 主要將三個關鍵數據位發佈到主鏈:
- 新狀態的加密承諾(根哈希)
- 密碼學證明(如ZK-SNARK)確定新狀態是將有效交易應用於初始狀態的結果。
- 以calldata的形式為批處理中的每一筆交易提供一小段數據
密碼學證明的零知識特性確認交易和狀態變化是合法的,但不提供有關交易本身的信息。完整的節點不再需要交易數據來驗證交易並主動重新計算新的狀態根。但是,假設沒有足夠的交易數據廣播到主鏈。在這種情況下,L1上的節點無法檢測到rollup的當前狀態,這通常僅在特定情況下(但仍很重要)是必須的。
區塊鏈的數據可用性層
區塊鏈的數據層既用於區塊鏈的數據結構,也用於物理存儲。區塊鏈賬本是使用相互連接的區塊列表或默克爾樹所設計的,這些區塊列表使用非對稱加密方法進行加密。數據層由以下部分組成:
區塊:區塊是用於對交易分組進行分組並將它們分佈在網絡節點之間的數據結構。挖礦是生成區塊的過程。每個區塊都有一個區塊頭,它是能夠驗證區塊合法性的元數據。
Merkel Tree和交易:在區塊鏈中,交易作為Merkel Tree的一部分進行維護。 Merkel Tree通過生成完整交易集合的數字指紋來匯總塊中的所有交易,允許用戶確定是否包含某筆交易。每個葉子節點都有交易的數據,而每個非葉子節點都包含其先前哈希值的哈希值。 Merkel Tree是二進制,需要奇數個葉子節點。如果有奇數個交易,則將最終哈希複製一次,以生成偶數個葉子節點。
網絡層:區塊鏈使用分佈式網絡,允許任何人下載區塊鏈上的所有信息並與之交互。點對點(P2P) 網絡跨節點分發/廣播交易。區塊鏈平台主要利用三種類型的網絡:中心式、去中心式和分佈式網絡。
物理層:該層包括服務器、邊緣節點和物聯網(IoT) 設備,它們作為區塊鍊網絡上的節點運行。這些通常通過點對點網絡連接。節點可以是任何活躍的電子設備,例如計算機、電話或打印機,只要其連接到網絡並具有IP地址。
虛擬層:位於硬件之上的虛擬層,用於將硬件和資源分配給虛擬機。
共識層:該層負責實施網絡規則,這些規則指定網絡內的節點應如何反應,以就廣播交易建立共識。
激勵層:該層參與分佈式網絡中節點努力為達成共識而獲得激勵的活動。這一層是否被使用由區塊鏈協議使用的共識機制決定。
合約層:由服務和可選組件組成,使區塊鏈平台能夠與其他技術集成,例如數據饋送、智能合約、預言機、DAO和狀態通道。
API層:在區塊鏈之上提供應用程序接口,並為第三方應用程序提供與賬本和智能合約通信的機制。
應用層:這一層具有能夠在區塊鏈之上創建應用程序的特徵。
傳統數據可用性解決方案
傳統的數據可用性解決方案旨在通過改變區塊鏈的底層數據傳輸協議和區塊數據結構、共識算法和激勵機制等基礎區塊鏈協議來提高可擴展性。這些解決方案包括Layer1擴展解決方案,例如Segregated Witness、DAG、分片和共識。然而,Layer2解決方案旨在通過在應用層的鏈下方式提高可擴展性。
Segregated Witness:具有協議增強功能,已部署用於防止交易延展性並提高區塊容量。
DAG:交易在一個DAG中連接,這意味著一個交易驗證下一個交易。每個節點由許多交易級別組成。當一個交易在節點中註冊時,它必須首先驗證另外兩個交易。這兩個交易是使用數學過程選擇的。然後,節點必須驗證兩個交易不衝突。為了驗證交易,一個節點必須解決類似於比特幣網絡上的加密難題(pow)。
分片:一個區塊鏈可以分片成多個鏈來提高吞吐量。每個分片都有自己的區塊生產者,並且可以進行通信以交易代幣。分片不是每個區塊生產者處理每筆交易,而是將網絡的處理能力劃分為只處理特定交易的分片。因此,非分片區塊鏈通常有一個或兩個功能齊全的完整節點和一個或多個輕客戶端。值得注意的是,分片旨在將網絡資源分佈在不同的節點上。
共識:共識層對區塊鏈的存在至關重要。任何區塊都依賴於共識層才能正常運行。這一層負責組織驗證區塊並確保其進度一致。
ZKRollups 解決方案
當下有些以太坊Layer2解決方案,例如optimistic rollups、ZK rollups和Validiums。這些解決方案將執行操作轉移到鏈下,同時可確保應用程序驗證和數據在鏈上的可用性。雖然基於鏈下執行的架構提高了吞吐量,但它仍然受到主鏈可以處理的數據量限制。雖然執行是鏈下的,但驗證或爭議解決過程是必須在鏈上的。交易數據在以太坊上作為calldata提交,以確保數據可用於未來重建。這是極其重要的。
對於optimistic rollups,操作員可能會提交無效交易,然後壓制部分區塊。這種方式下,系統中的其他全節點將無法驗證提交的主張是否正確。由於缺乏數據,他們將無法提供任何欺詐證明來表示主張確實無效。
在基於零知識的roll-ups的情況下,ZKP的完整性確保接受的交易是有效的。然而,即使存在這樣的保證,不揭露支持交易的數據也會產生嚴重的負面影響。這可能導致其他驗證者無法計算系統的當前狀態,用戶被排除在系統之外,並且他們的餘額也是被凍結的。
為了提高吞吐量,將執行操作移到鏈下是有必要的,但也需要有一個可擴展的數據託管層來確保數據可用性。借助ZKcross類似的生態系統,使用零知識Rollup提供可靠的數據託管和排序組件。執行層將包含幾個將要被合併的鏈下ZKRollups擴展解決方案。我們目前正使用ZKcross研發必要的技術,來實現這一點。
鏈上數據
區塊鏈會從哈希率和交易等其他相關活動中產生大量數據。
當我們談論鏈上數據時,我們指的是什麼?簡而言之就是:所有原生地存儲在區塊鏈上的數據都是鏈上數據。
鏈上數據是指在特定區塊鍊網絡上已發生的所有交易。或者換句話說,所有已經寫入區塊鏈區塊的數據。公鏈的信息具有公開訪問的特性。依照數據可以有三個主要分類。
- 每個區塊的規格(時間戳、gas費、礦工、區塊大小等)
- 每筆交易非常詳細(“發送者”和“接受者”地址、交易中的轉賬金額等)
- 智能合約的調用和使用
鏈上數據提供有關區塊鏈整體健康狀況的信息:網絡安全、財務完整性、透明度和利用率。該層的數據是原始且詳細的,幾乎不需要修改。任何區塊鏈搜索引擎都可以訪問它。它是網絡上的基礎“fact sheet”,與所有市場參與者相關。
鏈下數據
對於比特幣用戶來說,鏈下和鏈上交易各有優缺點。可擴展性是區塊鏈技術的一個限制,它可以通過鏈下解決方案來解決。鏈上交易的確認時間可能因網絡擁堵情況而產生差異。鏈下交易是即時執行的,交易成本也更便宜,某些交易在被上鍊之前不會產生任何費用。鏈下交易的隱私也更強,因為交易的細節與主鏈分開並且沒有被公開披露。
一些區塊鏈工具,特別是智能合約,依靠基於區塊鏈的觸發器和真實世界的數據來驗證條件和執行合約。例如,一個轉讓土地所有權的智能法律合約。購買房產所需的資金由智能合約託管,該合約需要驗證現實世界的房產事實,類似於實際的契約轉讓。然而,如果區塊鏈不能檢索數據,如第三方已確認的契約轉讓,智能合約的標準如何能被滿足以釋放賣方的資金。對於鏈下數據;這些數據為智能合約提供真實世界的信息,以成功執行契約和買賣。隨著區塊鍊和加密貨幣的不斷發展,鏈下解決方案有可能成為一個永久性的解決方案,但唯有時間才是檢驗其的唯一標準。
借助ZKCross等支持與多鏈ZKRollups和跨鏈層技術進行跨鏈互操作的協議,將增強鏈上和鏈下數據的可用性。 ZKcross創建了一個無所不在的層充當跨鏈Layer2,ZKCross在多個區塊鏈上保持對全局狀態變化的跟踪和同步。通過驗證計算和使用zk-snark證明進行多鏈rollup,其解決了跨鏈第三方的可靠性問題,以及數據可用性攻擊的問題。
總結
我們正處於一個巨大範式轉變的前夕,這將永久地改變比特幣的生態系統。 ZK-Rollups將以最有效的方式擴展以太坊。這個範式變化將是如此深刻,以至於它有效地標誌著所有其他L1智能合約鏈的死亡,包括我們今天熟知的以太坊。有幾個關於可擴展性的爭論。數千小時的研究、實現、成功和失敗都被用於創造ZK-Rollups。
當然,努力還遠未結束。雖然前方道路曲折,但目標從未像現在這樣明顯。由於目前的單體區塊鏈架構的效率仍然低得驚人,而且在受限的三元悖論下,增加吞吐量就意味著降低安全性和/或去中心化。特殊的模塊化設計,將執行分為不同的執行層,如ZKrollups,將區塊鏈行業的效率提高了100倍到10000倍。毫無疑問,這是將其擴展為全球普遍性和提高至數百萬TPS的唯一方法。此外,預計在幾年內,90%以上的區塊鏈活動將會發生在zkRollups上,而不會對安全或去中心化產生明顯影響。
展開全文打開碳鏈價值APP 查看更多精彩資訊