国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

深入理解Plasma(二)Plasma 細(xì)節(jié)

Tecode / 3295人閱讀

摘要:用戶在將主鏈的資產(chǎn)如以太幣或者其它合約發(fā)布的轉(zhuǎn)移到的過程稱為存款,具體做法是直接向主鏈上的合約發(fā)送以太幣或。將賣給,獲得了以太幣,賺取了以太幣。當(dāng)子鏈中有拜占庭行為發(fā)生時(shí),用戶之間可以共同協(xié)作執(zhí)行批量取款。

本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)
原文鏈接:深入理解Plasma(二)Plasma 細(xì)節(jié)原文已更新,請讀者前往原文閱讀

這一系列文章將圍繞以太坊的二層擴(kuò)容框架,介紹其基本運(yùn)行原理,具體操作細(xì)節(jié),安全性討論以及未來研究方向等。本篇文章主要對 Plasma 一些關(guān)鍵操作的細(xì)節(jié)進(jìn)行剖析。

在上一篇文章中我們已經(jīng)理解了什么是 Plasma 框架以及它是如何運(yùn)行的,這一篇文章將對其運(yùn)行過程中的一些關(guān)鍵部分,包括 Plasma 提交區(qū)塊的過程,當(dāng)有惡意行為發(fā)生時(shí)如何構(gòu)建防偽證明以及如何退出 Plasma 子鏈等進(jìn)行剖析。需要注意的是,由于 Plasma 是一套框架,因此本文只剖析 Plasma 項(xiàng)目的共性,每一部分的實(shí)現(xiàn)細(xì)則還是需要參考實(shí)際的項(xiàng)目,例如 Plasma MVP(Minimal-Viable-Plasma)和 Plasma Cash 等。

存款(Deposit)

Plasma 的主要思想就是將大部分計(jì)算過程都轉(zhuǎn)移到鏈下進(jìn)行,用戶只有在進(jìn)入和退出 Plasma Chain 的時(shí)候需要跟主鏈上的智能合約交互,這也是所有 Plasma 應(yīng)用的標(biāo)準(zhǔn)流程。

用戶在將主鏈的資產(chǎn)(如以太幣或者其它 ERC20 合約發(fā)布的 token)轉(zhuǎn)移到 Plasma Chain 的過程稱為存款(Deposit),具體做法是直接向主鏈上的 Plasma 合約發(fā)送以太幣或 token。Plasma 合約收到 Deposit 交易后會(huì)在子鏈上創(chuàng)建跟 Deposit 數(shù)額一致的交易,并將其打包進(jìn)區(qū)塊中,作為存款確認(rèn)的證明。這個(gè)過程如下圖所示(來源自[[1]]

當(dāng)用戶看到子鏈上自己之前存款的交易被確認(rèn)后,就可以在子鏈上使用這筆資產(chǎn)(給子鏈上的其他用戶發(fā)送交易或者退出子鏈等)。

狀態(tài)確認(rèn)(State Commitment)

當(dāng)大部分都轉(zhuǎn)移到鏈下進(jìn)行時(shí),需要某種機(jī)制確保鏈下狀態(tài)的更新得到確認(rèn),這樣才能保證當(dāng)有惡意行為發(fā)生時(shí),主鏈可以保證用戶不會(huì)受到損失。這就是為什么需要狀態(tài)確認(rèn)(State Commitment),即子鏈周期性地將狀態(tài)更新情況提交到主鏈進(jìn)行共識。

然而,將子鏈中的所有交易都同步到主鏈顯然違反了 Plasma 的初衷,在 Plasma 中,實(shí)際向主鏈提交的是 Merkle Tree 的根哈希。因此子鏈中的實(shí)際交易情況被隱藏,在主鏈上只能看到子鏈區(qū)塊的哈希值。

當(dāng)有惡意行為發(fā)生時(shí),子鏈網(wǎng)絡(luò)中的所有用戶都可以向主鏈提交防偽證明,證明成立后,含有惡意交易的區(qū)塊將被回滾。

防偽證明(Fraud Proof)

Plasma 的一個(gè)關(guān)鍵設(shè)計(jì)之一就是允許用戶構(gòu)造防偽證明(Fraud Proof)。防偽證明的意義在于只要發(fā)布區(qū)塊的節(jié)點(diǎn)構(gòu)造了含有惡意交易的區(qū)塊,那么就要承擔(dān)被懲罰的風(fēng)險(xiǎn)。每當(dāng)新的區(qū)塊被提交到主鏈上時(shí),會(huì)留出一段時(shí)間給用戶提交防偽證明,如果在這段時(shí)間內(nèi)沒有證明被提交,則認(rèn)為新的區(qū)塊被驗(yàn)證合法。如果有防偽證明檢測到區(qū)塊中存在惡意交易,則該區(qū)塊將被舍棄,回滾到上一個(gè)被驗(yàn)證合法的區(qū)塊。Plasma 中的防偽證明主要有以下(但不限于)幾種:

資產(chǎn)可花費(fèi)證明

交易簽名有效性證明

存取款證明

至于每種防偽證明的具體形式,則依賴于實(shí)際 Plasma 應(yīng)用的實(shí)現(xiàn)細(xì)則。

如下圖所示(來源自[[1]](https://plasma.io/)),子鏈中每個(gè)節(jié)點(diǎn)都存有 1-4 個(gè)區(qū)塊的數(shù)據(jù)。假設(shè)區(qū)塊 1-3 已經(jīng)被驗(yàn)證合法,而區(qū)塊 4 中存在惡意交易,那么每個(gè)節(jié)點(diǎn)都可以使用 1-4 個(gè)區(qū)塊中的數(shù)據(jù)構(gòu)造防偽證明提交到主鏈,主鏈驗(yàn)證后將子鏈中的狀態(tài)回滾到區(qū)塊 1-3。

防偽證明還可以使用零知識證明(zk-SNARKs 或者 STARKs)來構(gòu)造,但由于目前通過零知識證明生成證明的時(shí)間和空間還有待優(yōu)化,目前設(shè)計(jì)的 Plasma 并不依賴零知識證明。零知識證明在 Plasma 中的應(yīng)用是一個(gè)很有前景的研究方向,感興趣的讀者可以參考以太坊研究團(tuán)隊(duì)關(guān)于這方面的研究[[2]](https://ethresear.ch/t/plasma...。

取款(Withdrawal)

取款(Withdrawal),顧名思義,就是從子鏈中的資產(chǎn)取回到主鏈上,因此取款也被稱為退出(Exit)。取款操作可以說是 Plasma 框架中最重要的一步,因?yàn)樗_保用戶可以安全地將子鏈上的資產(chǎn)轉(zhuǎn)移到主鏈上。之前的存款以及狀態(tài)確認(rèn)步驟已經(jīng)產(chǎn)生了一些交易數(shù)據(jù),并在主鏈上得到同步,用戶可以利用這些數(shù)據(jù)構(gòu)造資產(chǎn)證明,之后執(zhí)行簡單取款(Simple Withdrawal)操作退出子鏈。當(dāng)有扣留(Withholding)攻擊發(fā)生(即子鏈上的礦工惡意扣留區(qū)塊,意圖雙花攻擊等)時(shí),用戶可能無法成功獲取數(shù)據(jù)構(gòu)造資產(chǎn)證明,這時(shí)需要執(zhí)行批量取款(Mass Withdrawal)操作退出子鏈。

需要注意的是,當(dāng)子鏈中有取款操作發(fā)生時(shí),跟這個(gè)取款操作相關(guān)的賬號或者交易都將被禁止。

簡單取款(Simple Withdrawal)

執(zhí)行簡單取款的條件是所要取回的資產(chǎn)已經(jīng)在主鏈和子鏈上確認(rèn)。

一個(gè)簡單取款的執(zhí)行主要有以下幾個(gè)步驟:

向主鏈上的 Plasma 智能合約發(fā)送已簽名的取款交易。取款的數(shù)額可以包含多個(gè)輸出(UTXO模型),但所有輸出必須在同一個(gè)子鏈當(dāng)中,而且每個(gè)輸出的余額必須全部取出,不能只取出一部分。取款數(shù)額的一部分還需要被當(dāng)作押金,作為惡意行為的懲罰。

當(dāng)取款請求發(fā)送后,需要等待一段“爭議期(Challenge Period)”,這期間其它節(jié)點(diǎn)可以構(gòu)造證據(jù)證明該取款中的部分或全部數(shù)額已經(jīng)被花費(fèi)。如果爭議期內(nèi)有節(jié)點(diǎn)提供證明成功,那么取款被取消,而且押金被扣除。

接下來可能還要等待一段時(shí)間,直到所有區(qū)塊高度較低的取款操作都完成。這是為了保證所有取款操作按照“先來后到”的順序執(zhí)行。

當(dāng)爭議期結(jié)束后,如果沒有爭議被提出,則認(rèn)為取款操作成立,取款者將子鏈資產(chǎn)成功取回到主鏈。

快速取款(Fast Withdrawal)

快速取款(Fast Withdrawal)跟簡單取款相比的差別主要是引入一個(gè)中間人,白皮書上稱為 Liquidity Provider,這里簡稱為 LP。如果一個(gè)用戶不想等待很長的爭議期(目前的實(shí)現(xiàn)至少要一周),那么它可以選擇從 LP 這里直接取款,只需要消耗一個(gè)交易確認(rèn)的時(shí)間,代價(jià)是需要支付給 LP 一定的費(fèi)用。由于 Plasma 白皮書上關(guān)于快速取款的描述太過晦澀,這里主要參考 kfichter 提出的 Simple Fast Withdrawal[[3]](https://ethresear.ch/t/simple... 來介紹快速取款是如何實(shí)現(xiàn)的。

為了實(shí)現(xiàn)快速取款,取款方和 LP 可以利用一個(gè)流動(dòng)合約(liquidity contract)。假設(shè)取款方是 Alice,她想要執(zhí)行快速取款將 10 以太幣從子鏈轉(zhuǎn)移到主鏈。她首先向流動(dòng)合約發(fā)送 10 以太幣,注意這里的交易是在子鏈上進(jìn)行的。當(dāng)這個(gè)交易被子鏈打包成區(qū)塊后,Alice 可以調(diào)用合約中的某個(gè)退出函數(shù),這時(shí) Alice 將獲取一個(gè)代表她這筆資產(chǎn)的 token。Bob 作為 LP,他檢查了子鏈上數(shù)據(jù)之后證明 Alice 的取款沒有問題之后愿意以 9 以太幣的價(jià)格購買這個(gè) token。Alice 將 token 賣給 Bob,獲得了 9 以太幣,Bob 賺取了 1 以太幣。

需要注意的是,實(shí)現(xiàn)快速取款的前提條件是沒有拜占庭行為發(fā)生,即沒有扣留區(qū)塊攻擊發(fā)生,因?yàn)?LP 需要驗(yàn)證取款方的交易歷史。

批量取款(Mass Withdrawal)

當(dāng)子鏈中有拜占庭行為(例如,區(qū)塊扣留攻擊)發(fā)生時(shí),將會(huì)影響以后生成防偽證明,因此網(wǎng)絡(luò)中的每個(gè)用戶都有責(zé)任快速退出子鏈。雖然批量取款(Mass Withdrawal)操作不是必要選擇,但當(dāng)大量用戶執(zhí)行取款時(shí)很可能會(huì)造成主鏈擁塞,也會(huì)消耗更多的 gas,因此批量取款是當(dāng)子鏈?zhǔn)艿焦魰r(shí)更好的選擇。

批量取款操作由于所采用的模型(UTXO 模型或者賬戶模型)不同會(huì)有較大的差別,而且目前關(guān)于批量取款的操作細(xì)節(jié)也正在研討當(dāng)中,因此這里只對批量取款做簡單介紹,想要了解目前研究狀態(tài)可以參考[[4]](https://ethresear.ch/t/basic-...。

當(dāng)子鏈中有拜占庭行為發(fā)生時(shí),用戶之間可以共同協(xié)作執(zhí)行批量取款。這時(shí)會(huì)有一個(gè)節(jié)點(diǎn)扮演取款處理人(Exit Processor)的角色,簡稱為 EP,負(fù)責(zé)當(dāng)前某個(gè)批量操作(可以同時(shí)有多個(gè)批量取款操作發(fā)生,但同一個(gè)取款申請不能存在于多個(gè)批量取款),并且可以收取服務(wù)費(fèi)作為報(bào)酬。EP 將構(gòu)造一個(gè)位圖(bitmap,即一串0/1)記錄哪些資產(chǎn)要執(zhí)行取款。之后 EP 將利用現(xiàn)有的區(qū)塊數(shù)據(jù)檢查每個(gè)取款是否合法,之后將構(gòu)造一個(gè)批量退出初始化交易(Mass Exit Initiation Transaction,MEIT),并將其發(fā)送到主鏈上。在 MEIT 被主鏈確認(rèn)之前,每個(gè)用戶都可以對這個(gè)交易提出異議。當(dāng)爭議期結(jié)束,MEIT 被主鏈確認(rèn),批量取款成功。

總結(jié)

本文主要對 Plasma 框架中一些關(guān)鍵操作進(jìn)行了比較詳細(xì)的介紹,但如果不依托于某個(gè)實(shí)際的 Plasma 項(xiàng)目,對一些細(xì)節(jié)還是很難理解。因此在后面的文章中將會(huì)介紹 Plasma MVP 以及 Plasma Cash。

相關(guān)資源

https://plasma.io/

https://ethresear.ch/t/plasma-is-plasma/2195

https://ethresear.ch/t/simple-fast-withdrawals/2128

https://ethresear.ch/t/basic-mass-exits-for-plasma-mvp/3316

本文的作者是蓋蓋,他的公眾號: chainlab

深入淺出區(qū)塊鏈 - 系統(tǒng)學(xué)習(xí)區(qū)塊鏈,打造最好的區(qū)塊鏈技術(shù)博客。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/98992.html

相關(guān)文章

  • 深入理解PlasmaPlasma 細(xì)節(jié)

    摘要:用戶在將主鏈的資產(chǎn)如以太幣或者其它合約發(fā)布的轉(zhuǎn)移到的過程稱為存款,具體做法是直接向主鏈上的合約發(fā)送以太幣或。將賣給,獲得了以太幣,賺取了以太幣。當(dāng)子鏈中有拜占庭行為發(fā)生時(shí),用戶之間可以共同協(xié)作執(zhí)行批量取款。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:深入理解Plasma(二)Plasma 細(xì)節(jié)原文已更新,請讀者前往原文閱讀 這一系列文章將圍繞以太坊的二層擴(kuò)容框架,介紹其基本運(yùn)行原理,具體操...

    Bowman_han 評論0 收藏0
  • 深入理解Plasma(四)Plasma Cash

    摘要:稀疏梅克爾樹在上文中我們已經(jīng)了解到一個(gè)交易的成功的前提是需要發(fā)送方提供關(guān)于一個(gè)的完整交易歷史。因此,中使用了一種稱為稀疏梅克爾樹,的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)交易數(shù)據(jù),能夠在的時(shí)間復(fù)雜度驗(yàn)證一個(gè)交易不存在。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:深入理解Plasma(四)Plasma Cash原文已更新,請讀者前往原文閱讀 這一系列文章將圍繞以太坊的二層擴(kuò)容框架 Plasma,介紹其基本運(yùn)行原理,具...

    godiscoder 評論0 收藏0
  • 深入理解Plasma(四)Plasma Cash

    摘要:稀疏梅克爾樹在上文中我們已經(jīng)了解到一個(gè)交易的成功的前提是需要發(fā)送方提供關(guān)于一個(gè)的完整交易歷史。因此,中使用了一種稱為稀疏梅克爾樹,的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)交易數(shù)據(jù),能夠在的時(shí)間復(fù)雜度驗(yàn)證一個(gè)交易不存在。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:深入理解Plasma(四)Plasma Cash原文已更新,請讀者前往原文閱讀 這一系列文章將圍繞以太坊的二層擴(kuò)容框架 Plasma,介紹其基本運(yùn)行原理,具...

    sourcenode 評論0 收藏0
  • 深入理解Plasma(三)Plasma MVP

    摘要:合約會(huì)處理由子鏈提交的區(qū)塊,并且將區(qū)塊的哈希值存在主鏈上。負(fù)責(zé)處理所有子鏈上發(fā)生的交易,將其打包成區(qū)塊存儲(chǔ)在子鏈上,并且周期性地向合約提交區(qū)塊,將子鏈上的狀態(tài)區(qū)塊的哈希值提交到主鏈共識。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:深入理解Plasma(三)Plasma MVP原文已更新,請讀者前往原文閱讀 這一系列文章將圍繞以太坊的二層擴(kuò)容框架 Plasma,介紹其基本運(yùn)行原理,具體操作細(xì)...

    mmy123456 評論0 收藏0
  • 深入理解Plasma(三)Plasma MVP

    摘要:合約會(huì)處理由子鏈提交的區(qū)塊,并且將區(qū)塊的哈希值存在主鏈上。負(fù)責(zé)處理所有子鏈上發(fā)生的交易,將其打包成區(qū)塊存儲(chǔ)在子鏈上,并且周期性地向合約提交區(qū)塊,將子鏈上的狀態(tài)區(qū)塊的哈希值提交到主鏈共識。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:深入理解Plasma(三)Plasma MVP原文已更新,請讀者前往原文閱讀 這一系列文章將圍繞以太坊的二層擴(kuò)容框架 Plasma,介紹其基本運(yùn)行原理,具體操作細(xì)...

    guqiu 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<