首页 资讯 正文

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

链三丰 2019年06月28日 02:53

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

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

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

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

  1. 部署根链

  2. 操作创建子链

  3. 将以太币存入根链

  4. 花费UTXO

  5. 撤回UTXO

部署根链

201906271529511.jpeg

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

201906271530061.png 

Operate 创建子链 

201906271530361.jpeg 

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

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

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

201906271531021.png

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

201906271531271.jpeg 

在根链存入以太币 

201906271531501.jpeg 

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

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

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

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

UTXO表示为以下格式。

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

201906271532531.png

201906271533011.jpeg

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

201906271533401.png 

UTXO花费 

201906271533501.jpeg 

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

201906271534211.png 

201906271534281.jpeg

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

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

201906271534581.png

201906271535061.jpeg

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

201906271535391.png 

201906271535491.jpeg

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

201906271537161.png 

UTXO撤回 

201906271537521.jpeg 

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

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

201906271538241.png

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

201906271538501.png 

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

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

201906271539311.png

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