數據可用性在乙太坊的升級角色是用來保存或者上傳整個 Rollup 的所有交易數據。

嘉賓:QI ZHOU,EthStorage 創始人

整理:aididiaojp.eth,Foresight News

本文為 Web3 青年學者計劃中 EthStorage 創始人 Qi ZHOU 視頻分享的文字整理。 Web3 青年學者計劃由 DRK Lab 聯合 imToken 和 Crytape 共同發起,會邀請加密領域中知名的青年學者面向華語社區分享一些最新的研究成果。

大家好,我是 Qi ZHOU,2018 年全職進入 Web3 行業,之前在谷歌等大廠做分散式系統開發,目前主要的工作集中在乙太坊數據可用領域。 我們今天的主題是《EIP-4844:開啟乙太坊數據可用的大門》。 首先我會去介紹一下什麼是數據可用,然後在數據可用的基礎上介紹一下 EIP-4844 以及它的一些應用場景,最後再做一些總結。

EIP-4844 是以太坊坎昆升級中最主要的升級,受到了很多開發者甚至整個乙太坊社區的關注。 那麼我們需要它解決什麼問題? 為什麼它對接下來整個乙太坊 2.0 升級路線圖非常重要? 要回答這兩個問題,我們首先要從數據可用的角度去理解乙太坊 2.0 主要做什麼事情?

什麼是數據可用?

數據可用(Data Availability)的簡寫是 DA,它實際是以太坊 2.0 非常重要的一環。 對於 DA 的定義有很多版本,這裡借用 Dankrad 的定義是沒有任何一個人能夠阻止你去獲取數據,尤其這個數據是使用者通過交易來提交到 Layer 1 網路。 在這個過程中,我們只信任乙太坊協定本身,不需要再信任任何額外的協議,當然這需要當前乙太坊完成升級后才能達到這樣的目標。 並且只有在乙太坊的本身網路出現問題的時候,使用者提交的數據才無法被其他人去訪問。 我們現在使用的數據上傳機制叫做 Gossip 或者是叫廣播方式,在 P2P 網路當中,任何一個節點聽到了一個新數據的出現,那麼這些節點都會去廣播。 或者是當一個節點聽到其他節點擁有一個他不知道的數據的時候,它會相應的去下載。 所以在現有的機制下,消息是逐步傳遞出去的。 我們可以通過這種方式去來上傳一些使用者需要定製的數據。 但是大家知道這個是效率非常低的,因為所有的節點都要去把新數據廣播給其他節點,有非常多的通信冗餘。

乙太坊網路希望能夠通過一種擴容的方案,使得使用者在提交大量的數據的時候,其他節點不需要下載所有區塊,也可以驗證數據是可用的。 大家可以通過一些非常有意思的技術,尤其是基於數據可用的採樣,再加上高級的數據編解碼的方式,就可以去驗證數據在全網都被保存並且可以訪問。 Danksharding 也是乙太坊非常著名的升級方案,它需要實現的目標是能夠讓每一個區塊能夠包含 32 兆的數據,並且可以達到 2.66 兆每秒的數據上傳速率,這相當於現在乙太坊數據上傳速率的 18 倍。 目前一些包括 GPU 的實現等,技術上還有非常大的改進空間,除了乙太坊,也有很多其他專案也在構建它們的 DA 系統。

為什麼 DA 在乙太坊升級路線中非常重要?

乙太坊的升級路線是以 Rollup 為中心的,DA 在乙太坊的升級角色是用來保存或者上傳整個 Rollup 的所有交易數據。

Optimistic rollup 是 Rollups 的一種主要方式。 Optimistic rollup 希望所有使用者都能夠訪問到他們在 Layer2 的交易數據,並使得任何人都能夠實現無准入的方式去構造它們 L2 的狀態。 任何一個節點都可以獲取從創世區塊到當前的所有數據。 網路狀態包含了每個賬戶的餘額,每個智慧合約的狀態以及上面的具體數據。 如果一個區塊的提交者在作惡的時候,他可能會去篡改一些人的餘額或者篡改一些 DeFi 協定的一些資訊,比如說某一個使用者在上面質押的資產數目。 如果有人都能夠通過重構的方式,並且通過鏈上互動式挑戰的方式去來挑戰這個提交者,那麼大家就能夠去把這個作惡的提交者踢出 Optimistic 的網路,這又叫欺詐證明過程。

能否通過 DA 訪問 Layer2 數據,其實更加會影響 Optimistic Rollup 的安全。 為了能夠讓 Layer2 能夠繼承乙太坊的安全性,乙太坊需要能夠通過整個協定安全機制來上傳大量的 Layer2 的數據。 ZK rollup 相對會更安全一些,這也是為什麼 Vitalik 認為長期來看,對於快速出入金的體驗以及安全性來說,ZK Rollup 會有更好的優勢。

Layer2 的提交者在上傳數據時,還需要提交合法性證明,使得 ZK rollup 的提交者作惡的空間會更低。 但還是有可能存在審查攻擊,比如一些用戶入金了之後,但是提交者不去把使用者的一些交易或者退出的一些交易進行處理。 我們使用 DA 技術也可以重構整個 Layer2 的狀態,並且可以在 L1 強制執行使用者的交易。 雖然 ZK rollup 安全級別更高,但也需要 DA 技術能夠更好進行抗審查方面的工作。

為什麼不用去中心化存儲方案做 DA?

首先很多去中心化存儲方案和 DA 在數據安全方面是非常不一樣的。 很多去中心化存儲的數據理論上是被少數數據提供者保護的,但是這個數據並不是由整個網路協議進行保護。 除了協定本身,因為首先數據在上鏈時,我要把相應的哈希交易等數據上鏈,那麼這部分是由協定本身來保護。 數據是否能夠上傳,以及數據能否被下載等,這些的安全性一般都是需要額外的信任機制。 以 Arweave 為例,它在數據上傳過程中,首先是使用者提交一筆交易,這個交易包含了對應的哈希。 一旦交易上了 Arweave 之後,用戶可以挑選任何一個 Arweave 節點上傳剛剛提交易數據,這個數據可以很大。 但當我選擇的節點不把數據分發到網路,這會導致數據可能就只有一個副本在這個網路里。 在這種情況下,比如說我提交的這個交易有兩部分,第一部分是交易本身,包括交易哈希,但是不包含數據本身。 接下來上傳的過程中並不能夠讓整個網路能夠保護我的數據本身不會被攻擊。 那麼這就是大部分如 Filecoin 和 Arweave 等去中心化存儲方案的工作機制,我們需要額外的保護機制。 在這種情況下,這個數據上傳的過程其實是類似一個私人的方式,也就是說我去找幾個比較熟悉的數據存儲方去上傳,並且希望他能夠把這個數據分化到網路中。 針對高價值的公開的交易數據,比如說像 Layer 2 交易來話,使用去中心化存儲是有非常大的隱患。 為了能夠讓大家比較清晰去區分數據可用和去中心化存儲的區別,我稍微列了一下比較重要的維度。

第一是信任模型,對於數據可用來說,我的數據是否被整個協定保障的。 比如乙太坊本身在保證交易和交易數據安全性的同時,可以保證數據是可以被使用的。 對於去中心化存儲來說首先我要信任協定本身,同時我也要信任一些參與數據上傳的數據提供方,那麼這是額外的信任保證。 第二是數據如何保存。 在數據可用中,數據是被所有乙太坊驗證者保存的,他們都作為參與協定的一部分必須要去保存使用者上傳的數據,但是是通過一種叫做數據分片的方式來去保存的。 在去中心化存儲中,是某些數據供應商,但是並不保證所有的網路節點都能去參與數據保存的過程。 所以對於數據的安全級別來說的話,數據可用技術更適合公開高價值的數據,去中心化存儲更加適合一些私有數據上傳。

DA 如果保存大量數據,它並不期望所有的驗證者都會長期的保存使用者上傳數據。 EIP-4844 現在只是保存 18 天的數據。 那麼對於去中心化存儲來說,它的存儲時間可以更長。 比如 Arweave 號稱是永久保存,Filecoin 也可以由使用者和數據記憶體來設置保存時間。

相對於現在的去中心化存儲,數據可用一般會用一些編碼方式如 Reed-Soloeon Code,它會引入一些額外的數據空間,哪怕丟失了非常多的數據,我們還是可以會恢復整個數據本身。

EIP-4844

接下來我們講一講為什麼會有 EIP-4844,首先大家可以去乙太坊的官方網站查看 EIP-4844 的描述。 EIP-4844 的描述中有兩個非常重要的單詞,分別是 simple 和 forward compatible。 數據可用 Danksharding 從學術研究到整個的工程實現需要花很長時間,我預計可能還要兩三年的時間才能夠完全上線。 但大家可以看到現在已經有非常多的 Layer2 網路已經在乙太坊上在部署運行了。 乙太坊 DA 整個未來 DA 的數據保存和訪問方案跟現在的 calldata 機制不一樣,那麼就會導致很多應用在未來的時候需要升級合約才能夠充分的使用乙太坊 DA 技術。 去年 V 神表達了對 EIP-4844 進度的關心,他認為如果所有的 Layer2 未來都要根據 DA 升級合約,這是對 Layer 2 來說是非常不友好,因為每次升級合約都是可能會帶來一些相應的風險。 所以大家都在討論能不能提供一個最簡單的 DA,還是以 Gossip 版本的方式去廣播數據。 同時我們在這個版本基礎上提供一個叫做向前相容的功能,提供 EVM 的介面使得我們能夠向前相容未來乙太坊 DA 的運作模式,這樣就使得 Layer 2 的 L1 合約不需要專門針對乙太坊 DA 的升級而升級,這也是乙太坊在設計推出 EIP-4844 的時候所具有的非常重要的動機,就是希望通過整個協定的升級能夠降低應用在使用 DA 技術的複雜度以及安全性。

EIP-4844 的元件

