Aztec的去中心化Sequencer方案解析

中級Feb 28, 2024
本文作者以知名ZKRollup項目Aztec爲例,以近期Aztec Labs提出的名爲B52、Fernet的兩個提案爲切入點,爲廣大讀者解析ZKR如何實現定序器節點的去中心化。
Aztec的去中心化Sequencer方案解析
  • 轉髮原文標題:Rollup去中心化:Aztec的去中心化Sequencer方案解析

導語:自Rollup成爲顯學以來,定序器Sequencer去中心化始終是以太坊/Celestia社區的關註焦點,衕時也是Layer2研髮工作中難以逾越的大山。對此,不衕的Rollup方案均提出過關於節點去中心化的設想,爲這一話題提供了無比廣闊的想象空間。

本文作者以知名ZKRollup項目Aztec爲例,以近期Aztec Labs提出的名爲B52、Fernet的2個提案爲切入點,爲廣大讀者解析ZKR如何實現定序器節點的去中心化。

提案B52:Permissionless的定序器方案

提案B52打算實現以下目標(理想情況下):

  1. 去中心化的sequencer網絡,由L2節點自己選舉每一輪的proposer

  2. 去中心化的prover網絡,prover節點硬件要求低

  3. Rollup整體具備很好的抗審查性 .

4.L2産生的MEV價值由L2節點穫取

  1. L2區塊被提交到DA層時,可以穫得比較有效的最終性Finality,不可逆轉的finality則要等Validity Proof(有效性證明)提交完畢

  2. L2 Token可以擁有不錯的經濟模型

  3. L2區塊和交易數據都在L2的p2p網絡中傳播

  4. L2繼承L1的安全性

(B52提案對Rollup結構的假設,Proposer實質就是Sequencer)

該方案將整個L2出塊流程畫分成三個時間階段:

Block Proposal Window(BPW)Block Acceptance Window(BAW)State advances

其中,BPW(區塊提議)階段是多個定序器Seuqnecer提出不衕的區塊併競爭、Prover選擇某個備選區塊給出投票的過程。

BAW(區塊採納)是Prover給區塊構造有效性證明Validity Proof,併將其提交的過程。

Block Proposal Window(區塊提議階段):BPW可以再細分爲Block Proposal, Block Voting, Aggregation三個階段。

(Block Proposal Window流程示意圖)Block Proposal(BP) 階段中任何人都可以收集交易,併廣播自己的BP內容。BP內容會包含三個部分: txs order hash, prover reward percentage, burn token amount

txs order hash: Proposer 從L2的交易池(mempool) 中選擇最有價值的一批交易併排序,然後將這批交易的哈希值放進自己構建的區塊中。

prover reward percentage: Sequencer分享給Prover的區塊獎勵百分比

burn token amount: Proposer提議銷毀的L2 Native Token數量,接著它將自己提出的BP髮送到L2 p2p網絡中

Block Voting 投票階段:

Prover 在p2p網絡中接收到不衕Proposer提出的BP後,會投票給能讓自己穫得最多reward的BP。不過投票的組成很特殊:

Vote={BlockHash, Index of Proof Tree} BlockHash是Prover要投票的Proposal的哈希,而Index of Proof Tree則是Prover要參與構建的Proof Tree的葉子索引值(後麵會解釋)

Aggregation聚合:Proposer在L2 p2p網絡中收集Prover們針對BP的投票,將其聚合併放進BP中,提交到L1上(每個BP一般隻包含與自己有關的投票記録)。

在此,需要強調BP被選中併納入Rollp賬本的先決條件:

擁有最高的分數:

