区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程

为了更好地理解我的研究,我将PlasmaMVP表示为javascript。MVP是Vbuterin最初提出的minimal viable plasma,旨在以非常简单的方式提供plasma的基本安全特性。

基于此提议,OmiseGo实施了MVP,旨在将来使用Plasma。 我主要使用此实现作为参考。 实际上,Plasma提案的白皮书仍然是高度概述,它还没有提到详细的实现方式。

请注意,OmiseGo-MVP与我的实现有两点不同。 首先,出于简化原因,我不在子链内使用令牌。 其次,子链的operator 将收取交易费作为激励。

我把整个过程分解成5个步骤:

部署根链

操作创建子链

将以太币存入根链

花费UTXO

撤回UTXO

部署根链

区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第1张图片

根链是一个智能合约,因此它被部署到Ether主网。 根链有5个主要功能。 其中4个由Vbuterin定义为Plasma的最小实现。 (即使'finalizeExits'没有定义,提取资金也很重要) 

区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第2张图片

Operate 创建子链

区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第3张图片

operator创建的子链仅由operator操作,因此该链是权威证明(POA)链。链上的参与者都信任operator。

当然,如果operator进行任何恶意行为,每个参与者都可以收回存入的资金,operator同时也将受到处罚。

根链有一个主要功能,即'addBlock'。 此功能将一个块添加到子链。 operator的操作只是在本文章中添加一个块。

区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第4张图片

从本质上讲,Plasma的子链是一个树形结构。由于这种结构,Plasma链实现了极高的可扩展性。Plasma可以非常快速和便宜地处理数千个交易。但是树的结构非常复杂,所以我把子链描述为一个没有分支的单链。 

区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第5张图片

在根链存入以太币

区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第6张图片

起初,Sam构建了一个输出属于他自己的事务5个以太坊。 请注意,此事务将包含在子链中,以便Sam不会将此事务发送到根链。

由于可伸缩性原因,根链仅包含子链的头。头部只包含2个信息:区块和时间戳内的事务的merkle根。

在存款案例中,包含一个事务,这样merkle root就等于事务哈希。

在Plasma中,像Ether资产存储为一个utxo模型(未占用的事务输出模型)。这与以太坊主网不同,以太坊主网将资产存储为状态模型。UTXO模型与比特币的闪电网络相同。

UTXO表示为以下格式。

块号* 1000000000 +事务索引* 10000 +输出索引

区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第7张图片
区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第8张图片

接下来,子链的operator立即创建一个区块以记录来自Sam的存款以太。 operator在区块添加过程中收取费用作为激励。 

区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第9张图片

UTXO花费

区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第10张图片

Sam构建了一个输出,其输出属于Alice。 请注意,此交易输入是Sam的UTXO。 

区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第11张图片
区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第12张图片

接下来,operator将包含Sam的事务的块添加到子链中。

在这一刻,Alice无法使用此事务的输出。 因为此事务尚未包含在根链中。

区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第13张图片
区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第14张图片

operator将区块提交给根链。 根据块区内的事务计算根哈希。 

区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第15张图片
区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第16张图片

Sam注意到事务已包含在根链中。 然后,他向Alice发送确认签名。 从现在起,Alice可以使用收到的UTXO。 撤回她的资金需要这个确认签名。 

区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第17张图片

UTXO撤回

区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第18张图片

Alice建立'sig'以证明'utxoIncludedTx'由包含来自Sam的确认签名的发件人确认。 Ans She构建'证明'以证明'utxoIncludedTx'包含在根链中。

她将退出事务发送到根链。

区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第19张图片

在这一刻,Alice没有收到退出的UTXO。 该退出请求至少要查看2周。 在这两周内,有人可以挑战这个退出。 如果Alice是恶意的并且这个退出是欺诈并且挑战者获胜,那么Alice失去了这个UTXO。 

区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第20张图片

退出时间锁定到期后,最后,如果她将退出终结事务发送到根链,Alice会收到UTXO。

Alice收到3个Ether(5个来自Sam,2个来自Operator)

区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程_第21张图片

​本文转载公众号:区块链研究实验室,专注区块链技术,产品社群,经济模型等全方位的知识体系输出,为大家带来不一样的社群学习体验。欢迎联系作者微信加入社群:csschan1120  

你可能感兴趣的:(区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程)