整個 EIP-4844 有幾個元件,可以用幾個比較簡單的話去描述。 首先第一個是 Binary Large Object 叫簡寫叫 BLOB。 它是乙太坊 DA 的最小存儲單元。 再 CALLDATA 中,它是一個數據長度可變的方式,但是在 EIP-4844 的 DA 中,所有數據的大小必須是 128KB 乘以 N。 當然我也可以下載或者上傳一個自己的小的數據,但是它會自動去佔滿 128KB 整個的 BLOB 空間。 一個交易可以提交多個 BLOB,但是每個 BLOB 是一個固定大小 128KB。 這樣的話主要是為了便於使用 Reed-Solomon code 編解碼。

第二在 DA 網路中,BLOB 是通過一個在 CL 中的 Gossip P2P 網路進行廣播和下載,但數據的上傳性能其實是沒有變化的,它只是解決一個向前相容的問題。

最後,DA 提供兩個介面,後面給大家會更好去解釋一下這兩個介面的應用。

如何使用 DA 上傳數據?

當 EIP-4844 升級之後,乙太坊實際上會有一個叫做數據可用的網路,這是一個新的元件,未來會通過 Danksharding 方式來實現。 同時乙太坊會有自己的合約,這裡以 Rollup Contract 合約為例,當 Layer 2 想要把交易上傳到乙太坊時,它不會把交易放到 CALLDATA 當中,而是放到新引入的 BLOB,這裡 BLOB 本身會包含使用者想要上傳的交易數據。 同時這個 BLOB 本身並不會在乙太坊當前的執行層網路去廣播,而是放到乙太坊 DA 網路裡面去進行上傳。 在交易被執行的過程中,乙太坊會保證這個 BLOB 所對應的哈希能夠 DA 網路裡面能夠找到。 但是在乙太坊 EVM 當中,這些數據本身或者說 BLOB 是無法在裡面直接訪問得到的,但可以通過一個叫做 DATAHASH OPCODE 指令來獲取這些數據所對應的哈希。 雖然我訪問不到這些數據的內容,我知道數據本身對應的哈希是可以在 DA 網路裡面獲取的。

在 Optimistic Rollup 挑戰時,智慧合約需要根據交易內容本身進行相應的挑戰。 這個時候的挑戰交易會把 DA 網路裡面對應的 BLOB 拷貝到它的 CALLDATA 中。 Rollup 智慧合約會檢查之前上傳的 BLOB 和這個 CALLDATA 是不是一一對應的關係。 這個檢查過程是使用一個叫做 Point evaluation Precompile 技術來檢查一個挑戰者所提交的 CALLDATA 對應的 BLOB 數據。

整個過程,Layer 2 網路在使用 DA 進行上傳,然後通過 OPCODE 拿到 BLOB 數據所對應的哈希,但是我又不能訪問它到它。 當我具體需要訪問的時候,我再去把 BLOB 數據拷貝到 CALLDATA 進行上傳,最後通過上傳之後數據我們可以去做具體的挑戰。 這是使用 EIP-4844 一個基本的模型。

為什麼分離數據本身和數據哈希?

分離數據本身和數據哈希的主要目的是它使得一個節點在不需要下載全部數據的情況下,能夠保證通過數據所對應的數據哈希來保證我們可以使用數據,這個就是數據可用的採樣技術。

數據可用採樣

本地運行的乙太坊節點在看到一系列數據哈希的時候,怎麼判斷數據是不是真的存在? 一種方式時我把所有數據全部去下載,另外一種方式我只需要通過隨機採樣。 實際上在數據經過編碼之後,我只需要對數據進行隨機採樣就能保證數據是可用的,而數據採樣所需要的相對數據量本身來說是一個非常小的數量級。

EIP-4844 的應用

我們可以通過 EIP-4844 來做一個 Layer2 去中心化存儲模型,我們最近提出了一個可以通過數據可用來極大提升整個欺詐證明的交互過程,我們基本上可以通過極少的交互過程來證明 10 億到 100 億級別的鏈上指令計算。

EIP-4844 還存在哪些問題?

第一是因為 EIP-4844 對整個乙太坊協定做了一個非常大的升級,所以對於一些新的指令級別,比如說像我們剛剛提到的 OPCODE 0X49,Solidity 其實沒有相應的支援。 所以我們開發了一個智庫,然後使用 Solidity 語言,並通過 Solidity 彙編的方式來支援新的 OPCODE。 這樣的話使得大家在沒有 Solidity 支持的情況下就能夠調用剛才 EIP-4844 數據哈希的指令。

第二個問題是為了降低所有數據存儲開銷,EIP-4844 會在 18 天左右時間裡面會去丟掉數據。 我們希望能夠借鑒現在去中心化存儲的機制能夠使得這些數據更加長久甚至永久保存,所以我們構建了 EthStorage 專案,旨在通過乙太坊存儲費用來設立存儲激勵機制,並通過我們開發的存儲證明演算法來把這些存儲費用分配給數據提供方。 我們希望能夠把乙太坊的存儲能力擴大 1000 倍,同時降低 1000 倍的存儲開銷。

免責聲明:作為區塊鏈資訊平臺,本站所發佈文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。 本文內容僅用於資訊分享,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。