Plasma是以太坊擴容的四大方案之一(另外三個分別是Casper耍共,Sharding和Raiden Network)脐往。前段時間調(diào)研了Plasma新博,看了很多Plasma相關(guān)的資料语稠,通過這篇文章總結(jié)一下漆弄。
什么是Plasma
Plasma對以太坊主鏈可擴展性的提高通過將大量交易和計算“下放”到側(cè)鏈來實現(xiàn)睦裳。Plasma本質(zhì)上是一系列運行在以太坊主鏈上的智能合約,只需處理少量來自側(cè)鏈的請求撼唾,大多數(shù)情況下廉邑,海量的交易和計算都在側(cè)鏈上完成。不同于以太坊主鏈目前使用的POW共識算法,側(cè)鏈將使用POS等TPS更高的共識機制鬓催。因此側(cè)鏈提供了可擴展性肺素,而主鏈保證了安全性和去中心化。形象地說宇驾,以太坊主鏈就像最高法院倍靡,不需要處理過多事務,而側(cè)鏈就是下級法院课舍,從最高法院獲得權(quán)力塌西。
舉個例子來說明一下。去年風靡一時的區(qū)塊鏈游戲“加密貓”(CryptoKitties)把以太坊網(wǎng)絡擁堵成了上下班高峰的北京三環(huán)筝尾,導致gas費用也水漲船高捡需,破壞了整個以太坊的用戶體驗。如果有了Plasma筹淫,這樣的情況就不會發(fā)生了——因為游戲可以放在側(cè)鏈上玩站辉!用戶只需要將主鏈上自己的加密貓(一種ERC721代幣)存入到Plasma合約,與此同時側(cè)鏈上會生成一個相對應的加密貓映射损姜,各項游戲操作都在側(cè)鏈上進行饰剥,側(cè)鏈上的高TPS能夠提供與現(xiàn)在的網(wǎng)絡游戲一樣流暢的用戶體驗,玩完之后再把加密貓轉(zhuǎn)移回主鏈摧阅,確保代幣財產(chǎn)的安全汰蓉。
Plasma Cash
V神在2018年3月發(fā)帖提出了一種對于Plasma MVP(Minimum Viable Product)的改良實現(xiàn)——Plasma Cash,可以大幅降低檢查每一份用戶數(shù)據(jù)的復雜度棒卷」四酰總的來說,有以下三個特點:
- 從主鏈到側(cè)鏈到每一筆代幣存入都有一個唯一的編號(coin ID)與之對應(顧名思義比规,就像cash現(xiàn)金一樣若厚,每一張鈔票都有一個序列號),存入到側(cè)鏈上的代幣無法分割也無法合并蜒什;
- 在plasma cash側(cè)鏈的區(qū)塊結(jié)構(gòu)中盹沈,不同于MVP中使用的UTXO模型,交易存儲在簡易稀疏默克爾樹或帕特里夏樹中吃谣,以該交易花費的coin ID作為索引(即默克爾路徑是coin ID乞封,最后的葉子節(jié)點是交易哈希,如下圖所示)岗憋;
- 當用戶想從側(cè)鏈上退出并把代幣轉(zhuǎn)移到主鏈時肃晚,需要提交能證明其代幣所有權(quán)的最后兩筆交易,其他用戶可以通過前/中/后三種方式來提出質(zhì)疑(challenge機制仔戈,下面會解釋)关串;
Plasma Cash側(cè)鏈的退出機制
用戶可以自由地從側(cè)鏈把存入的代幣退出并轉(zhuǎn)移回主鏈拧廊,但不排除作惡者獲取了不義之財想卷款而逃的可能性。為了保證側(cè)鏈上代幣的安全晋修,Plasma Cash在退出時加入了延時和挑戰(zhàn)機制:
我們可以把側(cè)鏈上代幣的狀態(tài)看作一個具有四種狀態(tài)的狀態(tài)機:DEPOSITED(存入)吧碾,EXITING(待退出),CHALLENGED(被挑戰(zhàn))和EXITED(已退出)墓卦。
例如倦春,當用戶U把代幣T存入側(cè)鏈后,代幣T處于DEPOSITED狀態(tài)落剪。當用戶U想退出時睁本,他可以發(fā)起startExit并附帶一筆保證金bond1,startExit操作需要引用一筆交易TxA忠怖,用以證明代幣T的所有權(quán)歸屬于用戶U呢堰,以及TxA的“直接祖先”TxB,連同這兩筆交易所在的區(qū)塊凡泣。startExit提交成功之后代幣就進入了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也有申訴的機會歉胶。此時代幣T會進入CHALLENGED狀態(tài)。如果申訴成功巴粪,保證金bond2由用戶U獲得通今,代幣T回到EXITING狀態(tài)粥谬。如果無法成功申訴,則退出請求失敗辫塌,代幣T返回初始狀態(tài)DEPOSITED漏策;
Plasma的進展
Plasma的白皮書(Plasma: Scalable Autonomous Smart Contracts)由Joseph Poon和Vitalik Buterin共同撰寫,發(fā)布于2017年8月臼氨。
Plasma的最小可行產(chǎn)品MVP于2018年1月公布掺喻,通過了概念驗證。
Plasma Cash是在2018年3月提出的一個完整的Plasma實現(xiàn)一也,主要適用于像ERC721這樣的Non-Fungible Token巢寡。
Plasma Debit實現(xiàn)目前正在研究中,將會增加對代幣分割和合并的支持椰苟。
小結(jié)
Plasma側(cè)鏈方案為以太坊可擴展性的提高提供了一種可能抑月,但同時Plasma也存在一些亟待解決的問題(比如Mass Withdrawal問題,即大量用戶同時從側(cè)鏈退出的情況)舆蝴,還需要以太坊社區(qū)進一步地驗證和完善谦絮。
參考資料: