Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

Rollup Layer2 的模块化演进之路

良辰743
1383 0 0
本文尝试从演化角度讨论 Rollup Layer2 的发展以及演进,主要解答以下几个问题:$ s. r% \2 r8 i* b/ i/ H, e2 G
, [$ v* t( B( x* E: |+ H& G
Rollup 是如何工作的Rollup 的模块化演进模块化带来的可能性模块化应用的技术趋势总结Rollup 是如何工作的​区块链的“三难问题”一直是困扰业界的一个难题,如果我们认为 Layer1 区块链应该首先保证“去中心化”和“安全”,那将“扩展性”方案从 Layer1 迁移出来就是自然的选择了,于是有了 Layer2。那新的难题就是如何通过 Layer1 来保证 Layer2 的安全。, T: r7 L8 m* `! l7 a& d7 x& }, E
6 A$ V) t% m+ j4 ?, y
最初有一种想法是定时将 Layer2 应用的状态树根写到 Layer1,这样可以通过状态证明来校验应用的状态,类似于交易所储备金证明。但这种方式第三方无法通过公开的方式验证两次状态转换是正确的。9 p9 m1 O3 G- v; G6 E4 h/ A

$ z' N5 ?5 d$ @8 D* Q# R为了更深入的探讨这个问题,我们抽象一下,任何程序的状态都可以通过一个状态转换公式表达:# @4 k  G' x+ W. u* N* e+ I, z

" {8 A# t4 i- I' g) g 1676886549262585.png
7 d3 K+ p$ ?6 s5 I. x$ E6 k
1 n9 `  m! g! ]+ c' [2 w7 ?这个公式来自于 Ethereum 黄皮书,但它可以代表任意的程序。在这里 Υ 代表程序,σ 代表状态。状态 σt+1 由程序 Y 通过状态 σt 和交易 T 计算得出。交易 T 代表程序的输入。任意时候,如果 σt 是确定的,程序 Y 是确定的,T 是确定的,那 σt+1 就是确定的。
8 D. D3 Q$ Z# X; Z' h3 R2 M7 R0 f( a4 E1 g- G. P
所以要提供公开的可验证性,关键是 Y 要公开可用,历史上所有的 T 要公开可用并且顺序确定,中间的状态可通过 Y 和 T 重新计算得到。而程序的公开可用我们可以通过开源来实现,关键是 T 公开可用如何保证,这就引入了数据可用性(DA)的概念。4 g- A# |4 s( ~' e/ [4 F* s0 L: }

  K$ r: p; |) w# C( ^; V9 Y数据可用性需要有个公开的不可篡改的账本来记录应用的交易。自然想到,区块链账本就是这样一个系统,于是将 Layer2 的交易写回 Layer1,保证数据可用性,这也就是 Rollup 名称的来源。# B2 a3 o! M& M) G! ^  z
5 h' s$ j, [- k1 J1 S
所以 Layer2 系统中需要有个角色收集用户的交易,进行排序并写入到 DA,这个角色叫 定序器(Sequencer)。这里的交易序列叫 Canonical Transaction Chain
( J- S2 o( O$ g+ T/ q/ f5 R% g' O! b7 ~0 ]( ?( W
保证了数据的可用性,每个人都可以通过自己运行程序执行交易来得到最终的状态。但这里并没有达成共识,因为每个人不确定自己得到的结果是否和其他人的结果一致,毕竟软件或者硬件故障也可能导致数据不一致。所以需要另外一个角色将交易执行后的状态树根定时公布出来,供大家校验自己的状态,这个角色叫 提案者(Proposer)。这里每次提交的状态也构成了一个状态序列,和交易序列对应,叫 State Commitment Chain
) e3 y4 Z3 w4 s* R, t! r. Y
" l3 K$ m' F5 n. ]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

良辰743 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    3