區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

JavaScript 區塊鏈 區塊鏈研究實驗室 2019-06-30

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

基於此提議,OmiseGo實施了MVP,旨在將來使用Plasma。 我主要使用此實現作為參考。 實際上,Plasma提案的白皮書仍然是高度概述,它還沒有提到詳細的實現方式。

請注意,OmiseGo-MVP與我的實現有兩點不同。 首先,出於簡化原因,我不在子鏈內使用令牌。 其次,子鏈的operator 將收取交易費作為激勵。

我把整個過程分解成5個步驟:

  1. 部署根鏈
  2. 操作創建子鏈
  3. 將以太幣存入根鏈
  4. 花費UTXO
  5. 撤回UTXO

部署根鏈

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

根鏈是一個智能合約,因此它被部署到Ether主網。 根鏈有5個主要功能。 其中4個由Vbuterin定義為Plasma的最小實現。 (即使'finalizeExits'沒有定義,提取資金也很重要)

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

Operate 創建子鏈

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

operator創建的子鏈僅由operator操作,因此該鏈是權威證明(POA)鏈。鏈上的參與者都信任operator。

當然,如果operator進行任何惡意行為,每個參與者都可以收回存入的資金,operator同時也將受到處罰。

根鏈有一個主要功能,即'addBlock'。 此功能將一個塊添加到子鏈。 operator的操作只是在本文章中添加一個塊。

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

從本質上講,Plasma的子鏈是一個樹形結構。由於這種結構,Plasma鏈實現了極高的可擴展性。Plasma可以非常快速和便宜地處理數千個交易。但是樹的結構非常複雜,所以我把子鏈描述為一個沒有分支的單鏈。

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

在根鏈存入以太幣

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

起初,Sam構建了一個輸出屬於他自己的事務5個以太坊。 請注意,此事務將包含在子鏈中,以便Sam不會將此事務發送到根鏈。

由於可伸縮性原因,根鏈僅包含子鏈的頭。頭部只包含2個信息:區塊和時間戳內的事務的merkle根。

在存款案例中,包含一個事務,這樣merkle root就等於事務哈希。

在Plasma中,像Ether資產存儲為一個utxo模型(未佔用的事務輸出模型)。這與以太坊主網不同,以太坊主網將資產存儲為狀態模型。UTXO模型與比特幣的閃電網絡相同。

UTXO表示為以下格式。

塊號* 1000000000 +事務索引* 10000 +輸出索引

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

接下來,子鏈的operator立即創建一個區塊以記錄來自Sam的存款以太。 operator在區塊添加過程中收取費用作為激勵。

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

UTXO花費

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

Sam構建了一個輸出,其輸出屬於Alice。 請注意,此交易輸入是Sam的UTXO。

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

接下來,operator將包含Sam的事務的塊添加到子鏈中。

在這一刻,Alice無法使用此事務的輸出。 因為此事務尚未包含在根鏈中。

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

operator將區塊提交給根鏈。 根據塊區內的事務計算根哈希。

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

Sam注意到事務已包含在根鏈中。 然後,他向Alice發送確認簽名。 從現在起,Alice可以使用收到的UTXO。 撤回她的資金需要這個確認簽名。

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

UTXO撤回

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

Alice建立'sig'以證明'utxoIncludedTx'由包含來自Sam的確認簽名的發件人確認。 Ans She構建'證明'以證明'utxoIncludedTx'包含在根鏈中。

她將退出事務發送到根鏈。

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

在這一刻,Alice沒有收到退出的UTXO。 該退出請求至少要查看2周。 在這兩週內,有人可以挑戰這個退出。 如果Alice是惡意的並且這個退出是欺詐並且挑戰者獲勝,那麼Alice失去了這個UTXO。

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

退出時間鎖定到期後,最後,如果她將退出終結事務發送到根鏈,Alice會收到UTXO。

Alice收到3個Ether(5個來自Sam,2個來自Operator)

區塊鏈研究實驗室 | PlasmaMVP使用javascript實現資金撤回教程

相關推薦

推薦中...