SCORE(y) = NUM_PROVERS (x)^3 * BURN_BID(z)^2`

NUM_PROVERS (x)是該BP穫得的Prover投票數量,BURN_BID是該BP所提議銷毀的L2 Token數量。由於BURN_BID越高,BP提議者最後穫得的獎勵越少,所以這個數值要設置得當。

衕時,該BP需要在Block Proposal Window結束前被提交到L1上,對應的有效性證明Proof要在Block Acceptance Window結束前被上傳到L1。

需要註意: BP的分數計算中,投票數量占的比重最大,其次才是burn token的數量。衕時,B52方案允許多個proposer(其實就是sequencer)針對一個有效的BP名額展開競爭

B52方案僅需要Proposer(sequencer)在自己的BP中指定burn token的數量(類似於EIP1559的方式)而無需事先stake token,這可以讓網絡更加permissionless(無準入許可),衕時也有利於L2的原生Token産生通縮。

此外,BP中不包含完整的交易數據,隻包含交易序列的哈希,道理類似於以太坊PBS方案,旨在避免MEV被其他Proposer窺探併搶跑。

Block Acceptance Window(區塊採納階段)詳解:

(Block Acceptance Window示意圖,圖中寫成了Proof Acceptance)在Block Proposal Window結束後,Prover需要reveal揭示他們的BP對應的完整交易數據。Prover投票的BP如果被選中的話(分數最高,可通過L1合約查詢),它們就需要構造投票時給出的Index of Proof Tree所對應的Sub Proof Tree。

假設Aztec的區塊包含2^13=16384的交易數量,併且有2048個prover,那麽每個prover構造2^3=8筆交易組成的sub proof tree. 然後prover把自己構造的sub proof tree廣播到L2 p2p網絡中。proposer接收之後,會把所有的sub proof tree聚合成一個block proof。

接著Propsoer將聚合的proof提交到L1的Rollup合約,合約會驗證這個proof以及對應狀態轉換結果的正確性。這裡要註意,Prover如果故意不提交proof的話,不僅無法穫得Proposer許諾的區塊獎勵分紅,還會被slash,因爲要成爲Prover是需要提前質押Token的。因此,與Proposer(Sequencer)不衕,Prover併不是Permissionless的。

State Advances(狀態推進階段)詳解:

在 Block Acceptance Window結束之後,Rollup合約會選擇一個分數最高的區塊納入Rollup賬本,併且把區塊獎勵Reward按照Proposer(Sequencer)事先聲明的比例,分別髮送給Proposer和Prover。

以上便是Aztec的B52方案。但本文作者認爲,B52提案存在一些潛在問題:

問題一: 假如一個分數最高的區塊的validity proof是不完整的。提案中給出的解決方法是,假如Proposer隻提供了50%的proof,那麽他也隻能穫得50%的區塊獎勵,從而確保Proposer沒有動力故意不提交完整的proof。衕時Prover自己也可以直接曏合約直接提交proof。

按照提案的敘述,是可以接受一個區塊沒有完整交易的validity proof。這點其實是不合理的:因爲: zkrollup都是在給出validity proof的衕時,才聲明這個區塊對應的新狀態有效。

如果proposer最後提交到L1的聚合proof缺失了某個交易的proof,很顯然在這筆交易之後髮生的所有交易的狀態轉換證明都是不成立的(因爲交易是順序執行併且有狀態依賴的),我們也就無法確認這個區塊對應的新狀態是有效的。

因此這個時候,合理的方式應該是進入無限等待的Block Acceptance Window,直到所有交易的proof都提交完成。

問題二:假如得分最高的區塊是非法區塊(B52方案裡也沒有解釋這點)。BP僅僅包含交易序列的哈希,所以惡意的proposer實際上可以故意構造有問題的交易,比如雙花交易。那麽這個時候,實際上需要在L1合約增加一個任何人都可以提交illeagal proof的函數, 這個illeagal proof用於證明得分最高的BP是一個非法區塊。

併且這種舉報應該是有獎勵的,我們可以把proposer 髮送到合約中的burn token都獎勵給提交illegal proof的舉報者節點。

有趣的思考:關於叔塊和多餘的Prover Work: B52方案實際上會在每輪分數最高且有效的BP出現後,把這一輪出現的其他BP(已經提交完整proof)作爲叔塊,分配一定的叔塊獎勵。

這實際上沿用了ETH POW共識機製的做法,爲了避免算力過度集中,需要分配一部分出塊獎勵給未被採納的區塊提出者(礦工),以保障小礦池/個體礦工的利益,避免算力被大礦池壟斷。因此採用以太坊錶現不錯的叔塊機製也是一個很聰明的選擇。

B52提案在Rollup去中心化方麵的意義:Proposer是去中心化且不需要質押的,準入門檻低;但是因爲需要自己Build最有價值的區塊,以及需要收集其他Prover的投票,併聚合所有Proof,實際上Proposer的硬件門檻沒有提案中敘述的那麽低(比如帶寬可能不會很低)。

所以,最終還是會成爲一個比較中心化的網絡,類似Mev-Boost Builder,因爲最終能出塊的proposer往往也是最擅長捕捉MEV的Block Builder。

衕時,B52方案裡的Prover需要質押資産,但因爲僅僅需要生成sub tree proof,相比於那些需要完整生成整個block proof的方案來説,Prover的去中心化程度會更好(硬件要求可以放低了)。

活性Liveness:總體的網絡Liveness是不錯的,因爲L2有自己的p2p網絡來廣播交易和投票/BP,併且Sequencer和Prover都比較去中心化。但是需要解決我們上麵提到的兩個問題,一個是得分最高的區塊一定是合法的區塊,第二個是需要等待完整的block proof提交到L1才能進入一個新狀態。所以需要一個更有效的激勵機製,避免整個Rollup網絡由於缺失某一部分tx proof而無法正常工作(停機)。

抗審查性Censorship Resistance:如果我們能保證任何人都能髮布區塊提議BP,併且保證不隻是Proposer可以提交block proof,那麽網絡會有很好的抗審查性 。

最終性Finality:L2的finality 跟網絡的liveness息息相關,因爲最終的verified finality 還是需要等待Block Proof的提交,但實際上你也可以相信一個得分最高的BP對應的區塊內容(隻要它裡麵不包含惡意交易)。

這個區塊會在Block Acceptance Window 開始時被揭示reveal,意味著作爲用戶,僅僅需要等待一個Block Proposal Window的時間,你提交的交易所在的區塊就可以被採納。

繼承L1安全性:作爲一個通過提交validity proof來更新狀態的L2,是可以繼承L1的安全性。

提案Fernet:引入VDF選拔合法Proposer

Fernet 方案簡介: 通過VDF在每輪出塊周期內,爲Committee(就是Sequencer節點集合)中不衕的節點設定一個預估的分數,最終分數最高的Sequencer提議的區塊會成爲有效塊。

首先,如何加入Committee?實際上需要在L1質押16個ETH,併且在質押操作完成後等待4個L1區塊後,加入Sequencer Committee。至於退出Sequencer Committee,則需要調用L1合約裡的Unstake函數,之後再過3天才能拿回自己質押的剩餘金額。

然後,什麽是VDF?Verifiable Delay Function就是可驗證延遲函數,該數學函數滿足嚴格的串行執行特性,它會執行一些計算步驟,併至少會消耗一段可預估的時間。我們把VDF算出來的數值記作Score,它滿足均勻正態分布,因此當Sequencer算出VDF Score後,就可以判斷自己被選中爲合法Proposer的概率有多大。

Sequencer的VDF計算如下:

Score = VDF( privatekey , public inputs )

public inputs = { current block number , randao }

randao是一個隨機數,用來防止Sequencer提前計算未來所有區塊高度下自己的VDF Score

Fernet整個流程主要分爲3個階段:

  1. Proposal Phase 2. Proving Phase 3. Finalization

Proposal Phase:PROPOSAL_PHASE_L1_BLOCKS = 2 Ethereum blocks (該階段會維持2個L1 block的時間)

這個階段開始,每個Sequencer都會用VDF算出自己在當前出塊高度下對應的VDF Score。如果Sequencer認爲自己的VDF Score很有可能贏得這次區塊的出塊權(假設Score滿足正態分布),那麽他會提交一個Proposal到L1的Rollup合約。Proposal包含:交易序列的哈希、指曏哪個之前的L2區塊。

unproven block:隻提交了Proposal到Rollup合約的區塊block contents。接著,Sequencer需要把unproven block對應的 block contents 以及proof of VDF 一起髮送到L2的p2p網絡中。

ProvingPhase: PROVING_PHASE_L1_BLOCKS= 50 L1 blocks(該階段會維持50個L1區塊,大概10 min)

Prover從L2的p2p網絡中接收所有Block Contents中對應的交易,併會爲VDF Score更高的區塊構建Proof。Proof的構建也是採取多個Prover併行協作的方式(類似B52方案) 。

因此需要Sequencer在最後將多個不衕的交易對應的Proof聚合成一個Block Proof(包含VDF Proof),提交到L1的Rollup合約。任何人都可以將已經提交Block Proof的Block Contents提交到Rollup合約上。

Finalization:需要提交一筆L1的交易來Finalize區塊,一個最終可以被Finalize的區塊需要滿足:提交了Block Contents和Block Proof,指曏的前一個區塊必鬚是Finalize的。在滿足以上條件的基礎上,還要擁有最高的Score。

(流水線式出塊流程,前一個區塊的提議階段剛結束,就開始下一個區塊的提議階段,而無需等待之前區塊的Proving階段結束)

流水線出塊機製:需要註意的是,Fernet採用的是流水線出塊機製. 當第N塊的Proposal階段結束時,第N+1個塊的Proposal就開始了(Aptos等公鏈也有類似的做法)。但對於第N+1個塊來説,它需要等待第N個塊Finalize後,它才能提交L1的Final Block交易,併且驗證通過成爲Final Block 。

潛在的攻擊維度:假如VDF Score最高的Sequencer故意不在L2 p2p中廣播Block Contents, 那麽有可能導緻區塊重組reorg。

reorg的L2區塊數量計算: 1+PROVING_PHASE_L1_BLOCKS / PROPOSAL_PHASE_L1_BLOCKS =1+50/2=26塊

解決方式: 增加叔塊機製,避免每個L2slot(出塊時隙)隻有一個完整的候選區塊。

Fernet在去中心化上的意義:Sequencer通過質押16個ETH加入Sequencer Committee,準入門檻併不高(但也不低)。Prover不需要任何質押,但假如Prover不生成Proof也沒有懲罰。這與B52方案基本是相反的。

活性Liveness:整體網絡的 Liveness 是可以保證的,因爲VDF+叔塊機製可以保證每一輪不止有一個出塊者。

MEV:MEV的考量是最特殊的,該方案計畫引進PBS,這樣作爲Sequencer計算出一個高分的VDF Score後,就可以直接找Block Builder構造一個更有價值的區塊。

抗審查性Censorship Resistance:Fernet 也將採用跟以太坊一緻的PBS機製,因此本質上 Fernet 抗審查的問題等價於以太坊 PBS 的抗審查問題。

聲明:

  1. 本文轉載自[極客 Web3],原文標題《Rollup去中心化:Aztec的去中心化Sequencer方案解析》,著作權歸屬原作者[0xhhh,EthStorage],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。

Aztec的去中心化Sequencer方案解析

中級Feb 28, 2024
本文作者以知名ZKRollup項目Aztec爲例,以近期Aztec Labs提出的名爲B52、Fernet的兩個提案爲切入點,爲廣大讀者解析ZKR如何實現定序器節點的去中心化。
Aztec的去中心化Sequencer方案解析
  • 轉髮原文標題:Rollup去中心化:Aztec的去中心化Sequencer方案解析

導語:自Rollup成爲顯學以來,定序器Sequencer去中心化始終是以太坊/Celestia社區的關註焦點,衕時也是Layer2研髮工作中難以逾越的大山。對此,不衕的Rollup方案均提出過關於節點去中心化的設想,爲這一話題提供了無比廣闊的想象空間。

本文作者以知名ZKRollup項目Aztec爲例,以近期Aztec Labs提出的名爲B52、Fernet的2個提案爲切入點,爲廣大讀者解析ZKR如何實現定序器節點的去中心化。

提案B52:Permissionless的定序器方案

提案B52打算實現以下目標(理想情況下):

  1. 去中心化的sequencer網絡,由L2節點自己選舉每一輪的proposer

  2. 去中心化的prover網絡,prover節點硬件要求低

  3. Rollup整體具備很好的抗審查性 .

4.L2産生的MEV價值由L2節點穫取

  1. L2區塊被提交到DA層時,可以穫得比較有效的最終性Finality,不可逆轉的finality則要等Validity Proof(有效性證明)提交完畢

  2. L2 Token可以擁有不錯的經濟模型

  3. L2區塊和交易數據都在L2的p2p網絡中傳播

  4. L2繼承L1的安全性

(B52提案對Rollup結構的假設,Proposer實質就是Sequencer)

該方案將整個L2出塊流程畫分成三個時間階段:

Block Proposal Window(BPW)Block Acceptance Window(BAW)State advances

其中,BPW(區塊提議)階段是多個定序器Seuqnecer提出不衕的區塊併競爭、Prover選擇某個備選區塊給出投票的過程。

BAW(區塊採納)是Prover給區塊構造有效性證明Validity Proof,併將其提交的過程。

Block Proposal Window(區塊提議階段):BPW可以再細分爲Block Proposal, Block Voting, Aggregation三個階段。

(Block Proposal Window流程示意圖)Block Proposal(BP) 階段中任何人都可以收集交易,併廣播自己的BP內容。BP內容會包含三個部分: txs order hash, prover reward percentage, burn token amount

txs order hash: Proposer 從L2的交易池(mempool) 中選擇最有價值的一批交易併排序,然後將這批交易的哈希值放進自己構建的區塊中。

prover reward percentage: Sequencer分享給Prover的區塊獎勵百分比

burn token amount: Proposer提議銷毀的L2 Native Token數量,接著它將自己提出的BP髮送到L2 p2p網絡中

Block Voting 投票階段:

Prover 在p2p網絡中接收到不衕Proposer提出的BP後,會投票給能讓自己穫得最多reward的BP。不過投票的組成很特殊:

Vote={BlockHash, Index of Proof Tree} BlockHash是Prover要投票的Proposal的哈希,而Index of Proof Tree則是Prover要參與構建的Proof Tree的葉子索引值(後麵會解釋)

Aggregation聚合:Proposer在L2 p2p網絡中收集Prover們針對BP的投票,將其聚合併放進BP中,提交到L1上(每個BP一般隻包含與自己有關的投票記録)。

在此,需要強調BP被選中併納入Rollp賬本的先決條件:

擁有最高的分數:

SCORE(y) = NUM_PROVERS (x)^3 * BURN_BID(z)^2`

NUM_PROVERS (x)是該BP穫得的Prover投票數量,BURN_BID是該BP所提議銷毀的L2 Token數量。由於BURN_BID越高,BP提議者最後穫得的獎勵越少,所以這個數值要設置得當。

衕時,該BP需要在Block Proposal Window結束前被提交到L1上,對應的有效性證明Proof要在Block Acceptance Window結束前被上傳到L1。

需要註意: BP的分數計算中,投票數量占的比重最大,其次才是burn token的數量。衕時,B52方案允許多個proposer(其實就是sequencer)針對一個有效的BP名額展開競爭

B52方案僅需要Proposer(sequencer)在自己的BP中指定burn token的數量(類似於EIP1559的方式)而無需事先stake token,這可以讓網絡更加permissionless(無準入許可),衕時也有利於L2的原生Token産生通縮。

此外,BP中不包含完整的交易數據,隻包含交易序列的哈希,道理類似於以太坊PBS方案,旨在避免MEV被其他Proposer窺探併搶跑。

Block Acceptance Window(區塊採納階段)詳解:

(Block Acceptance Window示意圖,圖中寫成了Proof Acceptance)在Block Proposal Window結束後,Prover需要reveal揭示他們的BP對應的完整交易數據。Prover投票的BP如果被選中的話(分數最高,可通過L1合約查詢),它們就需要構造投票時給出的Index of Proof Tree所對應的Sub Proof Tree。

假設Aztec的區塊包含2^13=16384的交易數量,併且有2048個prover,那麽每個prover構造2^3=8筆交易組成的sub proof tree. 然後prover把自己構造的sub proof tree廣播到L2 p2p網絡中。proposer接收之後,會把所有的sub proof tree聚合成一個block proof。

接著Propsoer將聚合的proof提交到L1的Rollup合約,合約會驗證這個proof以及對應狀態轉換結果的正確性。這裡要註意,Prover如果故意不提交proof的話,不僅無法穫得Proposer許諾的區塊獎勵分紅,還會被slash,因爲要成爲Prover是需要提前質押Token的。因此,與Proposer(Sequencer)不衕,Prover併不是Permissionless的。

State Advances(狀態推進階段)詳解:

在 Block Acceptance Window結束之後,Rollup合約會選擇一個分數最高的區塊納入Rollup賬本,併且把區塊獎勵Reward按照Proposer(Sequencer)事先聲明的比例,分別髮送給Proposer和Prover。

以上便是Aztec的B52方案。但本文作者認爲,B52提案存在一些潛在問題:

問題一: 假如一個分數最高的區塊的validity proof是不完整的。提案中給出的解決方法是,假如Proposer隻提供了50%的proof,那麽他也隻能穫得50%的區塊獎勵,從而確保Proposer沒有動力故意不提交完整的proof。衕時Prover自己也可以直接曏合約直接提交proof。

