Plasma是以太坊擴(kuò)容的四大方案之一(另外三個分別是Casper,Sharding和Raiden Network)。前段時間調(diào)研了Plasma,看了很多Plasma相關(guān)的資料,通過這篇文章總結(jié)一下。
什么是Plasma
Plasma對以太坊主鏈可擴(kuò)展性的提高通過將大量交易和計算“下放”到側(cè)鏈來實(shí)現(xiàn)。Plasma本質(zhì)上是一系列運(yùn)行在以太坊主鏈上的智能合約,只需處理少量來自側(cè)鏈的請求,大多數(shù)情況下,海量的交易和計算都在側(cè)鏈上完成。不同于以太坊主鏈目前使用的POW共識算法,側(cè)鏈將使用POS等TPS更高的共識機(jī)制。因此側(cè)鏈提供了可擴(kuò)展性,而主鏈保證了安全性和去中心化。形象地說,以太坊主鏈就像最高法院,不需要處理過多事務(wù),而側(cè)鏈就是下級法院,從最高法院獲得權(quán)力。
舉個例子來說明一下。去年風(fēng)靡一時的區(qū)塊鏈游戲“加密貓”(CryptoKitties)把以太坊網(wǎng)絡(luò)擁堵成了上下班高峰的北京三環(huán),導(dǎo)致gas費(fèi)用也水漲船高,破壞了整個以太坊的用戶體驗。如果有了Plasma,這樣的情況就不會發(fā)生了——因為游戲可以放在側(cè)鏈上玩!用戶只需要將主鏈上自己的加密貓(一種ERC721代幣)存入到Plasma合約,與此同時側(cè)鏈上會生成一個相對應(yīng)的加密貓映射,各項游戲操作都在側(cè)鏈上進(jìn)行,側(cè)鏈上的高TPS能夠提供與現(xiàn)在的網(wǎng)絡(luò)游戲一樣流暢的用戶體驗,玩完之后再把加密貓轉(zhuǎn)移回主鏈,確保代幣財產(chǎn)的安全。
Plasma Cash
V神在2018年3月發(fā)帖提出了一種對于Plasma MVP(Minimum Viable Product)的改良實(shí)現(xiàn)——Plasma Cash,可以大幅降低檢查每一份用戶數(shù)據(jù)的復(fù)雜度??偟膩碚f,有以下三個特點(diǎn):
- 從主鏈到側(cè)鏈到每一筆代幣存入都有一個唯一的編號(coin ID)與之對應(yīng)(顧名思義,就像cash現(xiàn)金一樣,每一張鈔票都有一個序列號),存入到側(cè)鏈上的代幣無法分割也無法合并;
- 在plasma cash側(cè)鏈的區(qū)塊結(jié)構(gòu)中,不同于MVP中使用的UTXO模型,交易存儲在簡易稀疏默克爾樹或帕特里夏樹中,以該交易花費(fèi)的coin ID作為索引(即默克爾路徑是coin ID,最后的葉子節(jié)點(diǎn)是交易哈希,如下圖所示);
- 當(dāng)用戶想從側(cè)鏈上退出并把代幣轉(zhuǎn)移到主鏈時,需要提交能證明其代幣所有權(quán)的最后兩筆交易,其他用戶可以通過前/中/后三種方式來提出質(zhì)疑(challenge機(jī)制,下面會解釋);
Plasma Cash側(cè)鏈的退出機(jī)制
用戶可以自由地從側(cè)鏈把存入的代幣退出并轉(zhuǎn)移回主鏈,但不排除作惡者獲取了不義之財想卷款而逃的可能性。為了保證側(cè)鏈上代幣的安全,Plasma Cash在退出時加入了延時和挑戰(zhàn)機(jī)制:
我們可以把側(cè)鏈上代幣的狀態(tài)看作一個具有四種狀態(tài)的狀態(tài)機(jī):DEPOSITED(存入),EXITING(待退出),CHALLENGED(被挑戰(zhàn))和EXITED(已退出)。
例如,當(dāng)用戶U把代幣T存入側(cè)鏈后,代幣T處于DEPOSITED狀態(tài)。當(dāng)用戶U想退出時,他可以發(fā)起startExit并附帶一筆保證金bond1,startExit操作需要引用一筆交易TxA,用以證明代幣T的所有權(quán)歸屬于用戶U,以及TxA的“直接祖先”TxB,連同這兩筆交易所在的區(qū)塊。startExit提交成功之后代幣就進(jìn)入了EXITING狀態(tài)。
如果一切順利,7天之后用戶U就可以光明正大地退出,代幣T轉(zhuǎn)為EXITED狀態(tài)。
如果中途有人質(zhì)疑,即退出請求遭遇挑戰(zhàn),則分三種情況:
- challengeAfter——另一用戶O發(fā)現(xiàn)了一筆在TxA之后的交易TxC可以證明代幣T不屬于用戶U,用戶O以此發(fā)起挑戰(zhàn),這種情況很容易得到驗證,于是用戶O贏得保證金bond1,代幣T返回DEPOSITED狀態(tài);
- challengeBetween——用戶O發(fā)現(xiàn)了一筆在TxA和TxB之間的交易TxC可以證明代幣T不屬于用戶U,用戶O以此發(fā)起挑戰(zhàn),這種情況也很容易得到驗證,于是用戶O贏得保證金bond1,代幣T返回DEPOSITED狀態(tài);
- challengeBefore——用戶O以一筆在TxB之前的交易TxC發(fā)起挑戰(zhàn),想要證明代幣T不屬于用戶U,這種情況無法立即得到驗證,所以用戶O需要附加一筆保證金bond2,而且被挑戰(zhàn)的用戶U也有申訴的機(jī)會。此時代幣T會進(jìn)入CHALLENGED狀態(tài)。如果申訴成功,保證金bond2由用戶U獲得,代幣T回到EXITING狀態(tài)。如果無法成功申訴,則退出請求失敗,代幣T返回初始狀態(tài)DEPOSITED;
Plasma的進(jìn)展
Plasma的白皮書(Plasma: Scalable Autonomous Smart Contracts)由Joseph Poon和Vitalik Buterin共同撰寫,發(fā)布于2017年8月。
Plasma的最小可行產(chǎn)品MVP于2018年1月公布,通過了概念驗證。
Plasma Cash是在2018年3月提出的一個完整的Plasma實(shí)現(xiàn),主要適用于像ERC721這樣的Non-Fungible Token。
Plasma Debit實(shí)現(xiàn)目前正在研究中,將會增加對代幣分割和合并的支持。
小結(jié)
Plasma側(cè)鏈方案為以太坊可擴(kuò)展性的提高提供了一種可能,但同時Plasma也存在一些亟待解決的問題(比如Mass Withdrawal問題,即大量用戶同時從側(cè)鏈退出的情況),還需要以太坊社區(qū)進(jìn)一步地驗證和完善。
參考資料: