Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

Rollup Layer2 的模块化演进之路

良辰743
1248 0 0
本文尝试从演化角度讨论 Rollup Layer2 的发展以及演进,主要解答以下几个问题:# q/ |; w1 s" a/ ?/ C: V5 u! B$ |" X
4 e9 _5 l5 d$ U2 ?. M+ v+ R; C' ], q
Rollup 是如何工作的Rollup 的模块化演进模块化带来的可能性模块化应用的技术趋势总结Rollup 是如何工作的​区块链的“三难问题”一直是困扰业界的一个难题,如果我们认为 Layer1 区块链应该首先保证“去中心化”和“安全”,那将“扩展性”方案从 Layer1 迁移出来就是自然的选择了,于是有了 Layer2。那新的难题就是如何通过 Layer1 来保证 Layer2 的安全。
2 K  r1 u. e, @9 }6 k3 m2 t3 U( e: p' f4 }
2 F/ S( B) s" B# t, j* u最初有一种想法是定时将 Layer2 应用的状态树根写到 Layer1,这样可以通过状态证明来校验应用的状态,类似于交易所储备金证明。但这种方式第三方无法通过公开的方式验证两次状态转换是正确的。
. H$ t+ C2 b+ r: X9 z7 Q
* ~, p" v" V; a1 J为了更深入的探讨这个问题,我们抽象一下,任何程序的状态都可以通过一个状态转换公式表达:  j' e  E5 c# I

* O& g* S9 a7 T 1676886549262585.png 0 W6 X9 W5 n/ f! `
! P; L# f, c) O( Q- \8 W4 q
这个公式来自于 Ethereum 黄皮书,但它可以代表任意的程序。在这里 Υ 代表程序,σ 代表状态。状态 σt+1 由程序 Y 通过状态 σt 和交易 T 计算得出。交易 T 代表程序的输入。任意时候,如果 σt 是确定的,程序 Y 是确定的,T 是确定的,那 σt+1 就是确定的。
- c+ L* S- @+ [2 t& M0 P$ [0 Z. g: S. ?0 G! K
所以要提供公开的可验证性,关键是 Y 要公开可用,历史上所有的 T 要公开可用并且顺序确定,中间的状态可通过 Y 和 T 重新计算得到。而程序的公开可用我们可以通过开源来实现,关键是 T 公开可用如何保证,这就引入了数据可用性(DA)的概念。$ a9 ?3 t- {6 O5 L: H% T0 w1 H  `

7 O5 H, S, J9 i1 S9 R) Q2 m数据可用性需要有个公开的不可篡改的账本来记录应用的交易。自然想到,区块链账本就是这样一个系统,于是将 Layer2 的交易写回 Layer1,保证数据可用性,这也就是 Rollup 名称的来源。. S$ S" v" {+ O* Z  g- R! N

1 z: T) m4 R4 u) P3 I" J' j9 O. y所以 Layer2 系统中需要有个角色收集用户的交易,进行排序并写入到 DA,这个角色叫 定序器(Sequencer)。这里的交易序列叫 Canonical Transaction Chain
% C3 I# @/ P# y
2 B1 x+ |9 Y* s/ v- Y/ a* f+ L4 H保证了数据的可用性,每个人都可以通过自己运行程序执行交易来得到最终的状态。但这里并没有达成共识,因为每个人不确定自己得到的结果是否和其他人的结果一致,毕竟软件或者硬件故障也可能导致数据不一致。所以需要另外一个角色将交易执行后的状态树根定时公布出来,供大家校验自己的状态,这个角色叫 提案者(Proposer)。这里每次提交的状态也构成了一个状态序列,和交易序列对应,叫 State Commitment Chain
) S% Y4 n6 L0 ?; J  M& o; X0 X4 {% k! ^1 q0 T! V  I
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

良辰743 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    3