以太坊擴容在社區中的討論如火如荼,多個解決方案正在加緊開發,並有望在今年全部上線主網。在整個以太坊 Layer2 方案爆發的前夕,imToken 聯合 ETHPlanet、EthFans、ECN、上海前沿技術研討會和 HiBlock 等多家優秀的以太坊生態社區與公司,共同策劃一場以太坊擴容主題系列活動。
4 月 23 日舉辦了第一場活動:Rollup - 以太坊 L2 擴容新範式杭州線下 Meetup。
以下是本次 imToken 首席科學家 Chang-Wu 的分享:「Rollup 未來在以太坊的角色」 的文字版,由 imToken 整理。
演講整理
我先帶大家了解一下什麼是 Rollup,以及 Rollup 未來與 Eth2 路線圖又是一個什麼樣的關係。
首先,我們都知道現在以太坊網絡的一個 block(區塊) ,它的計算單位是 gas limit(筆者註:每筆鏈上交易都會消耗 gas),每個區塊的 gas limit 都有上限,目前這個上限值已經被調整為 1500 萬,這 1500 萬就代表每個區塊可以包含的計算單元,也就是每個區塊裡所有交易累計消耗的 gas limit 不能超過 1500 萬 gas。
舉例來說,單純的 ETH 轉賬,每筆的 gas limit 是 21000。如果一個區塊中所有交易都是 ETH 轉賬,那麼單個區塊中最多可包含的交易筆數就是 1500w / 21000 = 714 筆。同時,目前以太坊出塊平均時間是 12 秒,那麼用 714 除以 12,我們就可以知道目前以太坊網絡每秒可處理交易數的上限。
最近大家都看到了,現在的網絡是非常擁擠的,尤其是在柏林昇級前,區塊 gas limit 只有 1200 萬的時候。但即使是通過升級把 gas limit 提升到了 1500 萬,我們仍然看到每個區塊幾乎都是滿的,區塊空間利用率接近飽和。
也就是說這時候你想要放入更多的交易其實是很困難的。同時我們也注意到,因為一些 DeFi 項目的興起、需求等等,每當市場上有震蕩的時候,手續費就會特別昂貴。過去一段時間,我相信大家也注意到在星火礦池維護的實時評估 gas 的網站上,有時甚至能看到 900、1000 Gwei 這樣非常昂貴的手續費的產生。
所以在這一現狀下我們認識到由於 DeFi 不停增長的需求,導致網絡擁擠、每個區塊都是飽和的狀態、手續費昂貴。即便近期(在柏林昇級中)提升了區塊的 gas limit,但仍不足以滿足鏈上的交易需求。
對此,我們越來越需要通過擴容來支撐以太坊網絡整體的交易量。這就是我們今天想要和大家介紹的主題 - Rollup,中文叫做卷疊。通過引入 Rollup 技術方案,我們可以將以太坊網絡的交易處理能力由當下 Eth1 上的 20 TPS(每秒可處理交易)提升至 4000 TPS(從理論上估計)。
那麼 Rollup 是什麼,以及它在 Eth2 路線圖中又會扮演什麼樣的角色呢?
我們都知道 Eth2 想要通過分片的方法來提升整體的交易量。具體而言,分片是通過將交易發送到不同的 Eth2 分片去做執行,因為分片本身的設計允許不同的交易在不同分片上平行處理,以此從最底層的協議上進行優化,達到給網絡整體擴容的目的。但是呢,我們也都知道,Eth2 的階段 0 是去年 12 月份剛上的,上面談到的分片實際運轉起來可能要等到階段 1.5 或階段 2。如果沒有過渡或者說妥協的方案出來,這中間將是漫長的等待期,而且期間網絡將一如既往的擁堵。這也是為什麼 Rollup 二層網絡解決方案在近期越來越受到歡迎和普及。
那接下來,我們開始介紹 Rollup,我會通過說明 Rollup 的每一個步驟來向大家解釋它是如何實現擴容的。
首先,下圖中間黑線上面代表 Layer1,下方代表 Layer2。 Layer1 的主網就是現在 Eth1 的主鏈,Rollup 項目方會在這條主鏈上部署一個智能合約。
用戶在這個合約中可以 deposit(存入)資產,存入後,Rollup 運營商或服務商就會在二層網絡上把這些資產映射出來。關於具體的映射方式,我們可以把它想像成是以數據庫的方式,映射成一個存儲的格式,而這個格式可以表示每一個賬號現在有多少餘額。
通過這種方式將用戶在主網 Layer1 的存入資產與二層網絡賬戶上的餘額進行映射。然後,用戶就可以在 Layer2 上進行轉賬、兌換等操作。那麼,當用戶們在 Layer2 發起大量交易時,由誰來對這些交易進行篩選、排序和打包呢?
在當前的 Rollup 二層網絡方案中,這個角色一般由項目方來承擔,我們稱其為 sequencer(排序者)。 sequencer 的角色,有點像是在打包這些交易,類似 Layer1 的礦工。但區別在於,sequencer 是先把交易整理好,然後才去做打包交易的動作。比如在二層網絡中用戶 A 給用戶 B 轉 10 個 token,用戶 B 給用戶 C 轉 20 個 token,這些交易就會由 sequencer 來負責驗證處理,並且打包整理成最後用戶 A、B、C 的餘額應該各有多少。
但僅做到以上這些仍是不夠的,因為以太坊上一筆交易占據的空間非常大。例如僅收款方的地址,就佔 20 個 bytes,ECDSA 簽名佔 64 bytes。對於以太坊區塊有限的空間來說,這些數據所佔用的空間較大,那麼我們是否有辦法壓縮這些數據呢?
方法是有的。現在以太坊上一個地址是 20 bytes,在二層網絡上,我們可以通過編碼的方式進行壓縮。具體來講,Layer1 上的一個普通地址通過編碼可以從 20 bytes 壓縮到 3 bytes。同樣的,上面提到的 ECDSA 簽名數據和其他數據也可以進行壓縮。 sequencer 的職責就是壓縮交易,並將壓縮後的數據放在 Data(以太坊交易的一個字段)中同步到 Layer1 上。以上就是 Rollup 處理交易的過程說明。
到這一步,我們看到即使是在 Layer2 上,sequencer 最終同樣需要把所有交易打包後的數據上鍊。這裡有兩個問題需要回答:
- 為什麼要把數據放到鏈上?
原因在於只有當數據上鍊時,數據才具備可用性,其他人就可以通過這些數據來驗證其中包含的交易是否真的成功。避免由於 sequencer 作惡(比如將一筆轉賬的收款地址替換為自己的地址)造成的資產損失。因此數據上鍊是必要的。 - 如何確保上鍊的數據是正確的(即如何保證數據的有效性)?
這就要求 sequencer 要對數據進行驗證,一般是通過提交 Proof(證明)來確保上鍊數據正確。
在第二個問題上,目前的 Rollup 方案主要區別在於對數據和 Proof 的處理上。有的方案只把數據上鍊,但不對數據進行驗證,也就是缺乏 Proof,比如 Optimism(筆者註:他們通過欺詐性證明來保障鏈上數據有效)。有的方案則是將數據和對數據的 Proof 同時上鍊來保證數據的有效性,比如 zkRollup 通過零知識證明對數據進行驗證,並且把驗證得到的 Proof 和數據一起上鍊,以此確保對應數據在鏈上的有效性和資金的安全性。所以 zkRollup 是目前被大家公認為比較安全的方案。
整體來看 Rollup 方案,Layer1 上的智能合約就像是城堡,其中的資金安全性依賴於 Layer1 自身的安全性。在 Layer1 上需要保存各賬戶的狀態轉換數據,同時要把 Layer2 上交易壓縮後的數據同步到 Layer1 上,至於要不要做 Proof 則取決於具體的項目方的取捨。
Layer2 則負責執行交易,將本來在 Layer1 上處理的交易轉移到 Layer2 上。當前對數據正確性的驗證主要有兩種典型的方案:
- Validity proof:即指類似於 zkRollup 的零知識證明方案。將數據和對數據的 Proof 同時上鍊。
- Fraud proof:即指類似於 Optimism 的欺詐性證明方案。由於只將數據上鍊,所以 Optimism 需要用戶或項目方自身去監測 sequencer 是否如實地把交易數據同步到了 Layer1 上。如果監測到欺詐行為,那麼就可以通過提交欺詐性證明來保障資產安全。
最後,關於數據可用性,從形態上可以簡單分為兩個代表:zkRollup 和 Optimism。主要區別在於對哪些數據上鍊(on-chain) / 不上鍊(off-chain)方面的取捨。大部分方案都是把數據上鍊的,但是也有一些方案選擇對一部分數據不上鍊處理,這麼做的好處在於可以進一步提升擴容性能,而不用受區塊自身可存放數據容量大小的限制;另一個原因是,有些應用顧慮到隱私性或其他一些特性,並不希望所有數據都上鍊,因而做了取捨,對這部分在這次分享中我們不去詳細討論。
在數據上鍊 / 不上鍊取捨上有一個典型的例子:zkPorter,也就是未來的 zkSync 2.0。他們宣稱在 zkSync 2.0 中可以達到 24,000 TPS,這主要是通過默克爾樹實現的,在不同分支中分別存放 zkRollup 與 zkPorter。對於在意安全性的用戶來說,zkRollup 是一個更可靠的選擇;但在對安全性要求相對較低的應用中,則可以考慮使用部分數據不上鍊的 zkPorter(效率更高,處理能力更好)。 zkSync 2.0 通過這種混合的方式實現有保障性的安全和效率的提升。
那麼為什麼說 Rollup 和 Eth2 的路線圖有關?其實前面有提到過,Eth2 分片上的交易執行暫時還無法立即到位,社區可能還要在等一段時間。但是在 Phase1 和 Phase 1.5 間,當分片的數據庫成型時,其中的每個分片就好比是一個主網,這些分片的數據層就可以用來存儲 Rollup 的數據。
當未來有分片的時候,雖然我們不能在其上立即進行交易,但是我們可以通過把 Rollup 的數據存到這些分片中提前發揮分片的作用,達到進一步擴容的目標。
這部分就是我今天的分享,謝謝大家。
---
風險提示:本文內容均不構成任何形式的投資意見或建議。 imToken 對本文所提及的第三方服務和產品不做任何保證和承諾,亦不承擔任何責任。數字資產投資有風險,請謹慎評估該等投資風險,諮詢相關專業人士後自行作出決定。