一文詳解區塊鏈數據可用性方案
原文標題:Data Availability in Blockchains 原文作者:AltLayer 創始人 YQ 編譯:倩雯,ChainCatcher
數據可用性是指保證區塊鏈網絡中的所有參與者都有權限接觸到區塊中包含的全套交易數據。這一概念對於維護安全性至關重要,尤其是當區塊鏈系統擴容到更大的交易量時。
分片、roll-up 和輕客戶端等新方法將交易處理分散到分片或roll-up 鏈上,而不是讓每個節點都處理所有交易。這樣可以分攤工作,提高吞吐量。但這樣做的後果是,沒有一個節點能看到所有數據。這意味著單個節點無法再完全驗證每筆交易,如果某些交易數據丟失或被隱瞞,它們也無法生成欺詐/ 有效性證明。如果數據可用性得不到保證,輕客戶端就會特別脆弱。
因此,保證必要數據的可訪問性已成為區塊鏈擴容的關鍵挑戰。目前正在出現各種技術,以在不產生過多冗餘開銷的情況下提供這種保證。
數據可用性問題
在比特幣和(POS之前的)以太坊等傳統工作量證明區塊鏈中,每個區塊都包含一個元數據頭和一個交易列表。這些網絡中的全節點會下載並驗證每個區塊中的每筆交易,主要是獨立執行交易並根據區塊鏈的協議規則檢查它們是否有效。這種獨立執行交易的方式允許全節點計算驗證和處理下一個區塊所需的當前狀態。由於全節點執行這種交易執行和驗證,可以執行關鍵的交易有效性規則,防止礦工或區塊生產者在區塊中加入無效交易。
輕客戶端
輕客戶端也稱為 SPV("Simplified Payment Verification"簡化支付驗證)客戶端。採用與完整節點不同的方法,以節省帶寬和存儲空間。SPV 客戶端只下載和驗證區塊頭,不執行或驗證任何交易。相反, SPV 客戶端依賴於一種假設;區塊鏈共識算法偏好的鏈,即比特幣中最長的鏈,只包含正確遵循協議規則的有效區塊。這樣,SPV 客戶端就可以將實際的交易執行和驗證工作外包給區塊鏈的共識機制本身。
SPV 客戶端的安全模型從根本上取決於公式參與者中是否存在"誠實的大多數",例如工作量證明區塊鏈中的礦工會正確應用交易有效性規則,並拒絕少數人提出的無效區塊。如果大多數不誠實的礦工或區塊生產者串通起來,他們就會一起創建具有非法狀態轉換的區塊,從而憑空創造代幣、違反資產保護或實現其他形式的盜竊或剝削。SPV 節點自身無法檢測到這種惡意行為,因為它們實際上並不驗證交易。與此相反,無論共識機制如何,完整節點都會執行所有協議規則,因此它們會立即拒絕由不誠實的多數節點創建的無效區塊。
為改善 SPV 客戶端的安全假設,一種名為欺詐/ 有效性證明的警報機制能夠實現全節點生成加密證明,向輕客戶端顯示給定區塊明確包含無效的狀態轉換。收到有效的欺詐/ 有效性證明後,即使共識機制錯誤地接受了無效區塊,輕客戶端也可以拒絕該無效區塊。
然而,欺詐/有效性證明從根本上要求創建這些證明的全節點能夠訪問區塊中引用的全套交易數據,以便重新執行交易並識別任何無效的狀態變化。如果區塊生產者選擇性地只發布區塊頭,而不發布特定區塊的完整交易數據集,那麼完整節點將無法獲得構建欺詐/有效性證明所需的信息。這種網絡無法獲得交易數據的情況被稱為"數據可用性問題"。
在沒有數據可用性保證的情況下,輕客戶端不得不只能相信區塊生產者的行為是誠實正確的。這種對信任的完全依賴違背了欺詐/有效性證明的初衷,破壞了輕客戶端模式的安全優勢。因此,數據可用性對於維持區塊鏈網絡中欺詐/有效性證明的預期安全性和有效性至關重要,尤其是當擴容到更大的交易量時。
擴容解決方案對數據可用性的需求
除了現有網絡對數據可用性的需求外,數據可用性在分片和roll-up等旨在提高交易吞吐量的新擴容解決方案中變得更加重要。目前有許多倡議和項目,如 proto-danksharding、EIP 4484、Celestia、EigenDA 和 Avail,都在為 roll-up 提供高效、經濟的 DA 方面取得了很大進展。
在分片區塊鏈架構中,驗證者的單一網絡被分成更小的組或"分片",每個組或"分片"只處理和驗證一部分交易。由於分片不處理或驗證來自其他分片的交易,因此單個分片節點只能訪問自己特定分片的交易數據。
在 roll-up 過程中,交易的執行是在優化環境下鏈外進行,從而大大提高了交易吞吐量。只有經過壓縮和匯總的交易數據才會被 roll-up 操作員定期發布到主鏈 L1。與直接在 L1 執行所有交易相比,這種方法減少了 L1 的費用和擁堵。
在分片和 roll-up 中,沒有任何一個節點能驗證甚至觀察到整個系統中的全部交易。以前傳統單體區塊鏈的數據可用性假設被打破了。如果排序器操作員扣留 roll-up 區塊的整交易數據集,或者一組惡意串通的驗證者在分片中生成了一個無效區塊,其他分片或 L1 的完整節點將無法訪問缺失的數據。沒有這些數據,它們就無法生成欺詐/有效性證明,表明是無效狀態轉換,因為它們無法獲得識別問題所需的數據。
除非引入新的穩健方法來保證數據的可用性,否則不良行為者可能會利用這些新的擴容模型來選擇性地隱藏無效交易,同時保持足夠的可見區塊有效性以避免被發現。用戶不得不相信分片節點和 roll-up 操作員在任何時候都會誠實行事,但相信一大批分佈式參與者始終誠實行事是有風險的,而這正是區塊鏈通過激勵機制、去中心化和加密技術所要避免出現的情形。
在跨分片交易和 L2 解決方案的背景下,要保持輕客戶端模型和有效欺詐/ 有效性證明的預期安全優勢,就必須更有力地保證全套交易數據在網絡中的某個地方隨時可以。數據本身並不需要被所有分片上的所有節點下載,但如果參與者希望驗證區塊並生成有關潛在問題的欺詐/有效性證明,至少必須可以隨時訪問這些數據。
數據可用性解決方案
人們提出並探索了許多方法,這些方法有助於提供"數據可用性",而無需分片式網絡或 L2 網絡中的所有節點過度下載和存儲完整的交易數據集:
數據可用性抽樣
數據可用性抽樣指的是一類技術,允許輕客戶端只下載整個交易數據集的隨機片段,以概率方式檢查交易數據是否可用。proto-danksharding、Celestia、EigenDA 和 Avail 等項目嘗試了各種新技術,如 KZG 承諾和 ZK 證明,以實現更好的抽樣。
通常,數據可用性抽樣方案依賴於擦除編碼,這種方法採用完整的交易數據集,並通過增加計算冗餘將其在數學上轉換為更長的編碼數據集。只要有足夠的編碼片段子集可用,就可以通過逆轉數學變換從編碼數據重建原始數據。
輕客戶端會隨機獲取並驗證少量擦除編碼數據片段。如果任何抽樣片段丟失或不可用,則表明整個網絡可能無法使用完整的擦除編碼數據集。客戶端能從數據集的隨機片段中收集的樣本越多,客戶端檢測到任何丟失數據的可能性就越大。可以對擦除編碼參數進行調整,使輕型客戶端只需對很小比例的片段(約 1%)進行隨機抽樣,就能以極高的統計置信度驗證完整數據集的可用性。
這種通用方法可以讓輕客戶端非常高效地檢查哪怕是非常大型交易數據集的可用性,而無需實際下載整個數據集。樣本也會與網絡上的完整節點共享,以幫助重建任何缺失的數據塊,並在必要時恢復不可用的數據塊。
數據提供委員會
基於委員會的數據可用性方案將交易數據可用性驗證的責任分配給相對較小的一組可信節點,這些節點被稱為數據可用性委員會(DAC)。委員會節點存儲區塊交易數據的完整副本,並通過在主鏈上發布加密簽名來表明數據確實完全可用。這樣,輕客戶端就能以低成本驗證這些簽名,從而確信委員會節點的數據是可用的,而無需自己實際處理或存儲數據。
數據可用性委員會根本要做的取捨是,輕客戶端必須相信委員會節點會正確發出數據可用性信號。依賴於集中式許可委員會會給網絡帶來一定程度的集中風險和單點故障。使用由 Proof-of-Stake 驗證器組成的 DAC 技術,並對不當行為進行嚴厲懲罰,可以降低但不能完全消除輕客戶端的信任要求。
數據分片
在數據分片方案中,交易數據被分成多個分片,輕客戶端從所有分片中進行概率抽樣,以驗證整個系統的數據可用性。然而,實施跨分片抽樣通常會大大增加數據可用性協議的複雜性,而且可能需要複雜的網絡拓撲結構來防止單點故障。
簡明證明
零知識證明和 zk-SNARK 等新興加密證明可用於證明區塊中狀態轉換的有效性,而不會泄露任何底層交易數據。例如,有效性證明可以證明 roll-up 區塊轉換是完全有效的,而不會泄露 roll-up 本身所使用的任何私有交易數據。
不過,從根本上說,數據仍然需要在某個地方提供,全節點才能正確更新其本地狀態。如果區塊生產者完全不提供區塊的底層交易數據,全節點就無法準確跟蹤最新的狀態平衡和完整性。簡潔證明可以保證狀態變化的有效性,但不能保證驅動這些變化的底層數據的可用性。
結論
隨著區塊鏈交易量的擴大以及向分片和 roll-up 等先進架構的過渡,數據可用性是一個必須解決的關鍵挑戰。不過令人鼓舞的是,隨著去中心化區塊鏈網絡的發展,存在多種可行的途徑來實現數據可用性,防止該問題成為永久限制可擴容性和抗審查性的障礙。