按照提案的敘述,是可以接受一個區塊沒有完整交易的validity proof。這點其實是不合理的:因爲: zkrollup都是在給出validity proof的衕時,才聲明這個區塊對應的新狀態有效。

如果proposer最後提交到L1的聚合proof缺失了某個交易的proof,很顯然在這筆交易之後髮生的所有交易的狀態轉換證明都是不成立的(因爲交易是順序執行併且有狀態依賴的),我們也就無法確認這個區塊對應的新狀態是有效的。

因此這個時候,合理的方式應該是進入無限等待的Block Acceptance Window,直到所有交易的proof都提交完成。

問題二:假如得分最高的區塊是非法區塊(B52方案裡也沒有解釋這點)。BP僅僅包含交易序列的哈希,所以惡意的proposer實際上可以故意構造有問題的交易,比如雙花交易。那麽這個時候,實際上需要在L1合約增加一個任何人都可以提交illeagal proof的函數, 這個illeagal proof用於證明得分最高的BP是一個非法區塊。

併且這種舉報應該是有獎勵的,我們可以把proposer 髮送到合約中的burn token都獎勵給提交illegal proof的舉報者節點。

有趣的思考:關於叔塊和多餘的Prover Work: B52方案實際上會在每輪分數最高且有效的BP出現後,把這一輪出現的其他BP(已經提交完整proof)作爲叔塊,分配一定的叔塊獎勵。

這實際上沿用了ETH POW共識機製的做法,爲了避免算力過度集中,需要分配一部分出塊獎勵給未被採納的區塊提出者(礦工),以保障小礦池/個體礦工的利益,避免算力被大礦池壟斷。因此採用以太坊錶現不錯的叔塊機製也是一個很聰明的選擇。

B52提案在Rollup去中心化方麵的意義:Proposer是去中心化且不需要質押的,準入門檻低;但是因爲需要自己Build最有價值的區塊,以及需要收集其他Prover的投票,併聚合所有Proof,實際上Proposer的硬件門檻沒有提案中敘述的那麽低(比如帶寬可能不會很低)。

所以,最終還是會成爲一個比較中心化的網絡,類似Mev-Boost Builder,因爲最終能出塊的proposer往往也是最擅長捕捉MEV的Block Builder。

衕時,B52方案裡的Prover需要質押資産,但因爲僅僅需要生成sub tree proof,相比於那些需要完整生成整個block proof的方案來説,Prover的去中心化程度會更好(硬件要求可以放低了)。

活性Liveness:總體的網絡Liveness是不錯的,因爲L2有自己的p2p網絡來廣播交易和投票/BP,併且Sequencer和Prover都比較去中心化。但是需要解決我們上麵提到的兩個問題,一個是得分最高的區塊一定是合法的區塊,第二個是需要等待完整的block proof提交到L1才能進入一個新狀態。所以需要一個更有效的激勵機製,避免整個Rollup網絡由於缺失某一部分tx proof而無法正常工作(停機)。

抗審查性Censorship Resistance:如果我們能保證任何人都能髮布區塊提議BP,併且保證不隻是Proposer可以提交block proof,那麽網絡會有很好的抗審查性 。

最終性Finality:L2的finality 跟網絡的liveness息息相關,因爲最終的verified finality 還是需要等待Block Proof的提交,但實際上你也可以相信一個得分最高的BP對應的區塊內容(隻要它裡麵不包含惡意交易)。

這個區塊會在Block Acceptance Window 開始時被揭示reveal,意味著作爲用戶,僅僅需要等待一個Block Proposal Window的時間,你提交的交易所在的區塊就可以被採納。

繼承L1安全性:作爲一個通過提交validity proof來更新狀態的L2,是可以繼承L1的安全性。

提案Fernet:引入VDF選拔合法Proposer

Fernet 方案簡介: 通過VDF在每輪出塊周期內,爲Committee(就是Sequencer節點集合)中不衕的節點設定一個預估的分數,最終分數最高的Sequencer提議的區塊會成爲有效塊。

首先,如何加入Committee?實際上需要在L1質押16個ETH,併且在質押操作完成後等待4個L1區塊後,加入Sequencer Committee。至於退出Sequencer Committee,則需要調用L1合約裡的Unstake函數,之後再過3天才能拿回自己質押的剩餘金額。

