深入探討Polygon zkEVM Sequencer和Bridge的技術細節
BlockBeats 律動財經 2023-05-04 21:00
在 polygon zkEVM 的第一篇文章里(zkEVM 系列(1)|Polygon zkEVM 的整體架構和交易執行流程),我們總結了 Polygon zkEVM 的整體框架以及交易執行流程,同時也分析了 Polygon zkEVM 是如何實現計算擴容的同時繼承了 L1 的安全性的;在這篇文章里,我們將依託上篇文章建立的框架,深入 polygon zkEVM 關於 Sequencer 和 Bridge 更多的技術細節,同時也探討未來潛在的去中心化 Sequencer 架構的不同特點。
一、深入解析 zkEVM Bridge
在上一篇文章里,我們介紹 Ploygon zkEVM 的過程中,實際上缺失了很重要的一個部分,就是 Polygon zkEVM 的原生橋。(註:在本文 L2 特指 Rollup, L1 特指 Ethereum。)
1. 跨鏈數據狀態管理
Polygon zkEVM 在 L1 和 L2 分別維護了一棵 Exit Tree, 名字分別為 L1 Exit Merkle tree 和 L2 Exit Merkle tree。但是為了更好的管理這兩棵樹,Polygon zkEVM 很聰明的將這兩棵樹結合在了一起,如下圖:
2. 跨鏈流程
在 Polygon zkEVM 的合約設計中,還是儘可能的將 Bridge 和 Consensus 合約儘可能的解耦。目前其在 L1 部署的合約主要分為 3 個,如下圖所示:
需要注意的是他們之間不是繼承關係,都是獨立的合約,PolygonZkEVMBridge 和 PolygonZkEVM 都會調。PolygonZkEVMGlobalExitRoot 來更新或驗證 Global Exit Tree Root。
L1 L2 的跨鏈流程
L1 L2 的跨鏈流程對應上圖的橙色標識的三個步驟:
PolygonZkEVMBridge 在 L2 的合約
https://testnet-zkevm.polygonscan.com/tx/0x2a742f2f8a7b8635a76cc70b4574bebb1a81b2c0c1a618188773a1f8f2283bb8
https://testnet-zkevm.polygonscan.com/address/0x39e780d8800f7396e8b7530a8925b14025aedc77#code2)
L2 L1 的跨鏈流程
用戶調用部署在 L2 的 Bridge 合約 (PolygonZkEVMBridge.sol) 中的 Bridge() 函數發送一筆 L2-Bridge-Tx,這會更新添加一個新節點在 L2 Exit Tree 中,然後依次更新 L2 Exit Tree Root 和 Global Exit Tree Root。
接下來當 Sequencer 會把這筆 L2-Bridge-Tx 放到某一個 Batch 中發送到 L1 的共識和 DA 合約 (PolygonZkEVM.sol) 中。
然後在之後 Aggregator 調用 trustedVerifyBatches() 往 L1 提交 validity proof 的時候,實際上也會把 L2 Exit Root 也一併作為 Input 進行上傳,也就是以下函數的中的 NewLocalExitRoot,它代表了 L2 有新的 BridgeToL1 的交易,但是這些交易目前在 L1 還不能提款,需要等待這個新的 NewLocalExitRoot 被驗證成功。
如果這個這個 Validity Proof 驗證通過,那麼 L1 的 Global Exit RootManager 會更新 L2 Exit trre Root 和 Global Exit Tree Root:
globalExitRootManager.updateExitRoot(newLocalExitRoot);
這個時候,用戶就可以調用部署在 L1 的 Bridge 合約 (PolygonZkEVMBridge.sol) 的 ClaimAsset() 函數並給出相應的 Merkle Path 進行提款,跨鏈交易的也就完美結束。
2)合約中會將這些 Transactions 打包成一個 Batch,並且記錄在合約中一個 Force Batches 的 Mapping 中。
不過這裡推薦大家儘可能不要通過 Force Batch 的方式提交 Rollup 的交易,因為通過這種方式,你在調用 Force Batch 往 L1 提交自己的交易的時候會暴露你的交易內容,而這個時候交易順序還沒被確認 (需要等待 Sequence 同步 ForceBatch 並通過 Sequence Batch() 再一次提交到 L1 的時候交易順序才被真正確認) 同時你已經沒辦法取消你的交易了,這個時候你有很大的可能被搶跑。
這似乎這並不能真正的抗審查,因為 Force Batch 的方式存在被搶跑的風險,用戶真的會用這個功能嗎?
2.Sequencer 的真正狀態
從上文我們可以得知,Sequence 會從 L1 同步 Force Batch 中的交易到本地節點進行執行,於是 Sequence 的真正狀態如下圖所示:
Bn 表示用戶直接提交給 Sequence 的交易執行後得出的結果;
FBn 表示 Sequence 同步 Force Batch 的交易進行執行後得出的結果。
1 ) 三種 Finality
因此我們可以認為目前整個網路存在三種不同程度的 Finality,我們給它命名成 Sequencer Finality, DA Finality 和 Verified Finality。
a, 第一種 Sequecer Finality,在有一些文章中也將這種 Finality 稱為 Soft Finality, 但是我覺得叫做 Sequenecer Finality 更為合適,因為這個 Finality 其實是 Single Sequencer 給的狀態承諾。
Sequencer 接受到用戶交易之後,執行後給出的狀態,這是最不安全的狀態;但是在目前官方 Single Sequencer 的場景下,卻可以在保證安全的同時帶來極致的用戶體驗。在目前單一 Sequencer 的 Rollup 網路中,基本上都可以體驗到即時確認的快樂。不過,Single Sequencer 最大的風險就是 Sequencer 宕機,這會導致整個 L2 網路基本癱瘓,不過由於 DA 層是位於以太坊上的,依然可以在之後部分恢復 L2 網路宕機前的狀態;不過那部分來不及發送到 L1 的 L2 交易將無法被恢復。
b. 第二種 DA Finality,代表這些交易已經被提交到 L1 的 DA 層合約上,此時交易順序也被確定了。
Trusted Sequencer 已經調用 Sequence Batch 將交易發送到 L1 上,在這種情況下,交易已經被 DA 層包含;在 Polygon 的設計中, 由於單一 Trusted Sequencer 的原因,所以可以確保上傳到 L1 合約上進行 DA 的交易都是有效交易。我們可以認為當一筆交易被 Trusted Sequencer 上傳到 L1 合約中的時候, 這個時候它已經被 Rollup 網路承認了,並且在之後 Aggregator 會提供 Validity Proof 讓這筆交易真正無法被 Revert(除非 L1 Reorg)。
c. 第三種 Verified Finality 指的是這筆交易已經通過 Validity Proof 的驗證了,屬於真正的 Finality;在一些文章中也把它叫做 Hard Finality。
當 Aggregator 為一批上傳到 DA 層的交易提供的 Validity Proof 被合約驗證通過的時候,這個時候我們認為這些交易已經無法被 Revert 了 (除非 L1 Reorg)。我們在上一篇文章里提到過,目前提交到 DA 層的交易到驗證 validity proof 的通過的時間是 30 分鐘,同時 Aggregator 也可以通過提供 Validity Proof 從而獲得足夠的 Matic 報酬。
2)Aggregator 同步狀態的取捨
假如我們這裡假設提供 Validity Proof 是有利可圖的,那麼對於 Aggregator 來說,最好的同步交易的方式,不是在 L1 的 DA 層合約中同步,而是直接跟 Trusted Sequencer 建立 rpc 鏈接,直接從 Trusted Sequencer 獲取最新的交易,這樣生成 Validity Proof 會更快,從而相比其他從 DA 合約中獲取交易的 Aggregator 更有競爭優勢,因為提供 Validity Proof 這件事情是先到先得,對於一批交易來說也僅僅需要一個聚合的 validity proof,第一個提交 Validity Proof 的 Aggregator 可以拿走對應交易的 Matic 獎勵,其他 Aggregator 生成的 Validity Proof 也無法再獲得任何獎勵。
不過目前實際上 Polygon 跟 Trusted Sequencer 角色一樣,也有一個 Trusted Aggregator, 來處理生成和提交 Validity Proof 的工作。https://zkevm.polygon.technology/
四、Sequencer 的未來
接下來,我們繼續是關於去中心化 Sequencer 的思考。首先第一個問題是我們為什麼需要去中心化的 Sequencer? 因為我們希望 Rollup 能在擴容以太坊的計算能力的同時,繼承以太坊的安全性和去中心化程度。而當前 Single Sequencer 的方案顯然達不到繼承以太坊的去中心化程度的目標。再繼續勾畫去中心化 Sequencer 的未來之前,我們先來回顧 Sequencer 的工作。以 Polygon zkEVM 為例,目前 Trusted Sequencer 對交易的處理會遵循 FCFS, 先到的交易先進行處理,並行 Mempool 也是私有的,儘可能保護用戶的交易不被 MEV。
當收集到一定量的交易之後,會把它們封裝成 Batches 上傳到 L1 合約中對應的 DA 的位置,並且在第一篇文章中我們也提到了這些了 Sequencer 上傳的 Batch 中實際上已經通過在後一個 Batch 包含前一個 Batch 的哈希的方式確定了交易的順序。因此我們認為 Sequencer 的工作類似 L1 Proposer 的工作,提議了一批交易,並且確認了交易的順序。
因為我們是從 Polygon zkEVM 開始介紹去中心化 Sequencer 的,我們就先介紹 Polygon zkEVM 的去中心化 Sequencer 方案 Proof Of Efficiency(效率證明)。
1.Proof-0f-Efficiency
1) 方案描述
在 POE 的設計中,允許任何人成為 Sequencer 並且向 L1 提交 Rollup Block 的,Rollup 網路的交易順序取決於交易被提交到 L1 的 Rollup DA 合約的順序。(在 Polygon zkEVM 里 Batch 等價於 Block。)
如下圖,用戶都可以自行選擇將交易發送給哪個 Sequencer, 甚至可以自己成為 Sequencer, 這些 Sequencer 在收到足夠的交易之後,會將這些交易打包成 Batch,然後往 L1 上提交。
Sequencer 收入 = L2 gas fee
2)方案的可行性
3)為什麼攜帶狀態承諾就不能用於POE?
4)如何處理無效交易
5) Public Mempool(公共交易池)?
6) Sequencer 為何無法預測執行結果
7) L2 的 MEV 流失到 L1
8) Aggregator 的設計
總結
POE 可以帶來完全 PermissionLess 的網路,並且整個網路可能也不會有宕機的風險,但是 L1 的 DA 合約中可能包含無效交易 (比如相同 Nonce 的交易),MEV 都被 L1 網路獲取, 並且只能提供 DA Finality 和 Verified Finality。
2. Based Rollup
Based Rollup 是期望將 Rollup 網路的 Single Sequencer 的工作委託給以太坊的 proposer 去完成。它會要求每個 Proposer 提案 L1 的區塊需要包含一個有效的 Rollup 區塊。
因此 L1 網路的 Block Builder 需要運行一個 Rollup 的全節點用來接受 L2 的交易,並且構建最大價值的 Rollup Block。
這樣的方案的好處是可以最大程度的繼承了 L1 的安全性以及去中心化程度,但是也會導致只能提供 Sequencer Finality 和 Verified Finality,L2 的 MEV 也會都流失到 L1 同時也需要對以太坊客戶端的代碼進行修改,這也可能會影響 L1 的安全性。
3.Share Sequencing
Shared Rollup 相比 Based Rollup 將構建和提交 Rollup Block 的工作交給以太坊的 Propoer,則是將這個工作交給 Share Sequencers 中的委員會。
3.1. 具體流程如下:
a. 不同 Rollup 的用戶都可以直接向 Shared Sequencers 所在的網路直接發送 Rollup 的交易
b.Shared Sequencers 會在內部運行一個 BFT 共識,在每一輪選出一個 Sequencer Leader 來對交易進行排序並構建對應的 Rollup Block.
c. 然後將這些 Rollup Block 提交到不同的 Rollup 網路對應在 L1 上的 DA 合約
d. 不同的 Rollup 網路再通過 L1 的 DA 合約同步網路中的最新交易,然後進入到他們自身驗證 Validity Proof 或者 Fraud Proof 的流程。
3.2.Shared Sequencer 架構的潛在影響
b. 當用戶向 Shared Sequencers 提交這樣一個交易的時候,每一輪的 Seuqnecer Leader 實際上可以將 Arbitrum Lock 的操作+Optimism Mint 的操作放在同一時刻的 Rollup Block 進行執行,這樣可以帶來巨大的用戶體驗提升;
c. 但是它依舊無法做到像同一個 Rollup 網路的用戶體驗,比如 Mint 的時候你依然需要提供你的 Lock Proof;
d. 所以我們可以認為接入到這個 Shared Sequencers 網路中的 Rollup 們是一個接近於完全同步的系統;
e. 接近完全同步的系統有什麼作用呢?
f. 可以提供原子跨鏈服務,因為每一輪選出的 Sequencer Leader 擁有排序所有 Rollup 交易的權力,所以他有能力構建原子跨鏈的交易。
4) 跨鏈 MEV 的角度
因為每一輪的 Leader Sequencer 擁有所有 Rollup Block 的排序權力,所以理論上可以捕獲所有的跨鏈 MEV,感覺之後 Shared Sequencer 也需要引入或者直接接入 MEV Boost 這種 MEV 架構,因為從目前看各個 Rollup 網路的區塊間隔都會遠遠快於以太坊的區塊間隔,比如 Optimism 的 2s 每一塊,Arbitrum 最快是 0.25s 出一塊。因此作為每一輪的 Sequencer Leader 構造 Rollup Block 的計算量其實並不小,因此感覺生態成熟起來之後也會有相應的 MEV 架構來輔助構造最大價值的 Rollup Block。
5) 從 Decentralization 和 Liveness 的角度看 Shared Sequencers
因為 Shared Sequencer Committee 內部會用 BFT 共識來在每一輪選擇出一個 Sequencer Leader 來提案所有的 Rollup Block,所以 Decentralization 和 Liveness 都要比目前的 Single Sequencer 方案強大不少。
6) 從生態的角度
a. 對於不同的 Rollup 擁有了更好的共存的理由,因為用戶可以很方便的在各個 Rollup 的網路中進行資產轉移,也可以更好的對實現以太坊生態的負載均衡。
b. 對於不同的正在構造 Shread Sequencer 的項目而言,可能就是你死我活的競爭,因為從用戶角度和目前各個 Rollup 都是 Signle Sequencer 的角度而言,似乎在 Shared Sequencer 這條賽道會出現贏家通吃的問題。
7)Finality 角度
因為本質上還是 Single Sequencer,所以無論是 Sequencer Finality 還是 Verified Finality 都跟原來是一樣的。
3.3. 潛在風險
因為 Rollup 之間不一定是同構 Rollup,比如 Arbitrum 和 polygon zkEVM 之間的跨鏈,那麼意味著跨鏈交易對應在 Arbitrum 和 polygon zkEVM 之上交易的 Verified Finality 並不一致,比如我在 Polygon zkEVM 之上的 mint 交易已經獲得 Verified Finality(提交了 Validity Proof), 但是此時我在 Arbitrum 上的 Lock 交易僅獲得了 DA Finality(需要等待 7 天挑戰期),如果我在這個時候成功 Revert 了我在 Arbiturm 的交易, 那麼也就意味著:我實際上在 Polygon zkEVM 無成本鑄造了很多跨鏈資產。
暢行幣圈交易全攻略,專家駐群實戰交流
▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群)
不管是新手發問,還是老手交流,只要你想參與虛擬貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!
- 加入鉅亨買幣LINE官方帳號索取免費課程
- 掌握全球財經資訊點我下載APP
文章標籤
上一篇
下一篇