本文Aztec为例,以近期Aztec Labs提出的名为B52、Fernet的2个提案为切入点,为广大读者解析ZKR如何实现定序器节点的去中心化。
B52提案
B52提案主要实现去中心化的Sequencer 网络和Prover网络。
整个方案将L2出块划分为三个时间段:
- Block Proposal Window (BPW):由多个Sequencer提出不同的区块并竞争,由Prover 选择某个备选区块给出投票的过程。
- Block Acceptance Window (BAW):由Prover 构造有效性证明,并提交
- State advances:
BPW 再可以分为Block Proposal, Block Voting, Aggregation 阶段。
- Block Proposal: 任何人都可收集交易,并广播BP内容,主要包含:txs order hash, prover reward percentage, burn token amount.
- Block Voting: 由prover 给让自己获利最多的BP投票,投票组成为:vote = {Blockhash, Index of Proof Tree}.
- Aggregation: Proposer在L2 p2p网络收集Prover们针对BP的投票,将其聚合放入BP中,并提交到L1上。
BP被选中的条件是拥有最高分数:
NUM_PROVERS (x)是该BP获得的Prover投票数量,BURN_BID是该BP所提议销毁的L2 Token数量。由于BURN_BID越高,BP提议者最后获得的奖励越少,所以这个数值要设置得当。
在Block Proposal Window结束后,Prover需要reveal揭示他们的BP对应的完整交易数据。Prover投票的BP如果被选中的话(分数最高,可通过L1合约查询),它们就需要构造投票时给出的Index of Proof Tree 所对应的Sub Proof Tree。
Propsoer将聚合的proof提交到L1的Rollup合约,合约会验证这个proof以及对应状态转换结果的正确性。这里要注意,Prover如果故意不提交proof的话,不仅无法获得Proposer许诺的区块奖励分红,还会被slash,因为要成为Prover是需要提前质押Token的。
在 Block Acceptance Window结束之后,Rollup合约会选择一个分数最高的区块纳入Rollup账本,并且把区块奖励Reward按照Proposer(Sequencer)事先声明的比例,分别发送给Proposer和Prover。
Fernet提案
整个流程分三个阶段: Proposal Phase; Prover Phase; Finalization
Proposal Phase:
每个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网络中。
Proving Phase: unproven block:只提交了Proposal到Rollup合约的区块block contents。接着,Sequencer需要把unproven block对应的 block contents 以及proof of VDF 一起发送到L2的p2p网络中。
Finalization:
需要提交一笔L1的交易来Finalize区块,一个最终可以被Finalize的区块需要满足:提交了Block Contents和Block Proof,指向的前一个区块必须是Finalize的。在满足以上条件的基础上,还要拥有最高的Score。
网友评论