Plasma:确保跨链资金安全回流的设计模式
博客园
发表于 2022-12-3 12:03:51
142
0
0
Plasma文档及其标题定义都写得比较学术化,晦涩难懂。然而对于任何一项技术,只要读者能清晰地明白这项技术应用在什么场景,解决了什么问题,理解起来就会轻松很多。
- V- ~ f+ I6 z. {$ Q; @) L. ~0 |
在很多时候,深刻理解问题本身要比理解该问题的一个解决方案更重要。! P6 G, z4 S( v5 n& }
读者可以先不看Plasma文档,自己尝试着思考如何实现跨链资金的安全回流,然后再去参考Plasma文档,就能理解的更快速、更深刻一些。
& @7 n9 U7 j( \2 J3 C
简单来说,Plasma其实是一种设计模式、解决方案、指导思想与框架。
! l1 F" T0 y ]; S, i+ g
按照Plasma模式建立应用链(Plasma-Chain)及根链智能合约(Plasma-Contract),则可确保链外资金能够安全回流到根链。由于Ethereum是图灵完备的智能合约平台,因此可以将Plasma-Contract想象成是Plasma-Chain的轻量级实现。8 X2 v$ f& W4 C" ^
! V; W' z3 B- h9 A: g7 j) p
Plasma模式整体上可以分解为四个步骤:
. G/ M7 V2 S4 E" ~
1)根链资金划转到Plasma-Chain+ K2 j# y0 J0 o; g5 _; `2 b3 @- b
5 k* @# o1 L4 a% A. c
用户存入ETH或ERC20-Token到Plasma-Contract,然后Plasma-Chain就会释放出对应量的资金;1 L2 g* k# ~6 M; w" K2 s+ |
! D P- Y) }2 d) W
2)在Plasma-Chain上执行计算任务3 G' r- R" \/ S9 Y" ]9 W
( C" Z- S7 l5 D- s4 Z
用户在Plasma-Chain中拥有资金后,就可以执行具体的计算任务,包括转账、执行职能合约、运行区块链游戏等等;; c: ]" F# ?6 O1 R0 N/ d$ |* s
3)提交Plasma-Chain状态变更到根链0 y: I2 F, _+ m
2 d9 Q+ [) M6 H
若把区块链看成是一个去中心化的状态机,那么在Plasma-Chain中执行计算任务后,将会导致一定量的状态改变,为更好地适应不同量的状态改变,需将状态变更情况进行一定的压缩,比如采用Merkle-Tree的方式组织起来,并将Merkle-Tree的Hash-Root提交到Ethereum根链,进而触发运行Plasma-Contract代码将其保存起来;
( f' }# O' @5 j2 ], ]+ p
4)Plasma-Chain资金安全回流到根链' b' C: y4 [. B) _, F7 d/ B* g
) N( c9 j1 L r2 Z# `% S, ^& C
即使Plasma-Chain去中心化的程度不够高,甚至出现安全事故,用户仍然可以提交证明数据到Plasma-Contract中取回在属于自己的资金。- K8 e2 `- L& u; P6 z
类似于用户退出了网络游戏之后,仍然保留了自己的账户充值余额、装备、道具、积分等信息,如果游戏项目不再运营下去,那么用户可以无条件退回充值余额。2 _, R4 D8 e! G
2 \0 Z/ k0 o: z! q$ B
对于用户和Plasma-Chain运营方,若任何一方作弊(比如提交给Plasma-Contract的数据不正确),那么对方都可以向合约提交欺诈证明(fraudproofs),只要合约代码没有设计缺陷和代码漏洞,那么合约代码就会给出正确的仲裁结果。
' d4 Q! L4 _8 C: Z
由于Plasma技术文档只描述了一种思想和大体的框架,指出资金能够安全回流到主链是可行的,但是并没有给出特别具体的解决方案,所以目前又发展出若干个更具体的实现方案,比较著名的有PlasmaMVP、PlasmaCash、PlasmaDebit,针对这些内容,后续文章将给出具体的分析说明。
成为第一个吐槽的人