为了更好地理解我的研究,我将PlasmaMVP表示为javascript。MVP是Vbuterin最初提出的minimalviableplasma,旨在以非常简单的方式提供plasma的基本安全特性。
基于此提议,OmiseGo实施了MVP,旨在将来使用Plasma。我主要使用此实现作为参考。?实际上,Plasma提案的白皮书仍然是高度概述,它还没有提到详细的实现方式。
请注意,OmiseGo-MVP与我的实现有两点不同。首先,出于简化原因,我不在子链内使用令牌。其次,子链的operator?将收取交易费作为激励。
我把整个过程分解成5个步骤:
部署根链
操作创建子链
将以太币存入根链
花费UTXO
撤回UTXO
部署根链
根链是一个智能合约,因此它被部署到Ether主网。根链有5个主要功能。其中4个由Vbuterin定义为Plasma的最小实现。??
Operate创建子链?
operator创建的子链仅由operator操作,因此该链是权威证明链。链上的参与者都信任operator。
当然,如果operator进行任何恶意行为,每个参与者都可以收回存入的资金,operator同时也将受到处罚。
根链有一个主要功能,即'addBlock'。此功能将一个块添加到子链。operator的操作只是在本文章中添加一个块。
从本质上讲,Plasma的子链是一个树形结构。由于这种结构,Plasma链实现了极高的可扩展性。Plasma可以非常快速和便宜地处理数千个交易。但是树的结构非常复杂,所以我把子链描述为一个没有分支的单链。?
在根链存入以太币?
起初,Sam构建了一个输出属于他自己的事务5个以太坊。请注意,此事务将包含在子链中,以便Sam不会将此事务发送到根链。
由于可伸缩性原因,根链仅包含子链的头。头部只包含2个信息:区块和时间戳内的事务的merkle根。
在存款案例中,包含一个事务,这样merkleroot就等于事务哈希。
在Plasma中,像Ether资产存储为一个utxo模型。这与以太坊主网不同,以太坊主网将资产存储为状态模型。UTXO模型与比特币的闪电网络相同。
UTXO表示为以下格式。
块号*1000000000事务索引*10000输出索引
接下来,子链的operator立即创建一个区块以记录来自Sam的存款以太。operator在区块添加过程中收取费用作为激励。?
UTXO花费?
Sam构建了一个输出,其输出属于Alice。请注意,此交易输入是Sam的UTXO。?
接下来,operator将包含Sam的事务的块添加到子链中。
在这一刻,Alice无法使用此事务的输出。因为此事务尚未包含在根链中。
operator将区块提交给根链。根据块区内的事务计算根哈希。?
Sam注意到事务已包含在根链中。然后,他向Alice发送确认签名。从现在起,Alice可以使用收到的UTXO。撤回她的资金需要这个确认签名。?
UTXO撤回?
Alice建立'sig'以证明'utxoIncludedTx'由包含来自Sam的确认签名的发件人确认。AnsShe构建'证明'以证明'utxoIncludedTx'包含在根链中。
她将退出事务发送到根链。
在这一刻,Alice没有收到退出的UTXO。该退出请求至少要查看2周。在这两周内,有人可以挑战这个退出。如果Alice是恶意的并且这个退出是欺诈并且挑战者获胜,那么Alice失去了这个UTXO。?
退出时间锁定到期后,最后,如果她将退出终结事务发送到根链,Alice会收到UTXO。
Alice收到3个Ether
本文转载公众号:区块链研究实验室,专注区块链技术,产品社群,经济模型等全方位的知识体系输出,为大家带来不一样的社群学习体验。欢迎联系作者微信加入社群:csschan1120??
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。