您好,登錄后才能下訂單哦!
-賓夕法尼亞州的尼科爾森大橋建設(shè)照片(圖源)。羅馬人的工程原理擴(kuò)展至新的應(yīng)用
對(duì)于以太坊來(lái)說(shuō),2018年是專注底層架構(gòu)之年。今年很多早期參與者會(huì)測(cè)試網(wǎng)絡(luò)極限,并且重新關(guān)注以太坊的擴(kuò)容技術(shù)。
以太坊仍然處于起步階段。直到現(xiàn)在,它仍然沒(méi)有那么安全或者可擴(kuò)展。對(duì)于任何密切關(guān)注以太坊技術(shù)的人來(lái)說(shuō),這都是很好理解的。但在過(guò)去一年,ICO推動(dòng)的炒作已經(jīng)過(guò)分夸大了目前的網(wǎng)絡(luò)能力。以太坊和web3的美好愿景—— 一個(gè)安全,易于使用的去中心化網(wǎng)絡(luò),由一系列通用的經(jīng)濟(jì)協(xié)議來(lái)約束,并且被數(shù)十億人來(lái)使用——這個(gè)承諾希望在即,但是只有在關(guān)鍵的底層架構(gòu)完成的前提下才能實(shí)現(xiàn)。
那些正在致力于構(gòu)建以太坊的底層架構(gòu)以及擴(kuò)展其性能的項(xiàng)目通常被稱為擴(kuò)容解決方案。這些方案有很多種形式,并且常常彼此兼容或互補(bǔ)。
在這篇長(zhǎng)文中,我想深入探討某一類擴(kuò)容解決方案:“鏈下(off-chain)”或者說(shuō)“l(fā)ayer 2”解決方案。
首先,我們來(lái)總體討論下以太坊(以及所有公鏈)的擴(kuò)容挑戰(zhàn)。
其次,我們會(huì)介紹解決擴(kuò)容挑戰(zhàn)的不同方法,并且會(huì)區(qū)分“l(fā)ayer 1”和“l(fā)ayer 2”解決方案。
第三,我們會(huì)深入研究layer 2解決方案并且解釋它是如何工作的——具體來(lái)說(shuō),我們會(huì)討論狀態(tài)通道,Plasma和Truebit。
本文的重點(diǎn)是讓讀者能夠?qū)τ趌ayer 2解決方案工作原理有一個(gè)完整和詳細(xì)的概念性理解。但是我們不會(huì)深入研究代碼或特定的實(shí)施方案。反之,我們會(huì)專注于理解用來(lái)構(gòu)建這些系統(tǒng)的經(jīng)濟(jì)機(jī)制,還有一些在所有l(wèi)ayer 2擴(kuò)容技術(shù)中得以共享的共識(shí)。
首先,重要的是理解“擴(kuò)容”并不是一個(gè)單一的、特定的問(wèn)題。它指的是一系列以太坊必須要解決的挑戰(zhàn),從而以太坊才能被全球數(shù)十億人使用。
最常討論的擴(kuò)容挑戰(zhàn)是交易吞吐量問(wèn)題。目前,以太坊每秒可以處理大約15筆交易,而相比而言Visa的處理能力大約為45,000/tps。在過(guò)去一年,一些應(yīng)用例如以太貓,或者偶發(fā)的ICO,都足夠火爆,能讓以太坊網(wǎng)絡(luò)“降速”并且會(huì)提高交易費(fèi)用(gas)。
像以太坊這種公鏈的關(guān)鍵限制在于,每一筆交易都需要被網(wǎng)絡(luò)中的每一個(gè)節(jié)點(diǎn)處理。以太坊區(qū)塊鏈上的每個(gè)操作,一筆交易,以太貓的誕生,部署新的 ERC20 合約,每一個(gè)發(fā)生在以太坊區(qū)塊鏈上的操作都必須由網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)并行處理。這是設(shè)計(jì)理念決定的,它是保證公鏈權(quán)威性的一部分。節(jié)點(diǎn)們不用依賴其他節(jié)點(diǎn)來(lái)告訴它們,區(qū)塊鏈的當(dāng)前狀態(tài)是什么,它們自己就能搞清楚。
這就從根本上給以太坊網(wǎng)絡(luò)的交易吞吐量造成了限制:它不能高于我們對(duì)單個(gè)節(jié)點(diǎn)所要求的交易吞吐量。
我們可以讓每個(gè)節(jié)點(diǎn)去承擔(dān)更多工作。如果我們將區(qū)塊的大小加倍(也就是區(qū)塊的gas值限制),也就意味著每個(gè)節(jié)點(diǎn)處理每個(gè)區(qū)塊的工作量大致是之前的兩倍。但是這就帶來(lái)了影響去中心化的代價(jià)問(wèn)題:節(jié)點(diǎn)需要做更多工作意味著低性能的計(jì)算機(jī)(例如消費(fèi)級(jí)設(shè)備)可能會(huì)退出以太坊網(wǎng)絡(luò),如果算力集中在高性能節(jié)點(diǎn)運(yùn)營(yíng)者手中,挖礦就變得非常中心化。
所以,我們需要找到讓區(qū)塊鏈能夠在不提高單個(gè)節(jié)點(diǎn)工作量的情況下,負(fù)擔(dān)更多有用工作的方法。
從概念上來(lái)說(shuō),有兩種方法可以解決這個(gè)問(wèn)題:
第一種方法和我們預(yù)設(shè)的前提不同,如果我們構(gòu)建一個(gè)區(qū)塊鏈,其中每個(gè)節(jié)點(diǎn)不需要都去處理每個(gè)操作會(huì)怎么樣?如果網(wǎng)絡(luò)被分成兩部分,它們還可以半獨(dú)立的進(jìn)行操作,又會(huì)怎么樣?
A部分可以處理一批交易,同時(shí)B部分可以處理另一批交易。這樣就可以有效地使區(qū)塊鏈的交易吞吐量翻倍,因?yàn)槲覀兊南拗片F(xiàn)在能夠被兩個(gè)部分同時(shí)處理。如果我們將區(qū)塊鏈分為很多不同的部分,那么我們就可以把區(qū)塊鏈的吞吐量提高很多倍。
這就是“分片”技術(shù)背后的見(jiàn)解,“分片”是由Vitalik的以太坊研究團(tuán)隊(duì)和其他社群提出的擴(kuò)容解決方案。區(qū)塊鏈被分成很多部分,它們被稱為“分片”,每個(gè)分片都可以獨(dú)立地處理交易。分片通常被稱為是“layer 1”擴(kuò)容解決方案,因?yàn)檫@是在以太坊底層協(xié)議上實(shí)現(xiàn)的。如果您想了解有關(guān)分片的更多內(nèi)容,我建議您閱讀extensive FAQ和這篇博文。
第二種選擇是從反方向進(jìn)行考慮的:并不是提高以太坊區(qū)塊鏈本身的能力,如果我們可以利用已有的能力做更多的事情,會(huì)怎么樣呢?底層以太坊區(qū)塊鏈的吞吐量是相同的,但是實(shí)際上我們可以做更多對(duì)于人們和應(yīng)用程序有用的操作,例如交易,游戲中的狀態(tài)更新,或是簡(jiǎn)單的計(jì)算。
這就是類似狀態(tài)通道,Plasma和Truebit等“鏈下”技術(shù)背后的見(jiàn)解。當(dāng)然,這些技術(shù)都在解決不同的問(wèn)題,但它們都是通過(guò)“鏈下”操作,而不是在以太坊區(qū)塊鏈上進(jìn)行操作,同時(shí)仍然保證了足夠的安全性和不可更改性。
這些也被稱為“layer 2”解決方案,因?yàn)樗鼈兪菢?gòu)建在太坊主鏈“之上”的。他們不需要更改底層協(xié)議,他們只是以基于以太坊的智能合約的形式存在,與鏈下的軟件進(jìn)行交互。
###2.layer 2擴(kuò)容解決方案是加密經(jīng)濟(jì)解決方案
在深入了解具體的layer 2擴(kuò)容解決方案前,了解使得他們可行的底層概念是非常重要的。
支撐公有鏈最基礎(chǔ)的動(dòng)力源泉就是加密經(jīng)濟(jì)共識(shí)。通過(guò)仔細(xì)協(xié)調(diào)激勵(lì)機(jī)制以及通過(guò)軟件和加密算法對(duì)激勵(lì)進(jìn)行保障,我們就可以創(chuàng)建對(duì)于系統(tǒng)內(nèi)部狀態(tài)達(dá)成共識(shí)的可靠計(jì)算機(jī)網(wǎng)絡(luò)。這就是中本聰白皮書中的關(guān)鍵見(jiàn)解,并且這種見(jiàn)解現(xiàn)在也被應(yīng)用在許多不同公鏈的設(shè)計(jì)中,包括比特幣和以太坊。
加密經(jīng)濟(jì)共識(shí)給予我們一個(gè)確定性的核心——除非有極端事件例如51%×××發(fā)生,否則我們都知道鏈上操作——例如支付或者智能合約,會(huì)像寫定的那樣執(zhí)行。
在layer 2解決方案背后的見(jiàn)解,就是我們可以把核心內(nèi)核的確定性作為錨定——我們附加其他經(jīng)濟(jì)機(jī)制的一個(gè)固定點(diǎn)。 第二層的經(jīng)濟(jì)機(jī)制可以向外擴(kuò)展公鏈的效用,讓我們能夠進(jìn)行鏈下交互,如果有需要的話,仍然可以可靠地轉(zhuǎn)回到核心內(nèi)核上。
這些構(gòu)建在以太坊底層“之上”區(qū)塊鏈層,并不總是與鏈上操作具有相同的保障。但是它們?nèi)匀挥?em>足夠的不可更改性和安全性,所以仍然是非常有用的。尤其是當(dāng)不可更改性的要求略微下降時(shí),我們能以更快的速度或更低的開(kāi)銷來(lái)進(jìn)行操作。
加密經(jīng)濟(jì)并不是隨著中本聰?shù)陌灼_(kāi)始和結(jié)束,它只是一種我們正在學(xué)著應(yīng)用的技術(shù)。加密經(jīng)濟(jì)不僅體現(xiàn)在對(duì)于核心協(xié)議的設(shè)計(jì),還體現(xiàn)在對(duì)于第二層系統(tǒng)的設(shè)計(jì),其擴(kuò)展了底層區(qū)塊鏈的功能性。
狀態(tài)通道(State Channel)是一種用于執(zhí)行交易和其他狀態(tài)更新的“鏈下(off-chain)”技術(shù)。但是,一個(gè)狀態(tài)通道“內(nèi)”發(fā)生的事務(wù)仍保持了很高的安全性和不可更改性。如果出現(xiàn)任何問(wèn)題,我們?nèi)匀豢梢?em>選擇回溯到鏈上交易中確定的“穩(wěn)定內(nèi)核”。
大部分讀者會(huì)對(duì)支付通道(payment channel)比較熟悉,這一概念已存在多年了,并且最近通過(guò)閃電網(wǎng)絡(luò)(lightning network)部署在了比特幣上。狀態(tài)通道是支付通道泛化出來(lái)的形式,它們不僅可用于支付,還可用于在區(qū)塊鏈上進(jìn)行任意的“狀態(tài)更新”,就像在智能合約內(nèi)部進(jìn)行更改一樣。 2015 年,Jeff Coleman 第一次詳細(xì)介紹了狀態(tài)通道。
解釋狀態(tài)通道的運(yùn)作方式的最佳方法就是來(lái)看一個(gè)樣例。請(qǐng)記住這是一個(gè)概念性的解釋,也就是說(shuō)我們不會(huì)涉及具體實(shí)現(xiàn)的技術(shù)細(xì)節(jié)。
現(xiàn)在設(shè)想Alice和Bob想玩一場(chǎng)井字游戲,勝者可以獲得一個(gè)eth。為了實(shí)現(xiàn)這一目標(biāo),最簡(jiǎn)單的方法就是在以太坊上創(chuàng)建一個(gè)智能合約,它可以實(shí)現(xiàn)井字游戲規(guī)則并跟蹤每個(gè)玩家的動(dòng)作。每次玩家想要移動(dòng)時(shí),他們都會(huì)向合約發(fā)送一個(gè)交易。當(dāng)一名玩家獲勝時(shí),根據(jù)規(guī)則描述,合約會(huì)付給勝者一個(gè)eth。
這樣做是可行的,但是效率低下并且速度很慢。Alice和Bob正在讓整個(gè)以太坊網(wǎng)絡(luò)處理他們的游戲過(guò)程,這對(duì)于他們的需求來(lái)說(shuō)有點(diǎn)過(guò)于夸張。玩家每想要移動(dòng)一步都需要支付gas費(fèi)用,并且還要在進(jìn)行下一步移動(dòng)之前等待區(qū)塊打包。
但是,我們可以設(shè)計(jì)一個(gè)新的系統(tǒng),它能使Alice和Bob在玩井字游戲時(shí)產(chǎn)生盡可能少的鏈上操作。 Alice和Bob能夠以鏈下的方式更新游戲狀態(tài),同時(shí)又很確定計(jì)算結(jié)果在需要時(shí)仍能將其恢復(fù)到以太坊主鏈上驗(yàn)證。我們把這個(gè)系統(tǒng)稱之為“狀態(tài)通道”。
首先,我們?cè)谝蕴恢麈溕蟿?chuàng)建一個(gè)能夠理解井字游戲規(guī)則的智能合約“Judge”,同時(shí)它也能夠確認(rèn)Alice和Bob是我們游戲中的兩位玩家。該合約持有一個(gè)eth的獎(jiǎng)勵(lì)。
然后,Alice和Bob開(kāi)始玩游戲。Alice創(chuàng)建并簽署一個(gè)交易,它描述了她游戲的第一步,然后將其發(fā)送給Bob,Bob也對(duì)交易簽了名,再將簽名后的版本發(fā)回并為自己保留一份副本。然后Bob也創(chuàng)建并簽署一個(gè)描述他游戲中第一步的交易,并發(fā)送給Alice,她也會(huì)對(duì)交易簽名,再將其發(fā)回,并保留一份副本。每一次,他們都會(huì)這樣互相更新游戲的當(dāng)前狀態(tài)。每一筆交易都包含一個(gè)“隨機(jī)數(shù)”,這樣就使我們可以直接知道游戲中移動(dòng)的順序。
到目前為止,還沒(méi)有發(fā)生任何鏈上的操作。Alice和Bob只是通過(guò)互聯(lián)網(wǎng)向彼此發(fā)送交易,還沒(méi)有任何東西傳達(dá)到區(qū)塊鏈上。但是,所有交易都可以發(fā)送給 Judge 合約,換句話說(shuō),它們是有效的以太坊交易。你可以把這看作兩人彼此來(lái)回填寫了一系列經(jīng)過(guò)區(qū)塊鏈認(rèn)證的支票。實(shí)際上,并沒(méi)有錢從銀行中存入或取出,但是每人都有一堆可以隨時(shí)存入的支票。
當(dāng)Alice和Bob結(jié)束游戲時(shí)(可能是因?yàn)锳lice贏了),他們可以通過(guò)向 Judge 合約提交最終狀態(tài)(比如,交易列表)來(lái)關(guān)閉該通道,這樣就只需要付一次交易費(fèi)用。Judge合約會(huì)確定雙方都對(duì)這個(gè)“最終狀態(tài)”簽名,并等待一段時(shí)間來(lái)確保沒(méi)人會(huì)對(duì)結(jié)果提出合理質(zhì)疑,然后向Alice支付一個(gè)eth的獎(jiǎng)勵(lì)。
為什么我們需要設(shè)置讓 Judge 合約等待一下的”質(zhì)疑時(shí)間“?
想象Bob并沒(méi)有給 Judge 合約發(fā)送真實(shí)的最終狀態(tài),而是發(fā)送一份之前他贏了Alice的狀態(tài)。但是 Judge 僅僅是一份合約,它本身無(wú)法知曉這是否是最新的狀態(tài)。
而質(zhì)疑時(shí)間給了Alice一個(gè)機(jī)會(huì)向 Judge 合約證明Bob對(duì)游戲最終狀態(tài)撒了謊。如果有更近期的狀態(tài),她就會(huì)有一份已簽名交易的副本,并且可以將其提供給 Judge合約。Judge 合約可以通過(guò)檢查隨機(jī)數(shù)來(lái)判斷Alice的版本是否是最新的,然后駁回Bob竊取勝利的企圖。
特性和限制
狀態(tài)通道在許多應(yīng)用中都很有用,它們對(duì)于在鏈上執(zhí)行操作進(jìn)行了嚴(yán)密的改進(jìn)。但重要的是要注意,在決定應(yīng)用程序是否適合被通道化時(shí),需要做出一些特定的權(quán)衡:
我們 L4 團(tuán)隊(duì)正致力于創(chuàng)建 Counterfactual框架:一個(gè)能在以太坊上推廣普及使用狀態(tài)通道的框架。我們的總體目標(biāo)是使開(kāi)發(fā)者可以在他們的應(yīng)用程序中以模塊化的方式使用狀態(tài)通道,而不需要成為狀態(tài)通道的專家。你可以在這里了解更多該項(xiàng)目的信息。我們將在 2018 年的第一季度發(fā)布技術(shù)細(xì)節(jié)文件。
另一個(gè)值得注意的針對(duì)以太坊的狀態(tài)通道項(xiàng)目是 Raiden,該項(xiàng)目目前正致力于構(gòu)建一個(gè)支付通道網(wǎng)絡(luò),使用了和閃電網(wǎng)絡(luò)類似的范式。這意味著你不必與想要交易的特定人員開(kāi)通狀態(tài)通道。你可以與一個(gè)連接到更大型通道網(wǎng)絡(luò)的實(shí)體架設(shè)一個(gè)單獨(dú)的通道,這樣你就能夠向連接到同一網(wǎng)絡(luò)的任何人支付而無(wú)需額外費(fèi)用。
除了 Counterfactual 和 Raiden,在以太坊上還有幾個(gè)用于特定于應(yīng)用程序的狀態(tài)通道。例如,F(xiàn)unfair 就為他們的去中心化×××構(gòu)建了他們稱之為“Fate channels”的狀態(tài)通道,SpankChain 為成人產(chǎn)業(yè)演員構(gòu)建了一套單向支付通道(他們還為其 ICO 使用了狀態(tài)通道),還有 Horizon Games 也在他們的第一款基于以太坊的游戲中使用了狀態(tài)通道。
2017 年 8 月 11 日,Vitalik Buterin 和 Joseph Poon 發(fā)表了一篇題為《Plasma:自主智能合約》( Plasma: Autonomous Smart Contracts)的論文。這份論文介紹了一種新技術(shù),它能使以太坊每秒可以處理的交易遠(yuǎn)比現(xiàn)在更多。
就像狀態(tài)通道一樣,Plasma 是一種管理鏈下交易的技術(shù),同時(shí)依靠底層的以太坊區(qū)塊鏈來(lái)實(shí)現(xiàn)其安全性。但是 Plasma 采用了一種新思路,它是通過(guò)創(chuàng)建依附于以太坊“主”區(qū)塊鏈的“子”區(qū)塊鏈。這些子鏈又可以相應(yīng)地產(chǎn)生它們自己的子鏈,子鏈的子鏈又可以產(chǎn)生子鏈,如此遞進(jìn)下去。
其結(jié)果就是,我們可以在子鏈級(jí)別上執(zhí)行許多復(fù)雜的操作,在與以太坊主鏈保持最低限度交互的情況下,運(yùn)行擁有數(shù)千名用戶的整個(gè)應(yīng)用程序。Plasma 子鏈可以更快地操作,承擔(dān)的交易費(fèi)用更低,因?yàn)樽渔溕系牟僮鳠o(wú)需在整個(gè)以太坊區(qū)塊鏈上進(jìn)行重復(fù)。
-plasma.io/plasma.pdf -
為了弄清楚 Plasma 的運(yùn)行原理,我們來(lái)看一個(gè)如何使用它的樣例。
讓我們?cè)囅肽阏趧?chuàng)建一個(gè)基于以太坊的集換式卡牌游戲。這些卡牌是一些基于 ERC 721 不可替代的token(比如 Cryptokitties),但是擁有一些特定的特征和屬性,可以讓玩家相互對(duì)戰(zhàn)——就像爐石傳說(shuō)或者萬(wàn)智牌一樣。這種復(fù)雜操作在鏈上執(zhí)行的成本很高,所以你決定在你的應(yīng)用程序中使用 Plasma 作為替代方案。
首先,我們?cè)谝蕴恢麈溕蟿?chuàng)建一系列的智能合約,它們可作為 Plasma 子鏈的“根節(jié)點(diǎn)”。Plasma 根節(jié)點(diǎn)包含了子鏈的基本“狀態(tài)交易規(guī)則”(諸如“交易無(wú)法消費(fèi)已消費(fèi)過(guò)的資產(chǎn)”),也記錄了子鏈狀態(tài)的哈希值,并建立一種允許用戶在以太坊主鏈和子鏈間轉(zhuǎn)移資產(chǎn)的“橋接”服務(wù)。
然后,創(chuàng)建我們的子鏈。子鏈可以擁有自己的共識(shí)算法,在這個(gè)例子中,我們假設(shè)它使用了 PoA(Proof of Authority),POA是一種依賴于可信區(qū)塊生產(chǎn)者(比如,驗(yàn)證者)的簡(jiǎn)單共識(shí)機(jī)制。在“工作量證明”系統(tǒng)中,區(qū)塊生產(chǎn)者與 POW 系統(tǒng)中的礦工類似,它們是接收交易,形成區(qū)塊并收取交易費(fèi)用的節(jié)點(diǎn)。為了讓樣例簡(jiǎn)單點(diǎn),假設(shè)你(也就是創(chuàng)建游戲的公司)是創(chuàng)建區(qū)塊的唯一實(shí)體,即你的公司運(yùn)行著幾個(gè)節(jié)點(diǎn),這些節(jié)點(diǎn)就是子鏈的區(qū)塊生產(chǎn)者。
一旦子鏈創(chuàng)建并激活,區(qū)塊生產(chǎn)者會(huì)定期的向根節(jié)點(diǎn)合約進(jìn)行提交。這意味著他們實(shí)際上在說(shuō)“我提交的 X 是子鏈中當(dāng)前最新的區(qū)塊”。這些提交被當(dāng)做子鏈中事務(wù)的證明,鏈上記錄在 Plasma 根節(jié)點(diǎn)里。
現(xiàn)在子鏈已經(jīng)準(zhǔn)備好了,我們可以創(chuàng)建集換式卡牌游戲的基本組件。這些卡片是基于 ERC721,在以太坊主鏈上初始化,然后由 Plasma 根節(jié)點(diǎn)轉(zhuǎn)移到子鏈上。這里引入了一個(gè)關(guān)鍵點(diǎn):Plasma 可以擴(kuò)展我們與基于區(qū)塊鏈的數(shù)字資產(chǎn)的交互,但是這些資產(chǎn)應(yīng)當(dāng)首先創(chuàng)建在以太坊主鏈上。然后,我們將實(shí)際的游戲應(yīng)用程序以智能合約的方式部署到子鏈上,這樣子鏈就包含了游戲所有的邏輯和規(guī)則。
當(dāng)用戶想要玩我們的游戲時(shí),他們只需要和子鏈交互。他們可以持有資產(chǎn)(ERC721 卡牌),可以為了以太幣購(gòu)買并交換它們,可以與其他用戶對(duì)戰(zhàn),還有其他任何游戲中允許的行為,而這些行為都不需要與主鏈直接交互。因?yàn)橹挥泻苌俚墓?jié)點(diǎn)(比如,區(qū)塊生產(chǎn)者)才需要處理交易,所以交易費(fèi)會(huì)很低,操作也能更快。
但是這種模式安全嗎?
通過(guò)把更多操作從主鏈遷移到子鏈上,很明顯我們可以執(zhí)行更多的操作了。但是這樣安全嗎?發(fā)生在子鏈上的交易是否具備權(quán)威性?畢竟,我們方才描述的系統(tǒng)只有一個(gè)中心實(shí)體控制著子鏈的區(qū)塊生產(chǎn)。這樣不是中心化嗎?這樣公司不是隨時(shí)都能竊取你的資產(chǎn)或者拿走你收集的卡牌嗎?
簡(jiǎn)而言之,即使是在子鏈中單個(gè)實(shí)體完全控制所有區(qū)塊生產(chǎn)的情況下,Plasma 也為你提供了一個(gè)基本保證,即你始終都可以將你的資金和資產(chǎn)退回到主鏈上。如果一個(gè)區(qū)塊生產(chǎn)者開(kāi)始惡意行事,最壞的情況也僅僅是強(qiáng)迫你離開(kāi)這個(gè)子鏈。
讓我們了解一下區(qū)塊生產(chǎn)者能惡意行為的幾種方式,同時(shí)了解 Plasma 會(huì)如何處理這些情況。
首先,想象一個(gè)區(qū)塊生產(chǎn)者試圖通過(guò)說(shuō)謊欺騙你,他們可以通過(guò)創(chuàng)建一個(gè)偽造的新區(qū)塊,聲稱你的資金被他們控制了。由于他們是唯一的區(qū)塊生產(chǎn)者,所以他們可以自由引入一個(gè)并不遵循我們區(qū)塊鏈規(guī)則的新區(qū)塊。就像其他區(qū)塊一樣,他們也得將這個(gè)區(qū)塊存在的證據(jù)提交給 Plasma 根節(jié)點(diǎn)合約。
如上所述,用戶有能將他們的資產(chǎn)隨時(shí)退回到主鏈上的最終保障。在這個(gè)情景下,用戶(或者更確切來(lái)說(shuō)是代表他們權(quán)益的應(yīng)用程序)會(huì)偵測(cè)到這種盜竊的企圖,并在區(qū)塊生產(chǎn)者嘗試和使用他們“偷到”的資產(chǎn)之前把自己的資產(chǎn)撤回到主鏈上。
Plasma 還創(chuàng)建了一種機(jī)制,防止欺詐時(shí)不能退回到主鏈上。Plasma 包含了一種機(jī)制,任何人(包括你)都可以向根節(jié)點(diǎn)合約發(fā)布欺詐證明(fraud proof),試圖證明區(qū)塊生產(chǎn)者作弊。這個(gè)欺詐證明會(huì)包含之前區(qū)塊的信息,并且允許我們證明,根據(jù)子鏈中的交易狀態(tài)規(guī)則,這個(gè)錯(cuò)誤的區(qū)塊并不能正確接上之前的狀態(tài)。如果欺詐被證實(shí),那么子鏈就會(huì)“回滾”到前一個(gè)區(qū)塊。更妙的是,我們還構(gòu)建了一種體系:任何簽出錯(cuò)誤區(qū)塊的區(qū)塊生產(chǎn)者會(huì)被處罰,他們會(huì)因此丟失鏈上的保證金。
plasma.io/plasma.pdf
但是提交欺詐證明需要訪問(wèn)底層數(shù)據(jù),即需要用之前的實(shí)際區(qū)塊歷史來(lái)證明欺詐。如果區(qū)塊生產(chǎn)者為了防止Alice向根節(jié)點(diǎn)合約提交欺詐證明,而并沒(méi)有共享之前區(qū)塊的信息的話,那怎么辦?
在這種情況下,Alice的解決方案就是收回資產(chǎn)并脫離子鏈。本質(zhì)上說(shuō),愛(ài)麗絲向根節(jié)點(diǎn)合約提交了一份“欺詐證明”。在一段延遲期內(nèi),任何人都可以質(zhì)疑該證明(比如,展示后面的合法區(qū)塊證明實(shí)際上她消費(fèi)了這些資產(chǎn))。之后,Alice的資產(chǎn)將會(huì)被移回到以太坊主鏈上。
plasma.io/plasma.pdf
最后,區(qū)塊生產(chǎn)者可以審查子鏈中的用戶。如果區(qū)塊生成者愿意,他們可以直接不在其區(qū)塊中包含特定交易,從而有效阻止用戶在子鏈上執(zhí)行的任何操作。如上所述,解決方案僅僅是把我們所有的資產(chǎn)退回到以太坊主鏈上就可以了。
但是,資產(chǎn)退回本身也會(huì)帶來(lái)風(fēng)險(xiǎn)。其中一個(gè)問(wèn)題就是如果所有使用這一子鏈的用戶同時(shí)都要退回資產(chǎn)會(huì)怎么樣。在這種大量提現(xiàn)的情況下,以太坊主鏈可能沒(méi)有足夠的容量來(lái)處理每個(gè)人在質(zhì)疑期內(nèi)的交易,也就意味著用戶可能會(huì)丟失資金。盡管有許多可能的技術(shù)能夠防止這種情況發(fā)生,例如,通過(guò)延長(zhǎng)質(zhì)疑時(shí)間的方式來(lái)響應(yīng)資產(chǎn)退回的需求。
值得注意的是,并不是所有的塊生產(chǎn)者都必定被一個(gè)實(shí)體所控制——這只是我們案例中的極端個(gè)例。我們可以創(chuàng)建子鏈,把區(qū)塊生產(chǎn)者分布在許多不同實(shí)體間,即像公有鏈一樣真正地去中心化。在這種情況下,區(qū)塊生產(chǎn)者如上述方式進(jìn)行干預(yù)的風(fēng)險(xiǎn)更小,而用戶不得不將資產(chǎn)轉(zhuǎn)移回以太坊主鏈的風(fēng)險(xiǎn)也更小。
現(xiàn)在我們已經(jīng)介紹了狀態(tài)通道和 Plasma,以下幾點(diǎn)對(duì)比值得注意。
它們之間一個(gè)不同之處在于,當(dāng)狀態(tài)通道中所有參與方都一致同意退回資產(chǎn)時(shí),狀態(tài)通道可以立即執(zhí)行退回。如果Alice和Bob同意關(guān)閉通道并撤回他們的資金。只要他們都認(rèn)同最終狀態(tài),他們就可以立即從狀態(tài)通道取得他們的資產(chǎn)。這在 Plasma 上是不可能的,如上所述,用戶在取出資產(chǎn)的過(guò)程中必須經(jīng)歷一個(gè)質(zhì)疑時(shí)間。
與 Plasma 相比,狀態(tài)通道每筆交易的平均交易費(fèi)更便宜,而且速度更快。這意味著我們應(yīng)該可以在 Plasma 子鏈上構(gòu)建狀態(tài)通道。例如,一個(gè)應(yīng)用程序中兩個(gè)用戶在進(jìn)行一系列的小型交易。在子鏈級(jí)別構(gòu)建狀態(tài)通道應(yīng)該會(huì)比直接在子鏈上執(zhí)行每個(gè)交易更加便宜和迅速。
最后,需要注意的是這些只是部分描述,我們還遺漏了許多細(xì)節(jié)。Plasma 本身還處于非常早期的階段。如果你有興趣了解 更多關(guān)于 Plasma 的現(xiàn)狀,可以查看 Vitalik 最近的一個(gè)關(guān)于 “最小化可行性Plasma(Minimal Viable plasma)” 的提議(即精簡(jiǎn)的 plasma 實(shí)施方案)。一個(gè)臺(tái)灣的團(tuán)隊(duì)正在進(jìn)行這項(xiàng)工作,可以在這個(gè)代碼庫(kù)中查看。OmiseGo 正在研究他們的去中心化交易的實(shí)施,他們?cè)谶@里發(fā)布了進(jìn)度最近更新信息。
####III. Truebit
Truebit 是一種幫助以太坊在鏈下進(jìn)行繁重或復(fù)雜計(jì)算的技術(shù)。這使得它與狀態(tài)通道和Plasma不同,它們對(duì)于提高以太坊區(qū)塊鏈的總交易吞吐量更有用。正如我們?cè)陂_(kāi)篇部分所討論的那樣,擴(kuò)容是一個(gè)多方面的挑戰(zhàn),需要的不僅僅是更高的交易吞吐量。Truebit不會(huì)讓我們完成更多的交易,但它能讓基于以太坊的應(yīng)用程序去處理更復(fù)雜的事務(wù),并且仍能被主鏈驗(yàn)證。
這就讓我們能夠?qū)σ蕴粦?yīng)用程序做一些有用的操作,這些操作的計(jì)算成本太高,無(wú)法在鏈上執(zhí)行。例如,驗(yàn)證來(lái)自其他區(qū)塊鏈的簡(jiǎn)單支付驗(yàn)證(SPV)證明,這個(gè)證明可以讓以太坊智能合約“檢查”交易是否在另一個(gè)鏈上已經(jīng)發(fā)生(如比特幣或狗狗幣)。
讓我們看一個(gè)例子。試想你有一些代價(jià)很高的計(jì)算(比如 SPV 證明)需要作為以太坊應(yīng)用程序的一部分來(lái)執(zhí)行。你不能單純的把它當(dāng)做以太坊主鏈上智能合約的一部分,因?yàn)镾PV證明的計(jì)算成本是非常昂貴的。請(qǐng)記住,因?yàn)槊總€(gè)節(jié)點(diǎn)都要并行處理這種操作,所以在以太坊上直接進(jìn)行任何計(jì)算都是非常昂貴的,。以太坊的區(qū)塊有最大費(fèi)用(gas值)限制,從而為該區(qū)塊中所有交易能執(zhí)行的計(jì)算總量設(shè)置了上限。但是SPV證明的計(jì)算成本實(shí)在太大,即使它是區(qū)塊中唯一的交易,它需要的gas值也是單個(gè)區(qū)塊gas值上限的許多倍。
相反,鏈下你可以只需要向人支付很少的費(fèi)用來(lái)完成計(jì)算。去完成計(jì)算并由你付費(fèi)的這個(gè)人被稱作解算者(solver)。
首先,解算者支付智能合約中的保證金。然后,你給解算者一份他們需要計(jì)算內(nèi)容的描述,它們運(yùn)行計(jì)算,并返回結(jié)果。如果結(jié)果是正確的(大多在一秒鐘內(nèi)),他們的保證金將被退回。如果事實(shí)證明,解算者并沒(méi)有正確地執(zhí)行計(jì)算——比如他們欺詐或犯了錯(cuò)誤——他們就會(huì)失去他們的保證金。
但是我們?nèi)绾闻袛嘟Y(jié)果是正確的還是錯(cuò)誤的?Truebit使用一種叫做“驗(yàn)證游戲”(verification game)的經(jīng)濟(jì)機(jī)制。從本質(zhì)上講,我們?yōu)槠渌环Q為挑戰(zhàn)者的參與方創(chuàng)造了激勵(lì),來(lái)檢查解算者的工作。如果挑戰(zhàn)者能夠通過(guò)驗(yàn)證游戲證明解算者提交了錯(cuò)誤結(jié)果,那么他們會(huì)獲得獎(jiǎng)勵(lì),而解算者則會(huì)失去保證金。
因?yàn)轵?yàn)證游戲是在鏈上執(zhí)行的,所以它不能直接地計(jì)算結(jié)果(這會(huì)破壞整個(gè)系統(tǒng)的設(shè)計(jì)初衷——如果我們可以在鏈上進(jìn)行計(jì)算,我們就不需要Truebit)。相反,我們強(qiáng)迫解算者和挑戰(zhàn)者確定他們意見(jiàn)不一致的具體操作。實(shí)際上,我們將雙方逼入一個(gè)死角——找到導(dǎo)致他們對(duì)結(jié)果意見(jiàn)不一的具體代碼行。
一旦確定了具體的操作,實(shí)際上它就足夠小到可以由以太坊主鏈執(zhí)行了。然后,我們通過(guò)以太坊的智能合約執(zhí)行該操作,該合約一勞永逸地解決了哪一方說(shuō)了真話,哪些又是謊言或錯(cuò)誤。
如果您想了解更多有關(guān)Truebit的信息,你可以閱讀這篇論文,或者閱讀Simon de la Rouviere的博客文章。
###結(jié)論
layer 2解決方案都有一個(gè)共同見(jiàn)解:一旦我們有了公鏈提供的有確定性的核心,我們就可以把它作為加密經(jīng)濟(jì)系統(tǒng)的錨定,然后擴(kuò)展區(qū)塊鏈應(yīng)用的可用性。
現(xiàn)在我們已經(jīng)研究了一些示例,我們可以更具體地了解layer 2解決方案如何應(yīng)用這種見(jiàn)解。layer 2解決方案所使用的經(jīng)濟(jì)機(jī)制往往是互動(dòng)游戲:它們通過(guò)為各參與方創(chuàng)造激勵(lì)來(lái)相互競(jìng)爭(zhēng)或彼此“檢查”工作。區(qū)塊鏈應(yīng)用程序可以假設(shè)某個(gè)給定的聲明可能是真的,因?yàn)槲覀円呀?jīng)為另一方創(chuàng)造了強(qiáng)烈的激勵(lì)來(lái)提供證明其錯(cuò)誤的信息。
在狀態(tài)通道方案中,就是通過(guò)給各方機(jī)會(huì)互相“反駁”,來(lái)確定通道的最終狀態(tài)。在Plasma方案中,就是如何管理欺詐證據(jù)和提現(xiàn)的方法。在Truebit方案中,我們通過(guò)激勵(lì)挑戰(zhàn)者來(lái)證明解算者是錯(cuò)誤的,以確保解算者給出真實(shí)結(jié)果。
這些系統(tǒng)將有助于解決將以太坊擴(kuò)展到龐大的全球用戶群所涉及的一些挑戰(zhàn)。有些系統(tǒng),像狀態(tài)通道和Plasma,將會(huì)增加平臺(tái)的交易吞吐量。而其他的系統(tǒng),像Truebit,可以將更困難的計(jì)算作為智能合約的一部分,從而開(kāi)創(chuàng)新的使用案例。
這三個(gè)示例僅代表了加密經(jīng)濟(jì)擴(kuò)容解決方案設(shè)計(jì)可能性的一小部分。我們甚至沒(méi)有涉及像Cosmos或Polkadot這樣的“跨鏈協(xié)議”所做的工作(盡管這些協(xié)議到底是“l(fā)ayer 2”解決方案還是其他東西,這已經(jīng)完全是另一篇文章的主題)。我們還應(yīng)該期望發(fā)明新的、意想不到的layer 2系統(tǒng),這些系統(tǒng)可以改進(jìn)現(xiàn)有模型,或者在速度,不可更改性和開(kāi)銷成本之間提供新的權(quán)衡。
比任何特定的layer 2解決方案更重要的是,底層技術(shù)的進(jìn)一步發(fā)展以及使其首先成為可能的機(jī)制:加密經(jīng)濟(jì)的設(shè)計(jì)。
這些layer 2擴(kuò)容方案有力證明了像以太坊這樣的可編程區(qū)塊鏈的長(zhǎng)期價(jià)值。建立基于layer 2解決方案的經(jīng)濟(jì)機(jī)制,只有在可編程區(qū)塊鏈上才有可能:因?yàn)槟阈枰媚_本語(yǔ)言編寫執(zhí)行交互式游戲的程序。由于像比特幣這樣的區(qū)塊鏈只提供了有限的腳本功能,這對(duì)于它們來(lái)說(shuō)很困難(或者有些情況下,比如 Plasma,這是完全不可能實(shí)現(xiàn)的)。
以太坊允許我們創(chuàng)建layer 2解決方案,以便在速度,不可更改性和成本開(kāi)銷之間找到新的權(quán)衡點(diǎn)。這可以讓底層區(qū)塊鏈更能夠適用于更多種類的應(yīng)用程序,因?yàn)槊鎸?duì)不同威脅模型的不同類型應(yīng)用程序會(huì)對(duì)不同的權(quán)衡模式有天生的偏向。對(duì)于需要保障乃至國(guó)家性范圍內(nèi)的高價(jià)值交易時(shí),我們可以使用主鏈。對(duì)于更偏重交易速度的數(shù)字資產(chǎn)交易,我們可以使用 Plasma。layer 2方案讓我們能夠在不影響底層區(qū)塊鏈的前提下取得權(quán)衡,并保持去中心化和不可更改性。
而且,很難事先預(yù)測(cè)給定的擴(kuò)展方案需要哪些腳本功能。當(dāng)設(shè)計(jì)以太坊的時(shí)候,Plasma和 Truebit還尚未發(fā)明。但是因?yàn)橐蕴皇峭耆删幊痰?,?shí)際上它能夠?qū)崿F(xiàn)我們能發(fā)明的任何經(jīng)濟(jì)機(jī)制。
區(qū)塊鏈技術(shù)的價(jià)值是建立在加密經(jīng)濟(jì)共識(shí)的確定性內(nèi)核,而諸如以太坊這樣的可編程區(qū)塊鏈才是能夠充分利用這種價(jià)值的唯一途徑。
感謝Vitalik Buterin,Jon Choi,Matt Condon,Chris Dixon,Hudson Jameson,Denis Nazarov和Jesse Walden對(duì)本文早期草稿的評(píng)論。
以太坊智能合約之批量轉(zhuǎn)幣
以太坊網(wǎng)絡(luò)架構(gòu)解析
以太坊搭建聯(lián)盟鏈詳細(xì)教程
![在這里插入圖片描述](述" />
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。