相關(guān)工作
Plasma: Scalable Autonomous Smart Contracts -- [Article]
Plasma 背景
隨著區(qū)塊鏈技術(shù)的發(fā)展跷究,主鏈需要非常巨大的計算能力才能完成工作證明。如果采用集中式計算杂瘸,需要耗費相當長的時間來完成鳖目,大大降低了區(qū)塊鏈系統(tǒng)的執(zhí)行效率仪媒,以太坊的擴容問題亟待解決。分布式計算下方中央的工作藤树,將該應用分解成許多小的部分浴滴,分配給多臺計算機進行處理。這樣可以節(jié)約整體計算時間岁钓,大大提高計算效率升略。
Plasma 應運而生。作為一種以太坊擴容方案屡限,對以太坊主鏈可擴展性的提高通過將大量交易和計算下放到側(cè)鏈來實現(xiàn)品嚣。其基本思想是將所有交易都被觸及的共享賬簿區(qū)塊鏈,轉(zhuǎn)換成一個用戶可以私下交換消息的模型钧大;使用 P2P 支付渠道和 Ethereum 的存款網(wǎng)絡來保存來自區(qū)塊鏈系統(tǒng)的擔保翰撑;節(jié)點之間通信以促進傳輸,與 Ethereum 區(qū)塊鏈通信以管理存款啊央。Plasma 本質(zhì)上是一系列運行在以太坊主鏈上的智能合約眶诈,只需處理少量來自側(cè)鏈的請求,海量的交易和計算都在側(cè)鏈上完成瓜饥。不同于以太坊主鏈目前使用的 POW 共識算法逝撬,側(cè)鏈將使用 POS 等更高的共識機制。因此乓土,側(cè)鏈提供了可擴展性宪潮,而主鏈保證了安全性和去中心化。
Plasma 架構(gòu)
類似哈希表,Plasma實際上用一個“鏈中鏈”來支撐分布式擴容坎炼、以太坊的中央工作卸載。
如圖是 Plasma 架構(gòu)拦键,最底層是主區(qū)塊鏈谣光,是合約和支付的判決層,合約本身在主鏈上芬为。Plasma 鏈上包含了當前賬本的狀態(tài)萄金,可以在主鏈上清算和贖回(如果存在欺詐將允許資金的贖回)。Plasma 提供了一種鏈嵌套的結(jié)構(gòu)媚朦,實現(xiàn)資金的可擴容的存取氧敢。閃電網(wǎng)絡又基于其上,支持即時支付询张。
更詳細來說:節(jié)點自身被激勵去運行一個鏈孙乖;每個節(jié)點都可以創(chuàng)建一個自定義的 Plasma 鏈;Plasma 是一系列的智能合約份氧,允許在主鏈里有許多的區(qū)塊鏈唯袄;主鏈可以強制 Plasma 鏈中的狀態(tài),是全局計算的強制檢查者蜗帜,計算和懲罰那些存在欺詐的行為恋拷;許多的 Plasma 的區(qū)塊鏈可以并存,且有他們獨自的商業(yè)邏輯和合約術(shù)語厅缺;Plasma 將會由 EVM 智能合約組成蔬顾,并直接在以太坊上運行;Plasma 執(zhí)行次數(shù)不多湘捎,卻能代表大量計算得到的金融賬本實體诀豁。
Plasma 的核心部分由以下幾部分構(gòu)成::
- 激勵層——用于持續(xù)以優(yōu)化的價格執(zhí)行合約,樹形地組織子鏈來提高效率
- MapReduce框架——構(gòu)建一個狀態(tài)轉(zhuǎn)換的的欺詐證明
- 共識機制——嘗試構(gòu)建一個和比特幣的共識激勵類似的機制
- UTXO提交位圖——保證在主鏈下的確定的狀態(tài)轉(zhuǎn)換消痛,同時盡可能降低退出費用且叁,允許在數(shù)據(jù)不可用或者其它Byzantine行為時可以退出。
Plasma 區(qū)塊鏈
多方通道可以代表他人持有某個狀態(tài)秩伞,這個框架被稱為一個 Plasma 區(qū)塊鏈逞带。Plasma 鏈支持存取資金,通過在欺詐證明中提供狀態(tài)轉(zhuǎn)換證明纱新。
-
image
-
image
鏈中鏈
Plasma 是一系列運行在根區(qū)塊鏈(Mainnet Ethereum區(qū)塊鏈)之上的契約。根網(wǎng)絡契約只處理來自子區(qū)塊鏈的少量提交,而子區(qū)塊鏈在大多數(shù)情況下都能進行非常大的計算空入。子鏈門會把自己的提交定期地根區(qū)塊鏈廣播络它。根區(qū)塊鏈就如同是最高法院,所有下級法院都要從它那里獲得權(quán)力歪赢。并非所有數(shù)據(jù)都傳播給所有各方化戳,各方負責定期監(jiān)控他們感興趣的特定鏈,并懲罰欺詐行為埋凯。在發(fā)生攻擊時点楼,參與者可以迅速而廉價地從子鏈大量退出到根鏈。
Plasma區(qū)塊鏈層級排布在樹中白对,將會最大化數(shù)據(jù)可用性掠廓、安全性,并可以最小化成本甩恼。挖掘只在根上進行蟀瞧,并且具有充分的安全性,安全性和證明從根鏈流動条摸。
每個子區(qū)塊鏈都有它的 token 作為驗證激勵黄橘,并在其受欺詐時用做保護。一旦發(fā)現(xiàn)欺詐屈溉,就會失去其保證金塞关。
區(qū)塊轉(zhuǎn)移圖:如圖為Plasma的層級排布。參與者可以集體將其資金到其他鏈上子巾,以免其父鏈是一個欺詐鏈帆赢。當出現(xiàn)攻擊行為的時候,子區(qū)塊的提交被廣播至父鏈或者根鏈线梗。
權(quán)益證明 PoS
當我們發(fā)現(xiàn)一個區(qū)塊時椰于,我們很自然地會覺得他是最長的那條鏈,但也不是非常確定它是不是最長的仪搔。為保證它是最長的瘾婿,我們要附加自己的塊并廣播給網(wǎng)絡中的參與者,來增大它的機率烤咧。區(qū)塊扣留攻擊在這種機制中的問題被無限放大偏陪。關(guān)于區(qū)塊扣留問題的可以參考我博客的這個文章或者論文“Proof-of-Work ” Proves Not to Work version 0.2 和 Majority Is Not Enough: Bitcoin Mining Is Vulnerable。
文章中提供的解決方案是允許權(quán)益所有者在主鏈或父Plasma鏈中發(fā)布一個新區(qū)塊的提交哈希煮嫌。
- 驗證者僅會在他們完全驗證過的節(jié)點上建新的區(qū)塊笛谦,為了鼓勵最大化的信息共享,他們可以并行創(chuàng)建區(qū)塊昌阿。
- 設計了一個驗證者激勵饥脑,來讓最近100個塊與他們的當前的權(quán)益成正比(比如恳邀,如果一個節(jié)點的權(quán)益占3成,那么過去的100個塊也需要占3成)灶轰。
- 超出的費用將會進入一個池在將來支付費用谣沸。在每個塊里存在一個包含最近的100個塊(和一個nonce)的提交。
- 正確的鏈將是總權(quán)重最高的鏈笋颤,一段時間后整個鏈將會確定下來(finalize)鳄抒。
MapReduce 分治
之所以我把 Plasma 視作是一個分布式區(qū)塊鏈,主要原因還是說到了 MapReduce椰弊。我在大二云計算課上實現(xiàn)了一個關(guān)于 PageRank 算法的 Hadoop 程序,發(fā)現(xiàn)這個思想跟 MapReduce 分治如出一轍瓤鼻。
MapReduce 是一種編程模型秉版,用于大規(guī)模數(shù)據(jù)集的并行運算。概念"Map"和"Reduce"茬祷,是它們的主要思想清焕,都是從函數(shù)式編程語言里借來的,還有從矢量編程語言里借來的特性祭犯。它極大地方便了編程人員在不會分布式并行編程的情況下秸妥,將自己的程序運行在分布式系統(tǒng)上。下圖為 Plasma 的 MapReduce 模型沃粗。
節(jié)點僅僅需要關(guān)注那些它希望執(zhí)行的數(shù)據(jù)辰狡。如果經(jīng)濟行為或者計算發(fā)生在其它的 Plasma 鏈上,它不需要執(zhí)行垄分。
欺詐證明
欺詐證明(智能契約邏輯)強制執(zhí)行搓译,檢查子區(qū)塊鏈中的所有狀態(tài)。欺詐證明確保了所有狀態(tài)轉(zhuǎn)換都是有效的锋喜。此外些己,這些欺詐證明還強制執(zhí)行了一個交互式協(xié)議的資金提取豌鸡。
區(qū)塊4通過前一個塊的數(shù)據(jù)和第4個塊中的Merkel證明是欺詐的。
Alice 有所有區(qū)塊的數(shù)據(jù)段标,所以在主鏈上提交了一個欺詐證明涯冠。第4個區(qū)塊從而變得無效并回滾,無效區(qū)塊提交者失去了在智能合約中的押金從而得到了懲罰逼庞。在某些設置的時間以后蛇更,區(qū)塊將確定下來。應該通過完整的校驗區(qū)塊確保在沒有欺詐的區(qū)塊上繼續(xù)建立區(qū)塊赛糟。
Plasma 資金變動
-
Plasma 鏈上的存款
-
image
- 將貨幣或代幣發(fā)送到主鏈的 Plasma 合約立镶。
- Plasma 區(qū)塊鏈引入了一個即將到來的交易證明。
- 存款者在子 Plasma 鏈上簽名一個交易司倚,激活交易豆混。
-
image
-
-
Plasma 鏈上的狀態(tài)轉(zhuǎn)換
- Alice 希望在 Plasma 鏈上轉(zhuǎn)移他的資金給 Bob(不需要將完整的記錄提交到區(qū)塊鏈上)。她創(chuàng)建了一個交易盒粮,在 Plasma 鏈上花費她的支出鸵鸥、簽名,并廣播這個交易丹皱。
- 這個交易被 Plasma 鏈的驗證者校驗后脂男,頭部的信息會作為區(qū)塊的一部分放入父 Plasma 鏈或者主鏈,最終會被提交并打包到主鏈中种呐。
- Alice 和 Bob 觀察到了這個交易宰翅,簽名確認他們看到了這個交易和區(qū)塊。確認需要簽名同時被包含進另一個 Plasma 區(qū)塊中爽室。
-
Plasma 鏈上的取款
-
Plasma 鏈上的一般取款
- 一個簽名的取款交易被提交到根鏈或父Plasma鏈汁讼;
- 存在一個預定義超時周期用于調(diào)解糾紛;
- 存在第二個延遲來等待任何由較低的區(qū)塊確認高度的取款請求阔墩;
- (如果取款是正常行為)取款者可以在根鏈或父鏈上贖回資金嘿架。
-
Plasma 鏈上的快速取款
- 快速取款與簡單取款的構(gòu)建方式類似,但資金會發(fā)送到一個合約以進行原子交換啸箫。根鏈上被交換的資金會存在高低時間鎖耸彪。
- Alice 愿付出時間價值獲得快速取款,流動性供應商提供這個服務并與 Alice 協(xié)調(diào)一致在根鏈上進行一個取款忘苛。
- 資金被鎖定在 Plasma 特定輸出的某個合約上蝉娜。
- 雙方廣播一個在 Plasma 鏈上的交易唱较。
- 合約的條款是如果確定,那么支付就可以在 Plasma 鏈上進行召川;反之南缓,Alice 贖回自己的資金。
- 上述 Plasma 塊確定后荧呐,流動性供應商創(chuàng)建了一個鏈上合約汉形,向 Alice 收取服務收費。
-
Plasma 鏈上的大量取款(一般在退出時候發(fā)生)
- Plasma 需要用戶通過區(qū)塊扣留來檢測拜占庭行為倍阐,用戶也有責任及時的退出不正確的 Plasma 鏈概疆。主鏈上不可能探測某個區(qū)塊是否處于區(qū)塊扣留的狀態(tài),狀態(tài)轉(zhuǎn)換對于非常大的區(qū)塊和是十分昂貴的峰搪。批量退出保證了 Plasma 鏈的拜占庭行為在某個時間和鏈暫停期間岔冀,不會影響大家的資金。
- Alice 與其它人協(xié)調(diào)一致以實現(xiàn)在 Plasma 鏈上的批量退出罢艾。
- 退出的執(zhí)行者協(xié)調(diào)資金要發(fā)送到的目標鏈,且自動承諾承認資金在批量退出后尽纽,在新鏈上的資金可用性咐蚯。
- 退出的執(zhí)行者驗證了到數(shù)據(jù)還可用時的鏈數(shù)據(jù)。
- 用戶在下載所有簽名后對這個大量取款再簽一次名弄贿。
- 退出的執(zhí)行者然后會關(guān)注當前是否有其它退出交易春锋,同時移除那些可能的重復,然后簽名這個退出交易差凹,廣播交易到根鏈或者父 Plasma 鏈期奔。
- 如果出現(xiàn)重復的取款,退出的執(zhí)行者可以一個較短的寬限期內(nèi)更新位圖和余額危尿。
- 任何網(wǎng)絡中的參與者可以通過 DMET 挑戰(zhàn) MEIT 中的數(shù)據(jù)呐萌。
- 如果沒有挑戰(zhàn),那么在前述的 MEIT 的確定時間后谊娇,用戶將收到他們的資金肺孤。
-
總結(jié)與感想
隨著一些其他的以太坊擴容問題的發(fā)現(xiàn),許多方案應運而生济欢,如 Casper赠堵、Sharding、Raiden Network法褥。作為一個新穎的以太坊擴容方案茫叭,一些公司已經(jīng)宣布他們將使用 Plasma。讀完 Plasma 白皮書半等,十分佩服這個團隊的能力揍愁,同時也質(zhì)疑這個框架的“大眾友好性”呐萨,編寫一個安全可靠的智能合約將是一個艱巨的任務。
新技術(shù)帶了新挑戰(zhàn)吗垮,“鏈中鏈”這個新形式的產(chǎn)生勢必帶來很多新問題垛吗,同時推動區(qū)塊鏈技術(shù)的研究,以太坊技術(shù)問題的領(lǐng)域也將更加浩渺烁登。
參考資料
“喝水不忘挖井人”怯屉,這里感謝為我?guī)盱`感的參考:
-
中文版白皮書:
Plasma: Scalable Autonomous Smart Contracts -- [Article]
更多資源
您可以從這些地方獲得在線資源和我其他關(guān)于 Plasma 的工作:
-
初識 Plasma —— 譯自 Plasma in 10 minutes
-
Plasma —— 以太坊擴容新方案