最新內(nèi)容會更新在主站深入淺出區(qū)塊鏈社區(qū)
原文鏈接:深入理解Plasma(一)Plasma 框架
這一系列文章將圍繞以太坊的二層擴(kuò)容框架统屈,介紹其基本運(yùn)行原理,具體操作細(xì)節(jié),安全性討論以及未來研究方向等。本篇文章作為開篇氏涩,主要目的是理解 Plasma 框架届囚。
Plasma 作為以太坊的二層擴(kuò)容框架,自從 2017 年被 Joseph Poon(Lightning Network 創(chuàng)始人)和 Vitalik Buterin (Ethereum 創(chuàng)始人)提出以來[1]是尖,一直是區(qū)塊鏈從業(yè)人員關(guān)注的焦點(diǎn)[2]意系。首先需要明確的是,Plasma 實(shí)質(zhì)上是一套框架饺汹,而不是一個(gè)單獨(dú)的項(xiàng)目蛔添,它為各種不同的項(xiàng)目實(shí)際項(xiàng)目提供鏈下(off-chain)解決方案。這也是為什么很多人對 Plasma 感到疑惑的一個(gè)重要原因首繁,因?yàn)樵谌狈?shí)際應(yīng)用場景的情況下很難將 Plasma 解釋清楚作郭。
因此陨囊,理解 Plasma 是一套框架是理解 Plasma 的關(guān)鍵弦疮。
從區(qū)塊鏈擴(kuò)容談起
在介紹 Plasma 之前,不得不先介紹區(qū)塊鏈擴(kuò)容蜘醋。我們都知道胁塞,比特幣(Bitcoin)和以太坊(Ethereum)作為目前最廣泛使用的區(qū)塊鏈平臺,面臨的最大問題就是可擴(kuò)展性(Scalability)压语。這里需要注意的是啸罢,區(qū)塊鏈中的可擴(kuò)展性問題并不是單獨(dú)特指某個(gè)問題,而是區(qū)塊鏈想要實(shí)現(xiàn) Web3.0[3] 的愿景胎食,為億萬用戶提供去中心化服務(wù)所要克服的一系列挑戰(zhàn)扰才。雖然以太坊號稱是“世界計(jì)算機(jī)”,但這臺“計(jì)算機(jī)”卻是單線程的厕怜,每秒鐘只能處理大約 15 條交易衩匣,與目前主流的 Visa 和 MasterCard 動輒每秒上萬的吞吐量相比實(shí)在相形見絀。因此如何在保證區(qū)塊鏈安全性的情況下粥航,提高可擴(kuò)展性是目前區(qū)塊鏈發(fā)展亟待解決的問題之一琅捏。
目前關(guān)于區(qū)塊鏈擴(kuò)容的解決方案無外乎兩個(gè)方向:一層(Layer 1)擴(kuò)容和二層(Layer 2)擴(kuò)容[4]。一層擴(kuò)容也被稱為鏈上(on-chain)擴(kuò)容递雀,顧名思義柄延,這類擴(kuò)容方案需要更改區(qū)塊鏈底層協(xié)議。但同時(shí)也意味著需要將區(qū)塊鏈硬分叉缀程。這類擴(kuò)容方案就像將原來的單核 CPU 改裝成多核 CPU搜吧,從而可以多線程處理計(jì)算任務(wù),提高整個(gè)網(wǎng)絡(luò)的吞吐量杨凑。
目前最典型的一層擴(kuò)容方案是 Vitalik 和他的研究團(tuán)隊(duì)提出的“Sharding(分片)”滤奈,也就是說將區(qū)塊鏈劃分成不同的部分(shards),每個(gè)部分獨(dú)立處理交易蠢甲。想要了解更多關(guān)于 Sharding 的信息僵刮,可以參考以太坊官方的 Wiki[5]据忘。
二層擴(kuò)容也稱鏈下(off-chain)擴(kuò)容,同樣非常好理解搞糕,這種擴(kuò)容方案不需要修改區(qū)塊鏈底層協(xié)議勇吊,而是通過將大量、頻繁的計(jì)算工作轉(zhuǎn)移到“鏈下”完成窍仰,并定期或在需要時(shí)將鏈下的計(jì)算結(jié)果提交到“鏈上”保證其最終性(finality)汉规。二層擴(kuò)容的核心思想是將底層區(qū)塊鏈作為共識基礎(chǔ),使用智能合約或者其它手段作為鏈下和鏈上溝通的橋梁驹吮,當(dāng)有欺詐行為發(fā)生時(shí)鏈下的用戶仍然可以回到鏈上的某一狀態(tài)针史。雖然將計(jì)算轉(zhuǎn)移到鏈下會在一段時(shí)間內(nèi)損失最終性,但這個(gè)代價(jià)是值得的碟狞,因?yàn)檫@樣做不止可以極大提高區(qū)塊鏈的靈活性和可擴(kuò)展性啄枕,也極大降低了用戶進(jìn)行交易所需要的代價(jià)。將計(jì)算轉(zhuǎn)移到鏈下也并不意味著完全放棄安全性族沃,因?yàn)樽罱K的安全性還是由底層所依賴的區(qū)塊鏈來保證频祝,因此二層擴(kuò)容主要關(guān)注的問題就在于如何保證鏈上鏈下切換過程的安全性。這種思想最早被用在閃電網(wǎng)絡(luò)(Lightning Network)當(dāng)中作為比特幣的其中一個(gè)擴(kuò)容方案脆淹,并取得了很好的效果常空。
本文所要介紹的 Plasma 就屬于基于以太坊二層擴(kuò)容方案,類似的解決方案還有 State Channels 和 Trubit盖溺。這些方案雖然面向的問題有所區(qū)別漓糙,但基本思想都是將復(fù)雜的計(jì)算轉(zhuǎn)移到鏈下進(jìn)行。那么烘嘱,接下來我們將進(jìn)入 Plasma 的世界昆禽,一窺究竟!
理解 Plasma
在前文中我們已經(jīng)明白 Plasma 是一種二層擴(kuò)容框架拙友,那么該如何進(jìn)一步理解 Plasma 是什么为狸?它區(qū)別于其它二層擴(kuò)容方案的地方在哪呢?
Plasma 也被稱為“鏈中鏈(blockchains in blockchains)”遗契。任何人都可以在底層區(qū)塊鏈之上創(chuàng)建不同的 Plasma 支持不同的業(yè)務(wù)需求辐棒,例如分布式交易所、社交網(wǎng)絡(luò)牍蜂、游戲等漾根。
<img src="https://raw.githubusercontent.com/gitferry/mastering-ethereum/master/Plasma-in-depth/images/Blockchains-of-blockchain.png" width="600" height="230" alt="Blockchains of Blockchain" />
這里可以舉一個(gè)例子來理解 Plasma。假如企鵝公司創(chuàng)建了一個(gè) Plasma Chain 叫作 Game Chain鲫竞。用戶通過向 Game Chain 發(fā)送一些以太幣換取 Token辐怕,用于購買皮膚等游戲內(nèi)的增值商品。加入 Game Chain 的操作是在鏈上進(jìn)行的从绘,以太坊區(qū)塊鏈將這部分資產(chǎn)鎖定寄疏,轉(zhuǎn)移到 Game Chain 上是牢。之后每次我們購買虛擬商品的交易就會轉(zhuǎn)移到鏈下進(jìn)行,由企鵝公司記賬陕截。這種方式幾乎跟我們現(xiàn)實(shí)生活中游戲內(nèi)購的體驗(yàn)一樣驳棱,不僅結(jié)算迅速,而且手續(xù)費(fèi)低廉(相比于以太坊之上需要給礦工支付的手續(xù)費(fèi))农曲。那么問題來了社搅,如果企鵝公司從中作祟,修改賬本乳规,惡意占有我們的資產(chǎn)怎么辦形葬?這時(shí)我們就可以提交之前每次交易的憑證到以太坊區(qū)塊鏈上,如果確實(shí)是企鵝惡意篡改了賬本暮的,那么我們不但能夠成功取回自己的資產(chǎn)笙以,還能獲得之前企鵝公司創(chuàng)建 Game Chain 存入的部分或全部押金。
通過上面這個(gè)例子是不是已經(jīng)明白 Plasma 大致是如何工作的了青扔?但上面這個(gè)例子還是過于簡單源织,只涉及用戶自己和企鵝公司翩伪。下面我們使用區(qū)塊鏈的語言對上面的例子進(jìn)行解析微猖。
首先,企鵝公司在以太坊主鏈之上創(chuàng)建了一系列智能合約作為主鏈和子鏈 Game Chain 通信的媒介缘屹。這些智能合約中不僅規(guī)定了子鏈中的一些基本的狀態(tài)轉(zhuǎn)換規(guī)則(例如如何懲罰作惡的節(jié)點(diǎn))凛剥,也記錄了子鏈中的狀態(tài)(子鏈中區(qū)塊的哈希值)。之后企鵝公司可以搭建自己的子鏈(可以用以太坊搭建一套私鏈)轻姿。子鏈實(shí)際上是一個(gè)完全獨(dú)立的區(qū)塊鏈犁珠,可以擁有專門的礦工,使用不同于主鏈的共識算法互亮,例如 PoS(Proof of Stake)等犁享。
當(dāng)子鏈創(chuàng)建完畢后,企鵝公司可以使用 ERC721 合約創(chuàng)建 token 作為游戲內(nèi)的商品(就像 Cryptokitty)豹休。但這里需要注意的是炊昆,所有數(shù)字資產(chǎn)必須在以太坊主鏈上創(chuàng)建,并通過 Plasma 子鏈的智能合約轉(zhuǎn)移到子鏈中威根。用戶也需要在主鏈上購買數(shù)字資產(chǎn)后轉(zhuǎn)移到子鏈上凤巨。在上面這個(gè)例子中,Game Chain 的智能合約將主鏈上的資產(chǎn)鎖定洛搀,之后在子鏈上生成等值的資產(chǎn)敢茁。之后用戶就可以完全脫離主鏈,在子鏈上進(jìn)行交易留美。企鵝公司在子鏈上扮演 operator 的角色彰檬,如果一切運(yùn)行正常伸刃,子鏈中的礦工會正常打包區(qū)塊,并在需要時(shí)由 operator 將區(qū)塊的哈希值提交到主鏈作為子鏈的狀態(tài)更新證明逢倍。在這個(gè)過程中奕枝,用戶完全不需要和主鏈交互。
我們可以看到瓶堕,將復(fù)雜的計(jì)算操作轉(zhuǎn)移到鏈下確實(shí)使得整個(gè)交易過程變得簡單隘道。但沒有強(qiáng)大的共識算法和龐大的參與者,資產(chǎn)在子鏈上是很不安全的郎笆。Plasma 給了我們一種避險(xiǎn)機(jī)制谭梗,即使 operator 作惡,我們也能取回屬于自己的資產(chǎn)宛蚓。下圖(來源自[1])簡單說明了這個(gè)過程激捏。圖中,在第 4 個(gè)區(qū)塊中的交易被篡改凄吏。由于 Alice 本地保存有 Plasma Chain 中所有的區(qū)塊數(shù)據(jù)远舅,因此她可以向主鏈提交一個(gè)含有“防偽證明(Fraud Proof)”的交易。如果證明生效痕钢,那么主鏈將狀態(tài)從 4 號區(qū)塊回滾到 3 號區(qū)塊图柏,一切恢復(fù)正常。Plasmas Chain 中的參與者也可以隨時(shí)提交資產(chǎn)證明任连,返回到主鏈蚤吹。
到這里我們應(yīng)該已經(jīng)理解了,Plasma 所要做的工作并不是保護(hù)子鏈的安全随抠,而是當(dāng)有安全事故發(fā)生時(shí)裁着,保證用戶可以安全地取回自己的資產(chǎn),并返回到主鏈上拱她。并且采用一系列經(jīng)濟(jì)激勵(lì)的方式減少作惡情況的發(fā)生二驰。
下一篇文章將對 Plasma 運(yùn)行過程的細(xì)節(jié)進(jìn)行剖析。
相關(guān)資源
- https://plasma.io/
- https://ethresear.ch/c/plasma
- https://medium.com/l4-media/making-sense-of-web-3-c1a9e74dcae
- https://blog.ethereum.org/2018/01/02/ethereum-scalability-research-development-subsidy-programs/
- https://github.com/ethereum/wiki/wiki/Sharding-FAQs
- https://medium.com/l4-media/making-sense-of-ethereums-layer-2-scaling-solutions-state-channels-plasma-and-truebit-22cb40dcc2f4
- https://medium.com/@argongroup/ethereum-plasma-explained-608720d3c60e
本文的作者是蓋蓋秉沼,他的微信公眾號: chainlab
深入淺出區(qū)塊鏈 - 系統(tǒng)學(xué)習(xí)區(qū)塊鏈桶雀,打造最好的區(qū)塊鏈技術(shù)博客。