然後,什麽是VDF?Verifiable Delay Function就是可驗證延遲函數,該數學函數滿足嚴格的串行執行特性,它會執行一些計算步驟,併至少會消耗一段可預估的時間。我們把VDF算出來的數值記作Score,它滿足均勻正態分布,因此當Sequencer算出VDF Score後,就可以判斷自己被選中爲合法Proposer的概率有多大。

Sequencer的VDF計算如下:

Score = VDF( privatekey , public inputs )

public inputs = { current block number , randao }

randao是一個隨機數,用來防止Sequencer提前計算未來所有區塊高度下自己的VDF Score

Fernet整個流程主要分爲3個階段:

  1. Proposal Phase 2. Proving Phase 3. Finalization

Proposal Phase:PROPOSAL_PHASE_L1_BLOCKS = 2 Ethereum blocks (該階段會維持2個L1 block的時間)

這個階段開始,每個Sequencer都會用VDF算出自己在當前出塊高度下對應的VDF Score。如果Sequencer認爲自己的VDF Score很有可能贏得這次區塊的出塊權(假設Score滿足正態分布),那麽他會提交一個Proposal到L1的Rollup合約。Proposal包含:交易序列的哈希、指曏哪個之前的L2區塊。

unproven block:隻提交了Proposal到Rollup合約的區塊block contents。接著,Sequencer需要把unproven block對應的 block contents 以及proof of VDF 一起髮送到L2的p2p網絡中。

ProvingPhase: PROVING_PHASE_L1_BLOCKS= 50 L1 blocks(該階段會維持50個L1區塊,大概10 min)

Prover從L2的p2p網絡中接收所有Block Contents中對應的交易,併會爲VDF Score更高的區塊構建Proof。Proof的構建也是採取多個Prover併行協作的方式(類似B52方案) 。

因此需要Sequencer在最後將多個不衕的交易對應的Proof聚合成一個Block Proof(包含VDF Proof),提交到L1的Rollup合約。任何人都可以將已經提交Block Proof的Block Contents提交到Rollup合約上。

Finalization:需要提交一筆L1的交易來Finalize區塊,一個最終可以被Finalize的區塊需要滿足:提交了Block Contents和Block Proof,指曏的前一個區塊必鬚是Finalize的。在滿足以上條件的基礎上,還要擁有最高的Score。

(流水線式出塊流程,前一個區塊的提議階段剛結束,就開始下一個區塊的提議階段,而無需等待之前區塊的Proving階段結束)

流水線出塊機製:需要註意的是,Fernet採用的是流水線出塊機製. 當第N塊的Proposal階段結束時,第N+1個塊的Proposal就開始了(Aptos等公鏈也有類似的做法)。但對於第N+1個塊來説,它需要等待第N個塊Finalize後,它才能提交L1的Final Block交易,併且驗證通過成爲Final Block 。

潛在的攻擊維度:假如VDF Score最高的Sequencer故意不在L2 p2p中廣播Block Contents, 那麽有可能導緻區塊重組reorg。

reorg的L2區塊數量計算: 1+PROVING_PHASE_L1_BLOCKS / PROPOSAL_PHASE_L1_BLOCKS =1+50/2=26塊

解決方式: 增加叔塊機製,避免每個L2slot(出塊時隙)隻有一個完整的候選區塊。

Fernet在去中心化上的意義:Sequencer通過質押16個ETH加入Sequencer Committee,準入門檻併不高(但也不低)。Prover不需要任何質押,但假如Prover不生成Proof也沒有懲罰。這與B52方案基本是相反的。

活性Liveness:整體網絡的 Liveness 是可以保證的,因爲VDF+叔塊機製可以保證每一輪不止有一個出塊者。

MEV:MEV的考量是最特殊的,該方案計畫引進PBS,這樣作爲Sequencer計算出一個高分的VDF Score後,就可以直接找Block Builder構造一個更有價值的區塊。

抗審查性Censorship Resistance:Fernet 也將採用跟以太坊一緻的PBS機製,因此本質上 Fernet 抗審查的問題等價於以太坊 PBS 的抗審查問題。

聲明:

  1. 本文轉載自[極客 Web3],原文標題《Rollup去中心化:Aztec的去中心化Sequencer方案解析》,著作權歸屬原作者[0xhhh,EthStorage],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!