資料可用性問題對如今的區塊鏈有何影響?

有看到天上的屋嗎發表於2021-10-28

什麼是資料可用性問題?

資料可用性(DA)問題:區塊鏈網路中的節點如何確保新提議區塊的所有資料實際上是可用的?如果資料不可用,則該塊可能包含被塊生產者隱藏的惡意交易。


舉個例子,假設 Alice 是 ZK-Rollup (ZKR) 的運營商。她在以太坊上提交了經過驗證的 ZK 證明。如果她沒有在以太坊上提交所有交易資料,儘管她的證據證明 rollup 中進行的所有狀態轉換都是有效的,但 rollup 的使用者仍然可能對其當前賬戶餘額一無所知。由於提交的證明的零知識性質,提交的證明沒有說明當前狀態。


Optimistic Rollup (OPR) 設定中有一個類似的例子,Alice 在以太坊上提交了一個斷言,但 OPR 的任何參與者都不能挑戰它,因為交易資料不可用,因此他們無法重新計算或挑戰該斷言。


為了應對上述情況,OPR 和 ZKR 的設計都要求 operator 將以太坊上的所有交易細節作為「calldata」提交。雖然這使他們在短期內避免了 DA 問題,但隨著 rollup 內部交易數量的增長,需要提交的資料量也會增加,從而限制了這些 rollup 可以提供的擴充套件量。


這對如今的區塊鏈有何影響?

為了回答這個問題,讓我們首先回顧一下類似以太坊的區塊鏈的一般區塊結構以及任何區塊鏈網路上存在的客戶端型別。


一個塊可以分為兩個主要部分:


區塊頭:一個小區塊頭包含與區塊中包含的交易相關的摘要和後設資料。


塊體:它包含所有交易資料並佔塊大小的大部分。


在傳統的區塊鏈協議中,所有節點都被視為同步整個區塊並驗證所有狀態轉換的完整節點。所有節點花費大量資源來檢查交易有效性並儲存區塊。從好的方面來說,這些節點不會接受任何無效的交易。


可能還有另一類節點沒有(或不想花費)資源來驗證XM外匯返傭xmchina.net.cn每筆交易。相反,他們主要對了解區塊鏈的當前狀態以及與他們相關的某些交易是否包含在鏈中感興趣。這些輕客戶端依靠全節點來檢查所有交易是否有效。因此,在安全性方面,它們依賴於可信的全節點。


但是如果區塊生產者沒有透露區塊背後的全部資料呢?這可以防止全節點驗證所有交易。這反過來又阻止了輕節點絕對確定它所看到的由所有合法交易支援的區塊頭。


為了解決這個問題,我們需要一種輕客戶端機制來驗證資料可用性。這將確保區塊生產者無法通過說服輕客戶端來隱藏資料。它還將迫使區塊生產者公開部分資料,使整個網路以協作的方式訪問整個區塊。


讓我們藉助一個例子更深入地探討這個問題。假設區塊生產者 Alice 用交易 tx1、tx2、……、txn 構造了一個區塊 B。讓我們假設 tx1 是惡意交易。如果 tx1 被廣播,任何完整節點都可以驗證它是惡意的,並將其傳送給輕客戶端,輕客戶端會立即知道該塊是不可接受的。但是,如果 Alice 想隱藏 tx1,她會顯示標頭和除 tx1 之外的所有交易資料。全節點無法驗證 tx1 的正確性。讓輕節點查詢任意一筆交易,均勻隨機。輕客戶端查詢 tx1 的概率為 1n。因此,Alice 能夠以壓倒性的可能性欺騙輕客戶端接受惡意交易。由於不可歸因的性質,全節點無法以任何方式證明 tx1 不可用。


那麼,我們該怎麼辦呢?

該問題的解決方案在於在塊中引入冗餘。總的來說,有大量關於編碼理論的文獻,特別是擦除編碼,可以幫助我們解決這個問題。


簡而言之,糾刪碼允許我們將任何 n 個資料塊擴充套件為 2 個資料塊,其中 2n 個資料塊中的任何一個都足以重建原始資料塊(引數是可調的,但為了簡單起見,我們在這裡考慮了這一點)。


如果我們強制區塊生產者擦除交易 tx1、tx2、...、txn 的程式碼,然後隱藏單個交易,則需要隱藏 n+1 個交易,因為任何足以構建整個交易集的交易。在這種情況下,恆定數量的查詢使輕客戶端足以確信底層資料確實可用。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69995368/viewspace-2839529/,如需轉載,請註明出處,否則將追究法律責任。

相關文章