最近在看Layer2技术(扩容技术)。目前的公链技术(Layer1技术)存在TPS性能不够,无法满足大规模交易的需求。Layer2技术主要还是分片,状态通道,侧链,Plasma,雷电网络等等。Layer2技术的主要思想是利用“Off-Chain”的高性能计算,只把计算结果存储在链上(“On-Chain”),从而实现可扩展性的高性能。
VK在2017年提出了Plasma的想法。想法的文章可以从Plasmas的官网(现在还很简陋)下载:https://plasma.io/plasma.pdf。Plasma,用VK在文章中的描述:
Plasma is composed of two key parts of the design: Reframing all blockchain compu- tation into a set of MapReduce functions, and an optional method to do Proof-of-Stake token bonding on top of existing blockchains with the understanding that the Nakamoto Consensus incentives discourage block withholding.
Plasma由两部分设计组成:1)类似MapReduce分布式计算的区块链计算能力 2)PoS的共识。简单的说,Plasma负责分发计算需求,搜集以及将计算结果记录在主链上。计算过程由PoS共识完成。
VK的文章比较晦涩,特别喜欢用非常长的英文句子。Plasma的介绍的文章,有点像VK对Plasma的思考笔记。后续的文章会针对Plasma进行细节的介绍,本文图例介绍Plasma的MVP系统。
Plasma的相关的代码目前并未公开,目前在Github上只有Plasma的MVP系统(最小可行产品)的实现。
1)Plasma智能合约在主链部署
Plasma必须在主链上部署智能合约,完成主链和子链的交互。
2)子链的资金初始化
2.a)用户Sam向Plasma智能合约转账,作为子链的资金
2.b)子链的Operator(“操作员”),发现智能合约交易后,在子链上创建对应的资金交易。在子链上所有的交易都是采用“UTXO”模型。
2.c)在子链的交易打包生成区块后,Operator向Plasma智能合约提交区块的验证信息。
2.d)Sam查看Operator的所有操作,如果有误操作,直接退出(MVP的这部分实现比较简单,如果Operator有误操作,子链用户只能选择退出子链)。退出子链的逻辑在后面描述。
3)子链转账
如果Sam向转账给Alice,大体步骤如下:
3.a)Sam通知Operator具体的转账交易内容
3.b)Operator将交易打包生成区块
3.c)在子链的交易打包生成区块后,Operator向Plasma智能合约提交区块的验证信息。
3.d)在Operator发现区块验证信息已经提交到主链后,通知Alice查验。
4)子链用户退出
退出子链,必须向Plasma智能合约提出申请。如果申请,在一个星期内,没有人挑战,则退出成功。注意,在子链中资金都是用UTXO表示,而且区块的证明信息能用来证明一个UTXO包含在一个区块中。
4.a)Sam向Plasma智能合约提出退去请求(提供退去请求的金额以及被挑战需要支付的保证金)。
4.b)如果Alice发现Sam的退出请求有问题,在一个星期内向Plasma智能合约提交证据。
4.c)如果证据正确,Alice获得Sam的保证金。Sam退出失败。
如果申请退出成功,Plasma智能合约将释放资金回到主链上。
5)Operator提交错误的区块证明
子链用户在发现Operator提交错误的区块证明信息时,向Plasma提出退出请求。如果Operator也提出退出请求时,必须等到其他退出请求完成后才能执行。
总结:Plasma是Layer2的扩容技术,在2017年由VK提出。Plasma的主要思想是实现链下的计算能力,并将计算结果记录在链上。Plasma的实现目前还没有公开。在Github上有一些Plasma的MVP实现,其主要的思想:账户模型采用UTXO,区块的证明采用UTXO交易的Merkle Root。
近期会写一些Layer2技术的总结和梳理文章,对Layer2技术感兴趣的小伙伴,可以关注我的公众号或者微信一起讨论。
领取专属 10元无门槛券
私享最新 技术干货