“去中心化驗證” 和 “公鏈模塊化” 這兩個關鍵詞,將成為敘事焦點

作者:Mtyl

原用標題:一文讀懂以太坊新升級方案:Danksharding

前言

Danksharding 於 2021 年末被 Dankrad 提出,引發了以太坊社區討論的熱潮。Danksharding 幫助以太坊實現了 “中心化出塊+ 去中心化驗證+ 抗審查性”,並將以太坊打造成了結算層與數據可用性層,為 L2 的計算性能提升留下空間。有人評價:“Danksharding 將讓新公鏈黯然失色”。

當前華語圈關於 Danksharding 的詳細講解非常少,多為英文資料的翻譯,而英文資料往往默認讀者已經知道許多前置知識、學習曲線陡峭。因此,筆者希望能夠盡可能通俗、清晰的講清楚 Danksharding 的基本思想和其意義,供感興趣的朋友們閱讀交流。

摘要

  • 分片是公鏈 L1 擴容中最有前景的分案;之前的以太坊分片 1.0 分案因為數據同步和 MEV 的問題,目前已經被廢棄
  • Danksharding 的意義:實現了 “中心化的出塊+ 去中心化的驗證+ 抗審查性”,將以太坊打造成結算層與數據可用性層,為 L2 的計算性能提升留下空間
  • Danksharding 的核心設計:通過 RS 編碼和 KZG 承諾,解決了數據可用性問題,實現了網絡驗證的去中心化;通過出塊者-打包者分離(PBS),解決 MEV 問題;通過抗審查清單(Crlist),解決了抗審查問題
  • Proto-Danksharding:Danksharding 的第一步實現,對交易引入新特徵,預計 2023 年實現
  • 公鏈發展趨勢展望:“去中心化驗證” 和 “模塊化” 或成為敘事焦點

一、分片:公鏈 L1 擴容中最有前景的方案

以太坊是當前所有支持智能合約的公鏈中使用率最高、去中心化程度最好的。但是以太坊每秒能處理的交易數(TPS)只有 15-20 筆,其性能也是主要公鏈中最低的。這進一步帶來了許多衍生的問題,比如高 Gas 費、區塊擁堵等

不過這其實也是值得理解的—— 畢竟以太坊現在架構的基礎是 2014 年自比特幣改良而來的,當時整個區塊鏈領域都沒有多少成熟的設計思想可供借鑒。早在 2017 年 ICO 浪潮之時,就有許多人切身體會到了以太坊原生架構設計的弊病,開始關注研究以太坊的性能提升問題,也就是擴容。

擴容的解決方案分為兩大陣營:鏈下擴容與鏈上擴容。鏈下擴容即是現在通稱的 Layer2,包括狀態通道、Plasma、Rollups 等,它們不直接改動區塊鏈本身的規則(區塊大小、共識機制等),而是在其之上再架設一層來完成具體的工作;鏈上擴容需要直接修改區塊鏈的基礎規則,包括區塊大小、共識機制等,這也被稱為 L1 擴容。

分片(Sharding),是當前眾多 L1 擴容方案中被公認為最有前景的。分片本質上是一種並行計算或者說分治的思想:原本網絡中的驗證者都乾著同質化的工作,如果能讓他們分工完成不同的任務,那單位時間內處理的任務數自然就增多了。根據具體分工對象的不同,分片可被進一步劃分為網絡分片、交易分片、狀態分片等。

許多新公鏈的設計都是以分片為核心的,比如 Near、Harmony 等,他們目前也取得了不小的成就和影響力。在這樣的背景下,分片和 “PoW 轉 PoS” 一起,共同構成了以太坊 2.0(現稱 “以太坊合併”)敘事的核心

二、以太坊分片 1.0 設計:思路與缺陷

Sharding 1.0,是對 Danksharding 出現之前的以太坊分片設計方案的統稱,對此做些大概了解是有必要的。不過該方案目前已經被廢棄,所以並非本文介紹的重點。

2.1 狀態分片

Sharding 1.0 希望實現狀態分片。狀態,指的是每個以太坊賬戶地址的餘額,或者是智能合約地址的代碼內容和變量數值;它可以被視為一個大賬本,所有驗證者都需要實時維護、不斷更新它。而如果能把這個大賬本分成多份(比如 64 份),驗證者也隨機分為多組,每組只負責一個賬本相關交易的記賬,那麼速度無疑會加快很多。如下圖所示:

Sharding 1.0:把 validators 分成多個 committee 並行執行任務

下面這個三個村莊的故事有助於更好的理解狀態分片:有一個漁村、一個獵戶村、一個農夫村,村莊內和村莊間常常有交易,但沒有貨幣,大家記賬。以前是用一個賬本記三個村子的賬,速度有點慢,現在改成三個賬本記,那麼由哪個賬本來記哪些帳?一個方法是,漁村有一本賬,獵戶村有一本賬,農夫村有一本賬,賬本中都只有自己村莊的賬戶信息,也只記錄自己村莊內的交易。如此一來三個賬本就可以同時記賬,記賬效率高,存儲需求少。這正是以太坊採用的分片方法:狀態分片,每個分片存儲且只存儲屬於自己分片的賬戶狀態。三個村莊的賬本可以視作三個並行的分片鏈,在分片內部達成共識的過程與原先相仿

顯然,這個分案在設計之初就必須要解決跨分片(跨村莊)交易的可行性問題,這也是所有狀態分片設計中所面臨的重難點之一。

2.2 實現思路

Sharding 1.0 計劃把以太坊分為 64 個分片鏈,每個鏈至少分配 128 位驗證者(即總驗證者數量至少為 16384),採用 PoS 共識

為了協調不同分片鏈之間的通信,Sharding 1.0 的設計中引入了信標鏈(Becon Chain):它是 Sharding 1.0 設計的核心,可以為整個系統提供統一的時間軸,並且跨分片交易提供最終確定性。如下圖所示:

信標鏈示意圖

每過 6.4 分鐘(稱作 1 個 epoch),每個分片鏈所對應的驗證者就會被打亂重排。這麼做,是為了防止攻擊者對分片鏈的蓄意攻擊,畢竟如果 1 個分片鏈的驗證者一直不變的話,想在這個分片鏈上作惡只需買通 128 個驗證節點的大多數,這個成本其實並不高。但如果有了這個打亂重排的機制,那麼攻擊者需要至少買通 30-40% 的驗證者才有機會事先發動攻擊。

(如果對 Sharding 1.0 相關細節設計感興趣的朋友,可以參考:https://ethos.dev/beacon-chain/,

https://vitalik.ca/general/2021/04/07/sharding.html)

2.3 核心問題:數據同步

了解以上 Sharding1.0 的簡單機制,就可以大致理解它面臨的問題了。

我們可以看到,每一個 epoch 過後,每個驗證者就需要切換自己所負責的分片鏈。然而,處理新分片鏈,就需要擁有新分片鏈的狀態和對應的交易數據,這需要進行一次大範圍的網絡節點數據同步這是相當複雜的,實際上,很難保證驗證者們能夠在規定時間節點完成同步 —— 這會帶來網絡延遲和糟糕的用戶體驗。雖然後續也有一些簡化方案,但他們又要面臨一些針對性攻擊的問題,從而又需要進一步的打補丁。這使得整套解決方案變的相當麻煩。

Sharding 1.0 的同步問題

那如果放棄狀態分片,讓所有驗證者都同步存儲所有分片的歷史交易數據,又會怎樣呢?這個看似在當下是可行的,畢竟現在以太坊的全部歷史交易數據加起來也不過約 170G,大多數節點都能勝任。但是,隨著分片後以太坊性能的大幅提升,存儲數據的積累勢必大大加快,這必然導致對節點的存儲性能要求節節攀升,從而降低網絡的去中心化程度。因此這個方案最多只能作為一個過渡。

2.4 另一個問題:不斷增長的 MEV

MEV ,是 “礦工可提取價值” 的簡稱。它的存在,是由於驗證者(礦工)能夠事先看到用戶的交易,從而他們可以針對性的提出自己的交易,通過控制交易排序的方式讓自己獲利。

累積的 MEV 已經超過 6 億美元

這是一個嚴重的問題,不少人已經發出警告,認為這可能會導致以太坊的失敗:“這就像是聘請黑手黨老大們當公務員,讓他們來管理國家”。(參考閱讀:MEV Auctions Will Kill Ethereum

然而,之前的 PoW 轉 PoS 和 Sharding 1.0 不僅不能幫忙解決這個問題,反而可能會進一步加劇它的嚴重程度。這主要是因為 ETH 發行率降低、驗證集中化程度提高等問題導致的。相關細節可以參考:MEV in eth2 - an early exploration

三、Danksharding 詳解

和之前一系列以太坊分片相關的提案不同,Danksharding 並不試圖改進 Sharding 1.0 分片鏈的方案,而是另闢蹊徑,用一套新分案來具體化 “分片” 這一思想。

Danksharding 的核心思想,非常契合 V 神在《Endgame》一文中對以太坊甚至公鏈 L1 未來發展的暢想:中心化的出塊+ 去中心化的驗證+ 抗審查性具體而言,它主要做了下面三件事:

  • 通過數據可用性採樣(DAS)大大降低了參與網絡驗證的成本,保持了網絡驗證的去中心化
  • 通過出塊者-打包者分離(PBS),原先維護以太坊所有歷史狀態數據的全節點,被進一步劃分成兩個角色:出塊者(Proposer)和打包者(Builder)。這不僅為大量數據包的傳輸提供了可能,也解決了 MEV 問題
  • 通過抗審查清單(Crlist),避免了交易被審查的可能性。

3.1 數據可用性採樣(Data Availability Sampling)

3.1.1 數據可用性

數據可用性,指的是區塊生產者(礦工/驗證者)必須公佈並提供他們生產區塊的交易數據,以便全節點來檢查他們的工作。如果區塊生產者不提供這些數據的話,全節點就無法檢查他們的工作,從而無法確保他們有在遵守區塊鏈規則。

數據可用性問題一直以來也是區塊鏈擴容所面臨的挑戰之一,因為隨著區塊鏈的擴容,下載數據並做驗證對節點的性能要求也會越來越高,這會導致去中心化程度的降低

3.1.2 數據可用性抽樣(DAS)

數據可用性抽樣(DAS),是一種減輕節點驗證數據可用性的負擔的方案。

它的主要思想是通過一定的數學設計,讓驗證節點只需要檢查部分數據碎片,就可以從概率上證明一個大數據塊的可用性,而不需要驗證節點去檢查全量的數據。這樣,對驗證節點的性能要求就大大降低了

Danksharding 使用 RS 編碼和 KZG 承諾來實現數據可用性抽樣,讓我們來看看它們的大致思路:

3.1.3 Reed-Solomon(RS)編碼

RS 編碼是一種糾刪碼的具體方案,而糾刪碼(Erasure Coding)是一種編碼容錯技術,通過將數據分割成片段並做擴充,來實現在網絡中的冗餘傳輸。

為了更好的理解 RS 編碼的原理和作用,先看一個非常簡單而直觀的例子

  • 現有 2 個數 m、n,希望能夠通過 RS 編碼在不可靠的網絡中進行冗餘傳輸
  • 我們構造一次函數 f(x) = ax + b,任取 4 個 x 值(下文以 0、1、2、3 為例)
  • 我們令:m = f(0) = b、n = f(1) = a + b,這樣可以解出 a = n - b、b = m;即通過 m、n 兩個數,唯一確定了一個一次函數
  • 我們設:p = f(2)、q = f(3),計算出 p = 2a + b = 2n - m, q = 3a + b = 3n - 2m
  • 我們將 m、n、p、q 四個數在網絡中分發
  • 根據初中關於二元一次方程的知識,不難理解 m、n、p、q 中任意成功收到 2 個,都能夠計算出 m 和 n;也就是說,哪怕我們在傳輸中丟失了 50% 的數據,我們依然可以重構原始數據。

RS 編碼具體應用於數據可用性抽樣的思路大致是這樣的:

  • 把原來待檢查的大數據塊分成 X 個碎片,冗餘編碼成 2X 個碎片,其中任意 X 個碎片都可以復原出原來的大數據塊。
  • 驗證節點做驗證的時候,不再需要下載全部數據,而只需要從網絡中採樣並檢查 k 個碎片,來查看它們是否可用、且是否為合法的編碼。(k 值視具體對安全性的需要進行選取,下文取 k=30)
  • 如果它們都可用且編碼合法,那麼就說明網絡中無法找到 X 個碎片從而復原數據的概率小於 0.5^30,進而說明數據分發節點成功隱藏原始數據的可能性小於 0.5^30。(更嚴謹一些的表述:數據可用性<50% 的概率小於 0.5^30)
  • 而 0.5^30,是一個相當小的、實用中可以被接受的概率

RS 編碼能夠恢復數據背後的數學原理,就是通過構造出 2X 個只有 X 個未知數的方程組,其中任意 X 個方程都可以解出這 X 個未知數。具體的構造形式可以說理解是一種多項式構造的方法:通過 X 個碎片,就可以構造出一個 X-1 次的多項式函數,如同前文通過兩個數構造一次多項式。給定 2X 個變量取值(比如 0,1,2,…2X-1),就可以計算出 2X 個函數值,知道任意 X 個值,都可以復原出原先的 X 個碎片

這裡我們還剩下面的問題有待解決:如何使得編碼人在不向驗證人披露原始數據的情況下,證明他確實按照預先設定的多項式規則編碼了

KZG 多項式承諾,就是用來解決這個問題的。

3.1.4 KZG 多項式承諾

KZG 承諾是一個密碼學技術,大致原理如下:

  • 對多項式 f(x),證明者通過橢圓曲線密碼學技術,對該多項式做出承諾 C(f):對於這個多項式的任意值 y = f(z),證明者可以計算出一個"證明" π(f,z)
  • 對於驗證者,已知承諾 C(f),給出證明π(f,z)、變量 z、取值 y 三個數據,驗證者可以證實 f(z)= y,即(z,y)確實在這個多項式函數上
  • 這個證明無需驗證者知道這個多項式具體是什麼,並且它的時間開銷近似為常數,因此具備高度的實用性和可擴展性

因此,通過 KZG 承諾的計算與分發,我們就實現了編碼合法性的證明。

3.1.5 降低重構數據的難度—— 2D RS 編碼與 KZG 承諾

如果把一個大區塊的數據直接打包,切成碎片後(比如 256 個)做 RS 編碼後分發,這會遇到什麼問題呢?主要問題是,無法滿足重構能力的去中心化:重構數據的時候需要組裝全部的數據,這對重構節點的要求就會非常高,相當於要求重構節點擁有媲美做切數據的中心化出塊者的性能。這和做 DAS 的初衷就矛盾了——   因為我們希望那些性能不高的節點也能夠重構數據

針對這個問題,Danksharding 進一步提出了 RS 編碼的二維擴展。從 “分片” 視角可以更好的理解這種二維擴展:

  • 如下圖所示,我們先把大數據塊分成 256 個分片
  • 對每個分片,我們把它分成 256 個碎片,用 RS 編碼擴展成 512 個碎片,對每個碎片進行 1,2,3,…,512 的編號
  • 將編號相同、但處於不同分片的碎片重新分為一組,這樣我們一共得到 512 組,每組有 256 個碎片
  • 再對每組中的 256 個碎片,用 RS 編碼擴展成 512 個碎片
  • 這樣,我們就相當於把被分成 256x256 個碎片的原數據塊,給擴展成了 512x512 個碎片

二維方案在驗證的時候,由於只有當 75% 及以上的碎片可用的時候,才能確保原始數據的恢復(例如考慮下圖極端情況,>25% 缺失的數據都集中在紅色區域,有可能會導致原始數據中 “藍紅相交” 的那一部分無法被恢復)。所以,驗證節點需要保證 75% 及以上的數據大概率可用。要實現與一維分案採樣 30 次相同的安全性,需要驗證節點採樣 75 次。(0.5^30 和 0.75^75 處於一個數量級)

綜合來看,採用二維方案的好處,就是進一步降低了驗證節點進行驗證的成本:

  1. 減輕了節點驗證數據的負擔。在剛才的例子中,二維分案雖然需要採樣 75 次而不是 30 次,但是它的碎片大小只有一維方案的 1/256,這就降低了對節點的帶寬要求
  2. 減輕了節點重構數據的負擔。因為,如果哪個分片出了問題,就只需要重構對應的分片即可,而不是重構全部原始數據,大大降低了重構的工作量;即使需要重構全部數據,也可以讓不同的節點並行合作,分別重構不同的行/列,進而復原數據。

3.2 出塊者-打包者分離(Proposer-builder Separation)

通過二維 RS 編碼和 KZG 承諾,我們已經解決了最棘手的數據可用性問題,實現了低配置要求、去中心化的節點驗證。

但是,我們也可以看到,這個方案也提高了全節點的性能要求,加劇了全節點的中心化程度和 MEV 問題。這個時候,原本因解決 MEV 問題而提出的 “出塊者-打包者分離”(PBS,Proposer-builder Separation)恰好派上了用場:

3.2.1 角色分離抗 MEV 的原理

回顧一下現在的以太坊中的全節點,它實際上同時承擔了 “打包者” 和 “出塊者” 兩個角色:即,他們既要構建區塊的內容,也要負責對出塊進行驗證+投票。PoW 中的礦工在前一個區塊上構建以進行"投票";合併轉 PoS 之後,驗證者將直接投票來決定區塊是否有效。

而在 PBS 中,這兩個角色是分開的:

  • 原先的全節點若仍想參與區塊打包,配置要求將進一步提高,轉變為 “打包者”;它們通過競價的方式,來爭取下一個區塊的打包記賬權。
  • 從眾多低配置要求的驗證者中,輪換隨機選出一個 “出塊者”;它根據 “價高者得”,來選哪一個 “打包者” 獲得真正的記賬權,並即刻獲得 “打包者” 的競價作為收益。
  • 打包者完成打包以後的區塊,依然需要全體驗證節點來進行驗證,以決定其是否合法、有效;但無論驗證結果怎樣,“出塊者” 的收益都是已經實現、不需要退回的。

通過這種角色分離,就解決了當前的 MEV 價值分配問題:打包者依然可以通過交易排序,提取 MEV。但在一個有效市場中,區塊打包者們會開始 “內捲”,出價到它們能從區塊中提取的全部價值(減去它們的攤銷成本,如硬件開支等)。而所有的這些價值,都分配給了去中心化的驗證者們、而不是那些中心化的打包者們,這符合以太坊發展的理念

3.2.2   可能的 PBS 初步實現:雙槽 PBS

PBS 的確切實現依然在討論中,採用 “承諾-披露” 機制的雙槽 PBS 是最有可能的方案,它的實現如下圖所示:

  1. 打包者們提出它們各自的區塊頭和出價
  2. 出塊者選擇獲勝的區塊頭和打包者,並將無條件得到中標費(即使區塊打包者未能生成有效區塊)
  3. 驗證委員會確認獲勝的區塊頭
  4. 打包者披露獲勝的區塊體
  5. 驗證委員會確認獲勝的區塊體(如果中標的區塊打包者不出示區塊體,則投票證明該區塊體不存在)

如果直接讓打包者們用完整的區塊體競標,不僅需要消耗大量的帶寬,還會有 MEV 盜取問題——如果一個區塊打包者提交它的完整區塊,則另一個區塊打包者可以觀察到並找出策略,進而迅速發布一個更好的區塊。承諾-披露方案規避了這些問題。

延時,是這種"雙槽" 設計的缺點。如果我們 12 秒進行一次投票出塊,那麼進行一次真正的有效出塊需要 24 秒的時間(兩個 12 秒的插槽)。如何把這個時間進行縮短也是一個正在研究的問題。

(更多關於 PBS 的細節可以參考:https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance

3.3 抗審查清單(crList)

現在還剩下的問題是,PBS 增強了區塊打包者審查交易的能力:區塊打包者可以故意忽略某些合法的交易。

抗審查清單(crList,Censorship Resistance List)就是用來解決這個問題的,它要求出塊者指定一個在存儲池中看到的所有符合條件的交易列表;區塊打包者在出價的時候需要證明自己看到了這個列表,打包的時候需要強制包含列表中的交易,如下圖所示:

這裡還有一些細節問題有待完善,比如對於剛才這種設計,對出塊者而言的最優策略就是提交一個空列表,只要誰出價最高誰就能獲勝。相關的完善設計也正在討論中。

3.4 Danksharding 還是分片麼?

如果你對之前的各種分片方案有所了解,在理解了 Danksharding 的設計思路以後,你可能會有一個疑惑:這還是分片麼?對什麼分片了?

其實,有這個疑惑是很正常的。因為 Danksharding 做的事情確實不能被劃進傳統的 “網絡分片- 交易分片- 狀態分片” 的範疇。“分片” 這種思想,主要是體現在數據的碎片化分發、驗證節點無需下載全量數據上面,但也僅此而已了。在第五部分筆者也將介紹,Danksharding 的第一步實現甚至和分片毫無關係。

不過,也不必過多糾結 Danksharding“是不是分片”。畢竟,評價一個技術,關鍵還是看其是否足夠高效實用。

四、Danksharding 對以太坊的意義

通過實現了 “中心化的出塊+ 去中心化的驗證+ 抗審查性”,Danksharding 最大的意義,在於把以太坊 L1 變成了一個統一的結算(settlement)和數據可用性(Data Availability)層,從而為 L2 的計算性能擴展留巨大空間。

結算和數據可用性本身都不是新概念。但當它們結合起來以後,就給了 L2 Rollups 很大的想像間:Rollups 的工作原理核心是鏈下計算和數據壓縮,這就需要空間來存儲這些壓縮數據,而 Danksharding 正提供了巨大的數據空間。因此若 Danksharding 真的實現,長遠來看,Rollups 的 TPS 可以達到數百萬。

這也是為什麼有人會評價 Danksharding 會 “令新公鏈黯然失色” 的原因:如果以太坊有這個性能,那還有大多數的新公鏈什麼事呢?

另外,Danksharding 還保留了 ZK-rollups 和 L1 以太坊執行之間的同步調用,也就是說,來自分片數據塊的交易可以立即被確認並寫入 L1,因為它們都發生在同一個區塊中。

五、Proto-danksharding:實現的第一步

Proto-danksharding(又名 EIP-4844)是一個提議,用於實現構成完整 Danksharding 規範的大部分邏輯和 “腳手架”(例如交易格式、驗證規則),是通往 Danksharding 的第一步。

Proto-danksharding 的主要特徵是引入了新的交易類型,可以認為是對每個交易添加了一個新的特徵,我們稱之為攜帶 blob(Binary Large Object)的交易。攜帶 blob 的事務類似於常規事務,不同之處在於它還攜帶一個稱為 blob 的額外數據。Blob 可以非常大(~125 kB)。但是,EVM 的執行無法訪問 blob 數據;EVM 只能查看對 blob 的承諾。

Proto-danksharding 實際上沒有實現任何分片。因為在 proto-danksharding 實現中,所有驗證者和用戶仍然必須直接驗證完整數據的可用性。

由於所有相關升級都需要在 PoW 轉 PoS 之後完成,在樂觀的情況下,我們可以在 2023 年看到 Proto-danksharding 的實現。

六、對公鏈發展趨勢的展望

中心化出塊+ 去中心化驗證+ 抗審查,似乎真的是當下公鏈 L1 突破” 不可能三角” 的最可能的路徑;其實,不少新公鏈的設計在一些思路上也可以看到 Danksharding 中一些元素的影子。

另外,通過 Danksharding,以太坊把 L1 做成了一個結算層和數據可用性層,而把真正的計算性能提升交給了 L2。這其實是一種公鏈模塊化的思路:將系統分解為多個模塊組件,每個模塊都是一條區塊鏈,它們會負責不同的功能(例如執行層、共識安全層、數據可用性層、DEX 應用鏈、穩定幣應用鏈、NFT 應用鏈、衍生品應用鍊等等),這些模塊可以隨意剝離出來,也可以重新組合在一起。具體一點說,可以是通過高速的 Rollup 執行交易,安全的結算層負責結算,低費用大容量的數據可用性層用負責保障。Celestia 等模塊化公鏈也有類似的設計思路。

目前公鏈的綜合性能,離成為 “下一代互聯網的基礎設施” 還有相當遠的距離。不過,在眾多 Web3 builder 的努力下,相關解決方案也將會被不斷提出。“去中心化驗證” 和 “公鏈模塊化” 這兩個關鍵詞,也許我們會在接下來一段時間有關公鏈的技術文章中不斷看到

參考資料

  1. Delphi Capital:The Hitchhiker's Guide to Ethereum
  2. Dankrad:New sharding design with tight beacon and shard block integration
  3. Proto-Danksharding FAQ
  4. Vitalik Butarin:Why sharding is great: demystifying the technical properties
  5. Vaish Puri:Danksharding: Ethereum's Scalability Killer
  6. zCloak Network:以太坊漫遊指南:深度詳解以太坊 rollup 未來之路

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