1. 引言
前序部落格有:
- Rollup Decentralization
- Rollup去中心化
Rollup交易的固化流程不同于PoW的eventual consistency最終一緻性,也不同于以太坊PoS協定的等待X個确認,two consecutive supermajority votes(epochs)之前的交易即已固化。
Rollup交易的固化需要經曆3個階段,才能認為該Rollup交易是settled、final and irreversible:
- Sequencer’s Promise:Sequencer向使用者承諾其交易将被打包和執行。
- Order Finality:使用者交易具有相對于其它交易的最終排序。
- Execution Settlement:bridge合約信服某使用者交易的final execution。
本文讨論的Rollup交易固化适用于Optimistic Rollups和Validity Rollups。
2. Sequencer’s Promise
Sequencer為Rollup層唯一對鍊下資料庫的pending state具有知情權的一方,Sequencer有權來對pending交易進行排序。
交易生命周期始于:使用者在将交易傳給Sequencer之前,對該交易進行簽名。
Sequencer的響應可為:
- 1)對交易的predicted execution
- 2)promise當該交易settled as final(固化)時,該執行将維持
該promise是可能的,因為Sequencer為唯一具有所有pending交易list的一方。Sequencer有權決定交易的排序。是以,僅Sequencer對鍊下資料庫的pending state 知情。
稱其為promise,是因為Sequencer可向使用者傳回invalid response 并 忽略該交易。
Rollups有2種方式來對抗lying and malicious Sequencer:
- 1)Signed receipts:Sequencer需傳回具有其簽名的receipt,可作為後續其撒謊的懲罰依據。
- 2)Forced inclusion:使用者可跳過Sequencer,自己向bridge合約送出交易。
雖然Sequencer的角色是為決定交易執行的最終順序提供fast path,但Sequencer不具有的唯一決定權。最終由bridge智能合約決定所有pending交易的最終順序。
也就是說,隻要及時釋出(Arbitrum大約24小時),bridge就會優先考慮Sequencer提出的一批交易。
3. Transaction Order Finality
bridge合約決定交易的最終順序,并賦予任何人可重構出整個鍊下資料庫的能力。
bridge合約及其所在的L1鍊,實作了資料可用層的功能,進而可保證:
- 資料可用性:A data item was published at a point in time and it was available for all online parties to fetch it。
對于Rollup場景來說,将batch transactions送出到bridge合約,使得任何誠實的使用者、Executors、Sequencers可擷取整個transaction list。
新的batch transactions将附加在Rollup的 canonical chain of transactions之後。任何人可在其本地的資料庫備份的基礎上執行新交易,并計算新的鍊下狀态。整個流程是确定性的,基于相同的交易所有人都獲得同樣的狀态。
隻要相信有“one honest party”會入場并enforce execution settlement,則可在bridge合約之上建構協定,僅依賴于最終順序。
注意:
有的Rollup方案會直接跳過本階段,由Sequencer将交易直接發送給Executors,這樣做的優劣勢本文不展開讨論。
4. Execution Settlement
最終目的是讓合約信服有序交易的執行結果。
execution settlement的唯一目的,是讓合約信服,而不是讓外部方或共識協定信服,有序交易的最終執行結果。
此時:
- bridge已對所有執行交易 進行了排序
- 任何人,包括使用者本人,都可據此計算出一個資料庫備份
不知道資料庫目前狀态的僅有bridge合約,因為bridge合約計算資源有限,無法重放處理所有pending交易。
由Executors來送出新的資料庫狀态 以及 相應的證據。Executors可決定處理一個或多個交易batch,唯一的限制是執行必須遵守交易的最終順序。證據可以是欺詐證明或有效性證明。
execution settlemen的唯一原因是授權bridge合約執行side-effecct,包括從鍊外系統向L1智能合約轉移資金或發送消息。隻有當bridge确信相關交易的執行時,才能執行side-effect。
換言之,隻要确信所有交易都是有效的,并且執行正确,bridge才會釋放資金。
5. Rollup交易的固化流程小結
Rollup最有趣的一點在于,其将交易排序和執行進行了分離:
- 首先排序:所有方可确定完全相同的transaction list,并本地計算資料庫的新狀态。
- 延遲執行:整個流程集中在:讓bridge合約信服,在該transaction list執行之後,的資料庫新狀态。
這樣分離的好處在于,在bridge合約 settle該執行之前,任何人都可确定性的計算出資料庫的将來狀态。
排序與執行之間的延遲可能很大,如樂觀證明Rollup中:
- transaction batch送出的頻率為每30秒
- order finality的确定時間小于10分鐘
- 而execution settlement最少需要2周
本文的關鍵内容在于:
- Transact after ordering & before settlement:隻要信任存在某honest party會入場 并 enforce eventual execution settlement with the bridge合約,則agents can act upon the unsettled database state once the ordering is final。
假設使用者需要從某樂觀Rollup中快速提款到以太坊,其需要3步:
- 1)使用者發送 funds + fee:使用者選擇某liquidity provider(LP)并發起一筆交易将資金轉移給LP。該交易在Rollup上确認,并将會把資金發送給以太坊上某特殊仲裁合約。
- 2)LP等待order finality:LP在決定在以太坊鍊上給使用者發送資金之前,将等待該Rollup交易達到order finality。
- 3)LP或使用者獲得資金:當該Rollup交易execution is settled,使用者資金将到達“以太坊上某特殊仲裁合約”。若LP正常履約(已給使用者轉賬),則“以太坊上某特殊仲裁合約”會将資金給LP,否則,會将資金返還給使用者。
在上述例子中,使用者可從LP收到資金的樂觀用時為<10分鐘,且LP有信心其将在約2周内收回相應資金。若存在問題且LP無法履約,則使用者将在約2周後收回資金。
總結為:
- 對于任意将交易資料發送到bridge合約的Rollup方案,都可實作order finality。
不僅Arbitrum 和 Optimism 這樣的樂觀Rollup方案支援order finality,Scroll、Polygon Hermez、zkSync等Validity Rollup方案 也支援order finality。
本節重點讨論了樂觀Rollup如何利用order finality來繞過execution settlement delay(約2周)。
但是對于Validity Rollup方案,一旦交易被ordered for execution,使用者就可認為該交易是final的。這為Executors提供了回旋的空間,讓Executors在整理validity proof并settling the execution之前,等待有序的交易堆積起來。
參考資料
[1] Patrick McCorry 2023年2月21日部落格 Tiers of Transaction Finality for Rollups