1. 程式人生 > >理解以太坊的Layer 2擴容解決方案:狀態通道(State Channels)、Plasma 和 Truebit

理解以太坊的Layer 2擴容解決方案:狀態通道(State Channels)、Plasma 和 Truebit

-賓夕法尼亞州的尼科爾森大橋建設照片(圖源)。羅馬人的工程原理擴充套件至新的應用

對於以太坊來說,2018年是專注底層架構之年。今年很多早期參與者會測試網路極限,並且重新關注以太坊的擴容技術。

以太坊仍然處於起步階段。直到現在,它仍然沒有那麼安全或者可擴充套件。對於任何密切關注以太坊技術的人來說,這都是很好理解的。但在過去一年,ICO推動的炒作已經過分誇大了目前的網路能力。以太坊和web3的美好願景—— 一個安全,易於使用的去中心化網路,由一系列通用的經濟協議來約束,並且被數十億人來使用——這個承諾希望在即,但是只有在關鍵的底層架構完成的前提下才能實現

那些正在致力於構建以太坊的底層架構以及擴充套件其效能的專案通常被稱為擴容解決方案

。這些方案有很多種形式,並且常常彼此相容或互補。

在這篇長文中,我想深入探討某一類擴容解決方案:“鏈下(off-chain)”或者說“layer 2”解決方案

首先,我們來總體討論下以太坊(以及所有公鏈)的擴容挑戰。

其次,我們會介紹解決擴容挑戰的不同方法,並且會區分“layer 1”和“layer 2”解決方案。

第三,我們會深入研究layer 2解決方案並且解釋它是如何工作的——具體來說,我們會討論狀態通道,和。

本文的重點是讓讀者能夠對於layer 2解決方案工作原理有一個完整和詳細的概念性理解。但是我們不會深入研究程式碼或特定的實施方案。反之,我們會專注於理解用來構建這些系統的經濟機制,還有一些在所有layer 2擴容技術中得以共享的共識。

1. 公鏈的擴容挑戰

首先,重要的是理解“擴容”並不是一個單一的、特定的問題。它指的是一系列以太坊必須要解決的挑戰,從而以太坊才能被全球數十億人使用。

最常討論的擴容挑戰是交易吞吐量問題。目前,以太坊每秒可以處理大約15筆交易,而相比而言Visa的處理能力大約為45,000/tps。在過去一年,一些應用例如以太貓,或者偶發的ICO,都足夠火爆,能讓以太坊網路“降速”並且會提高交易費用(gas)。

像以太坊這種公鏈的關鍵限制在於,每一筆交易都需要被網路中的每一個節點處理。以太坊區塊鏈上的每個操作,一筆交易,以太貓的誕生,部署新的 ERC20 合約,每一個發生在以太坊區塊鏈上的操作都必須由網路中的每個節點並行處理。這是設計理念決定的,它是保證公鏈權威性的一部分。節點們不用依賴其他節點來告訴它們,區塊鏈的當前狀態是什麼,它們自己就能搞清楚。

這就從根本上給以太坊網路的交易吞吐量造成了限制:它不能高於我們對單個節點所要求的交易吞吐量。

我們可以讓每個節點去承擔更多工作。如果我們將區塊的大小加倍(也就是區塊的gas值限制),也就意味著每個節點處理每個區塊的工作量大致是之前的兩倍。但是這就帶來了影響去中心化的代價問題:節點需要做更多工作意味著低效能的計算機(例如消費級裝置)可能會退出以太坊網路,如果算力集中在高效能節點運營者手中,挖礦就變得非常中心化。

所以,我們需要找到讓區塊鏈能夠在不提高單個節點工作量的情況下,負擔更多有用工作的方法。

Ⅰ. 如果每個節點不必並行處理每一項操作會怎麼樣?

第一種方法和我們預設的前提不同,如果我們構建一個區塊鏈,其中每個節點不需要都去處理每個操作會怎麼樣?如果網路被分成兩部分,它們還可以半獨立的進行操作,又會怎麼樣?

A部分可以處理一批交易,同時B部分可以處理另一批交易。這樣就可以有效地使區塊鏈的交易吞吐量翻倍,因為我們的限制現在能夠被兩個部分同時處理。如果我們將區塊鏈分為很多不同的部分,那麼我們就可以把區塊鏈的吞吐量提高很多倍。

這就是“分片”技術背後的見解,“分片”是由Vitalik的以太坊研究團隊和其他社群提出的擴容解決方案。區塊鏈被分成很多部分,它們被稱為“分片”,每個分片都可以獨立地處理交易。分片通常被稱為是“layer 1”擴容解決方案,因為這是在以太坊底層協議上實現的。如果您想了解有關分片的更多內容,我建議您閱讀extensive FAQ這篇博文

II. 如果在以太坊現有處理交易能力之外去進行更多有效操作會怎麼樣?

第二種選擇是從反方向進行考慮的:並不是提高以太坊區塊鏈本身的能力,如果我們可以利用已有的能力做更多的事情,會怎麼樣呢?底層以太坊區塊鏈的吞吐量是相同的,但是實際上我們可以做更多對於人們和應用程式有用的操作,例如交易,遊戲中的狀態更新,或是簡單的計算。

這就是類似狀態通道PlasmaTruebit等“鏈下”技術背後的見解。當然,這些技術都在解決不同的問題,但它們都是通過“鏈下”操作,而不是在以太坊區塊鏈上進行操作,同時仍然保證了足夠的安全性和不可更改性。

這些也被稱為“layer 2”解決方案,因為它們是構建在太坊主鏈“之上”的。他們不需要更改底層協議,他們只是以基於以太坊的智慧合約的形式存在,與鏈下的軟體進行互動。

2.layer 2擴容解決方案是加密經濟解決方案

在深入瞭解具體的layer 2擴容解決方案前,瞭解使得他們可行的底層概念是非常重要的。

支撐公有鏈最基礎的動力源泉就是加密經濟共識。通過仔細協調激勵機制以及通過軟體和加密演算法對激勵進行保障,我們就可以建立對於系統內部狀態達成共識的可靠計算機網路。這就是中本聰白皮書中的關鍵見解,並且這種見解現在也被應用在許多不同公鏈的設計中,包括比特幣和以太坊。

加密經濟共識給予我們一個確定性的核心——除非有極端事件例如51%×××發生,否則我們都知道鏈上操作——例如支付或者智慧合約,會像寫定的那樣執行。

在layer 2解決方案背後的見解,就是我們可以把核心核心的確定性作為錨定——我們附加其他經濟機制的一個固定點。 第二層的經濟機制可以向外擴充套件公鏈的效用,讓我們能夠進行鏈下互動,如果有需要的話,仍然可以可靠地轉回到核心核心上。

這些構建在以太坊底層“之上”區塊鏈層,並不總是與鏈上操作具有相同的保障。但是它們仍然有足夠的不可更改性和安全性,所以仍然是非常有用的。尤其是當不可更改性的要求略微下降時,我們能以更快的速度或更低的開銷來進行操作。

加密經濟並不是隨著中本聰的白皮書而開始和結束,它只是一種我們正在學著應用的技術。加密經濟不僅體現在對於核心協議的設計,還體現在對於第二層系統的設計,其擴充套件了底層區塊鏈的功能性。

I. 狀態通道(State channels)

狀態通道(State Channel)是一種用於執行交易和其他狀態更新的“鏈下(off-chain)”技術。但是,一個狀態通道“內”發生的事務仍保持了很高的安全性和不可更改性。如果出現任何問題,我們仍然可以選擇回溯到鏈上交易中確定的“穩定核心”。

大部分讀者會對支付通道(payment channel)比較熟悉,這一概念已存在多年了,並且最近通過閃電網路(lightning network)部署在了比特幣上。狀態通道是支付通道泛化出來的形式,它們不僅可用於支付,還可用於在區塊鏈上進行任意的“狀態更新”,就像在智慧合約內部進行更改一樣。 2015 年,Jeff Coleman 第一次詳細介紹了狀態通道。

解釋狀態通道的運作方式的最佳方法就是來看一個樣例。請記住這是一個概念性的解釋,也就是說我們不會涉及具體實現的技術細節。

現在設想Alice和Bob想玩一場井字遊戲,勝者可以獲得一個eth。為了實現這一目標,最簡單的方法就是在以太坊上建立一個智慧合約,它可以實現井字遊戲規則並跟蹤每個玩家的動作。每次玩家想要移動時,他們都會向合約傳送一個交易。當一名玩家獲勝時,根據規則描述,合約會付給勝者一個eth。

這樣做是可行的,但是效率低下並且速度很慢。Alice和Bob正在讓整個以太坊網路處理他們的遊戲過程,這對於他們的需求來說有點過於誇張。玩家每想要移動一步都需要支付gas費用,並且還要在進行下一步移動之前等待區塊打包。

但是,我們可以設計一個新的系統,它能使Alice和Bob在玩井字遊戲時產生儘可能少的鏈上操作。 Alice和Bob能夠以鏈下的方式更新遊戲狀態,同時又很確定計算結果在需要時仍能將其恢復到以太坊主鏈上驗證。我們把這個系統稱之為“狀態通道”。

首先,我們在以太坊主鏈上建立一個能夠理解井字遊戲規則的智慧合約“Judge”,同時它也能夠確認Alice和Bob是我們遊戲中的兩位玩家。該合約持有一個eth的獎勵。

然後,Alice和Bob開始玩遊戲。Alice建立並簽署一個交易,它描述了她遊戲的第一步,然後將其傳送給Bob,Bob也對交易簽了名,再將簽名後的版本發回併為自己保留一份副本。然後Bob也建立並簽署一個描述他遊戲中第一步的交易,併發送給Alice,她也會對交易簽名,再將其發回,並保留一份副本。每一次,他們都會這樣互相更新遊戲的當前狀態。每一筆交易都包含一個“隨機數”,這樣就使我們可以直接知道遊戲中移動的順序。

到目前為止,還沒有發生任何鏈上的操作。Alice和Bob只是通過網際網路向彼此傳送交易,還沒有任何東西傳達到區塊鏈上。但是,所有交易都可以傳送給 Judge 合約,換句話說,它們是有效的以太坊交易。你可以把這看作兩人彼此來回填寫了一系列經過區塊鏈認證的支票。實際上,並沒有錢從銀行中存入或取出,但是每人都有一堆可以隨時存入的支票。

當Alice和Bob結束遊戲時(可能是因為Alice贏了),他們可以通過向 Judge 合約提交最終狀態(比如,交易列表)來關閉該通道,這樣就只需要付一次交易費用。Judge合約會確定雙方都對這個“最終狀態”簽名,並等待一段時間來確保沒人會對結果提出合理質疑,然後向Alice支付一個eth的獎勵。

為什麼我們需要設定讓 Judge 合約等待一下的”質疑時間“?

想象Bob並沒有給 Judge 合約傳送真實的最終狀態,而是傳送一份之前他贏了Alice的狀態。但是 Judge 僅僅是一份合約,它本身無法知曉這是否是最新的狀態。

而質疑時間給了Alice一個機會向 Judge 合約證明Bob對遊戲最終狀態撒了謊。如果有更近期的狀態,她就會有一份已簽名交易的副本,並且可以將其提供給 Judge合約。Judge 合約可以通過檢查隨機數來判斷Alice的版本是否是最新的,然後駁回Bob竊取勝利的企圖。

特性和限制

狀態通道在許多應用中都很有用,它們對於在鏈上執行操作進行了嚴密的改進。但重要的是要注意,在決定應用程式是否適合被通道化時,需要做出一些特定的權衡:

  • 狀態通道依賴於有效性。如果Alice在質疑時間內掉線了(可能是Bob渴望贏得獎品,破壞了她家的網路連線),她可能無法在質疑時間結束前做出迴應。但是,Alice可以付費給其他人,讓其儲存一份她的狀態副本,並作為她的權益代表,以保持系統的有效性。
  • 當參與者將在長時間內交換大量狀態更新時,狀態通道非常有用。這是因為部署 Judge 合約時建立一個通道會產生初始成本。但是一旦部署完成,該通道內每一個狀態更新的成本都會非常低。
  • 狀態通道最適於有一組確定參與者的應用程式。這是因為 Judge 合約必須始終知曉所有參與到給定通道的實體(比如,地址)。當然我們可以增加或刪除使用者,但是每次都需要更改合約。
  • 狀態通道有很強的隱私性。因為一切都參與者之間的通道“內”發生,而不是公開廣播並記錄在鏈上。只有開頭和結尾的交易必須公開。
  • 狀態通道具有即時終結性。這意味著只要雙方都簽署了一個狀態更新,這個狀態就可以被認為是最終狀態。雙方都有明確保證,如果有必要,他們可以將狀態“強制執行”到鏈上。

我們 L4 團隊正致力於建立 Counterfactual框架:一個能在以太坊上推廣普及使用狀態通道的框架。我們的總體目標是使開發者可以在他們的應用程式中以模組化的方式使用狀態通道,而不需要成為狀態通道的專家。你可以在這裡瞭解更多該專案的資訊。我們將在 2018 年的第一季度釋出技術細節檔案。

另一個值得注意的針對以太坊的狀態通道專案是 Raiden,該專案目前正致力於構建一個支付通道網路,使用了和閃電網路類似的正規化。這意味著你不必與想要交易的特定人員開通狀態通道。你可以與一個連線到更大型通道網路的實體架設一個單獨的通道,這樣你就能夠向連線到同一網路的任何人支付而無需額外費用。

除了 Counterfactual 和 Raiden,在以太坊上還有幾個用於特定於應用程式的狀態通道。例如,Funfair 就為他們的去中心化×××構建了他們稱之為“Fate channels”的狀態通道,SpankChain 為成人產業演員構建了一套單向支付通道(他們還為其 ICO 使用了狀態通道),還有 Horizon Games 也在他們的第一款基於以太坊的遊戲中使用了狀態通道。

II. Plasma

2017 年 8 月 11 日,Vitalik Buterin 和 Joseph Poon 發表了一篇題為《Plasma:自主智慧合約》( Plasma: Autonomous Smart Contracts)的論文。這份論文介紹了一種新技術,它能使以太坊每秒可以處理的交易遠比現在更多。

就像狀態通道一樣,Plasma 是一種管理鏈下交易的技術,同時依靠底層的以太坊區塊鏈來實現其安全性。但是 Plasma 採用了一種新思路,它是通過建立依附於以太坊“主”區塊鏈的“子”區塊鏈。這些子鏈又可以相應地產生它們自己的子鏈,子鏈的子鏈又可以產生子鏈,如此遞進下去。

其結果就是,我們可以在子鏈級別上執行許多複雜的操作,在與以太坊主鏈保持最低限度互動的情況下,執行擁有數千名使用者的整個應用程式。Plasma 子鏈可以更快地操作,承擔的交易費用更低,因為子鏈上的操作無需在整個以太坊區塊鏈上進行重複。 -plasma.io/plasma.pdf -

為了弄清楚 Plasma 的執行原理,我們來看一個如何使用它的樣例。

讓我們試想你正在建立一個基於以太坊的集換式卡牌遊戲。這些卡牌是一些基於 ERC 721 不可替代的token(比如 Cryptokitties),但是擁有一些特定的特徵和屬性,可以讓玩家相互對戰——就像爐石傳說或者萬智牌一樣。這種複雜操作在鏈上執行的成本很高,所以你決定在你的應用程式中使用 Plasma 作為替代方案。

首先,我們在以太坊主鏈上建立一系列的智慧合約,它們可作為 Plasma 子鏈的“根節點”。Plasma 根節點包含了子鏈的基本“狀態交易規則”(諸如“交易無法消費已消費過的資產”),也記錄了子鏈狀態的雜湊值,並建立一種允許使用者在以太坊主鏈和子鏈間轉移資產的“橋接”服務。

然後,建立我們的子鏈。子鏈可以擁有自己的共識演算法,在這個例子中,我們假設它使用了 PoA(Proof of Authority),POA是一種依賴於可信區塊生產者(比如,驗證者)的簡單共識機制。在“工作量證明”系統中,區塊生產者與 POW 系統中的礦工類似,它們是接收交易,形成區塊並收取交易費用的節點。為了讓樣例簡單點,假設你(也就是建立遊戲的公司)是建立區塊的唯一實體,即你的公司執行著幾個節點,這些節點就是子鏈的區塊生產者。

一旦子鏈建立並激活,區塊生產者會定期的向根節點合約進行提交。這意味著他們實際上在說“我提交的 X 是子鏈中當前最新的區塊”。這些提交被當做子鏈中事務的證明,鏈上記錄在 Plasma 根節點裡。

現在子鏈已經準備好了,我們可以建立集換式卡牌遊戲的基本元件。這些卡片是基於 ERC721,在以太坊主鏈上初始化,然後由 Plasma 根節點轉移到子鏈上。這裡引入了一個關鍵點:Plasma 可以擴充套件我們與基於區塊鏈的數字資產的互動,但是這些資產應當首先建立在以太坊主鏈上。然後,我們將實際的遊戲應用程式以智慧合約的方式部署到子鏈上,這樣子鏈就包含了遊戲所有的邏輯和規則。

當用戶想要玩我們的遊戲時,他們只需要和子鏈互動。他們可以持有資產(ERC721 卡牌),可以為了以太幣購買並交換它們,可以與其他使用者對戰,還有其他任何遊戲中允許的行為,而這些行為都不需要與主鏈直接互動。因為只有很少的節點(比如,區塊生產者)才需要處理交易,所以交易費會很低,操作也能更快。

但是這種模式安全嗎?

通過把更多操作從主鏈遷移到子鏈上,很明顯我們可以執行更多的操作了。但是這樣安全嗎?發生在子鏈上的交易是否具備權威性?畢竟,我們方才描述的系統只有一箇中心實體控制著子鏈的區塊生產。這樣不是中心化嗎?這樣公司不是隨時都能竊取你的資產或者拿走你收集的卡牌嗎?

簡而言之,即使是在子鏈中單個實體完全控制所有區塊生產的情況下,Plasma 也為你提供了一個基本保證,即你始終都可以將你的資金和資產退回到主鏈上。如果一個區塊生產者開始惡意行事,最壞的情況也僅僅是強迫你離開這個子鏈。

讓我們瞭解一下區塊生產者能惡意行為的幾種方式,同時瞭解 Plasma 會如何處理這些情況。

首先,想象一個區塊生產者試圖通過說謊欺騙你,他們可以通過建立一個偽造的新區塊,聲稱你的資金被他們控制了。由於他們是唯一的區塊生產者,所以他們可以自由引入一個並不遵循我們區塊鏈規則的新區塊。就像其他區塊一樣,他們也得將這個區塊存在的證據提交給 Plasma 根節點合約。

如上所述,使用者有能將他們的資產隨時退回到主鏈上的最終保障。在這個情景下,使用者(或者更確切來說是代表他們權益的應用程式)會偵測到這種盜竊的企圖,並在區塊生產者嘗試和使用他們“偷到”的資產之前把自己的資產撤回到主鏈上。

Plasma 還建立了一種機制,防止欺詐時不能退回到主鏈上。Plasma 包含了一種機制,任何人(包括你)都可以向根節點合約釋出欺詐證明(fraud proof),試圖證明區塊生產者作弊。這個欺詐證明會包含之前區塊的資訊,並且允許我們證明,根據子鏈中的交易狀態規則,這個錯誤的區塊並不能正確接上之前的狀態。如果欺詐被證實,那麼子鏈就會“回滾”到前一個區塊。更妙的是,我們還構建了一種體系:任何簽出錯誤區塊的區塊生產者會被處罰,他們會因此丟失鏈上的保證金。 plasma.io/plasma.pdf

但是提交欺詐證明需要訪問底層資料,即需要用之前的實際區塊歷史來證明欺詐。如果區塊生產者為了防止Alice向根節點合約提交欺詐證明,而並沒有共享之前區塊的資訊的話,那怎麼辦?

在這種情況下,Alice的解決方案就是收回資產並脫離子鏈。本質上說,愛麗絲向根節點合約提交了一份“欺詐證明”。在一段延遲期內,任何人都可以質疑該證明(比如,展示後面的合法區塊證明實際上她消費了這些資產)。之後,Alice的資產將會被移回到以太坊主鏈上。 plasma.io/plasma.pdf

最後,區塊生產者可以審查子鏈中的使用者。如果區塊生成者願意,他們可以直接不在其區塊中包含特定交易,從而有效阻止使用者在子鏈上執行的任何操作。如上所述,解決方案僅僅是把我們所有的資產退回到以太坊主鏈上就可以了。

但是,資產退回本身也會帶來風險。其中一個問題就是如果所有使用這一子鏈的使用者同時都要退回資產會怎麼樣。在這種大量提現的情況下,以太坊主鏈可能沒有足夠的容量來處理每個人在質疑期內的交易,也就意味著使用者可能會丟失資金。儘管有許多可能的技術能夠防止這種情況發生,例如,通過延長質疑時間的方式來響應資產退回的需求。

值得注意的是,並不是所有的塊生產者都必定被一個實體所控制——這只是我們案例中的極端個例。我們可以建立子鏈,把區塊生產者分佈在許多不同實體間,即像公有鏈一樣真正地去中心化。在這種情況下,區塊生產者如上述方式進行干預的風險更小,而使用者不得不將資產轉移回以太坊主鏈的風險也更小。

現在我們已經介紹了狀態通道和 Plasma,以下幾點對比值得注意。

它們之間一個不同之處在於,當狀態通道中所有參與方都一致同意退回資產時,狀態通道可以立即執行退回。如果Alice和Bob同意關閉通道並撤回他們的資金。只要他們都認同最終狀態,他們就可以立即從狀態通道取得他們的資產。這在 Plasma 上是不可能的,如上所述,使用者在取出資產的過程中必須經歷一個質疑時間。

與 Plasma 相比,狀態通道每筆交易的平均交易費更便宜,而且速度更快。例如,一個應用程式中兩個使用者在進行一系列的小型交易。在子鏈級別構建狀態通道應該會比直接在子鏈上執行每個交易更加便宜和迅速。

最後,需要注意的是這些只是部分描述,我們還遺漏了許多細節。Plasma 本身還處於非常早期的階段。如果你有興趣瞭解 更多關於 Plasma 的現狀,可以檢視 Vitalik 最近的一個關於 “最小化可行性Plasma(Minimal Viable plasma)” 的提議(即精簡的 plasma 實施方案)。一個臺灣的團隊正在進行這項工作,可以在這個程式碼庫中檢視。OmiseGo 正在研究他們的去中心化交易的實施,他們在這裡釋出了進度最近更新資訊。

III. Truebit

Truebit 是一種幫助以太坊在鏈下進行繁重或複雜計算的技術。這使得它與狀態通道和Plasma不同,它們對於提高以太坊區塊鏈的總交易吞吐量更有用。正如我們在開篇部分所討論的那樣,擴容是一個多方面的挑戰,需要的不僅僅是更高的交易吞吐量。Truebit不會讓我們完成更多的交易,但它能讓基於以太坊的應用程式去處理更復雜的事務,並且仍能被主鏈驗證。

這就讓我們能夠對以太坊應用程式做一些有用的操作,這些操作的計算成本太高,無法在鏈上執行。例如,驗證來自其他區塊鏈的簡單支付驗證(SPV)證明,這個證明可以讓以太坊智慧合約“檢查”交易是否在另一個鏈上已經發生(如比特幣或狗狗幣)。

讓我們看一個例子。試想你有一些代價很高的計算(比如 SPV 證明)需要作為以太坊應用程式的一部分來執行。你不能單純的把它當做以太坊主鏈上智慧合約的一部分,因為SPV證明的計算成本是非常昂貴的。請記住,因為每個節點都要並行處理這種操作,所以在以太坊上直接進行任何計算都是非常昂貴的,。以太坊的區塊有最大費用(gas值)限制,從而為該區塊中所有交易能執行的計算總量設定了上限。但是SPV證明的計算成本實在太大,即使它是區塊中唯一的交易,它需要的gas值也是單個區塊gas值上限的許多倍

相反,鏈下你可以只需要向人支付很少的費用來完成計算。去完成計算並由你付費的這個人被稱作解算者(solver)。

首先,解算者支付智慧合約中的保證金。然後,你給解算者一份他們需要計算內容的描述,它們執行計算,並返回結果。如果結果是正確的(大多在一秒鐘內),他們的保證金將被退回。如果事實證明,解算者並沒有正確地執行計算——比如他們欺詐或犯了錯誤——他們就會失去他們的保證金。

但是我們如何判斷結果是正確的還是錯誤的?Truebit使用一種叫做“驗證遊戲”(verification game)的經濟機制。從本質上講,我們為其他被稱為挑戰者的參與方創造了激勵,來檢查解算者的工作。如果挑戰者能夠通過驗證遊戲證明解算者提交了錯誤結果,那麼他們會獲得獎勵,而解算者則會失去保證金。

因為驗證遊戲是在鏈上執行的,所以它不能直接地計算結果(這會破壞整個系統的設計初衷——如果我們可以在鏈上進行計算,我們就不需要Truebit)。相反,我們強迫解算者和挑戰者確定他們意見不一致的具體操作實際上,我們將雙方逼入一個死角——找到導致他們對結果意見不一的具體程式碼行。 一旦確定了具體的操作,實際上它就足夠小到可以由以太坊主鏈執行了。然後,我們通過以太坊的智慧合約執行該操作,該合約一勞永逸地解決了哪一方說了真話,哪些又是謊言或錯誤。

如果您想了解更多有關Truebit的資訊,你可以閱讀這篇論文,或者閱讀Simon de la Rouviere的部落格文章

結論

layer 2解決方案都有一個共同見解:一旦我們有了公鏈提供的有確定性的核心,我們就可以把它作為加密經濟系統的錨定,然後擴充套件區塊鏈應用的可用性。

現在我們已經研究了一些示例,我們可以更具體地瞭解layer 2解決方案如何應用這種見解。layer 2解決方案所使用的經濟機制往往是互動遊戲:它們通過為各參與方創造激勵來相互競爭或彼此“檢查”工作。區塊鏈應用程式可以假設某個給定的宣告可能是真的,因為我們已經為另一方創造了強烈的激勵來提供證明其錯誤的資訊。

在狀態通道方案中,就是通過給各方機會互相“反駁”,來確定通道的最終狀態。在Plasma方案中,就是如何管理欺詐證據和提現的方法。在Truebit方案中,我們通過激勵挑戰者來證明解算者是錯誤的,以確保解算者給出真實結果。

這些系統將有助於解決將以太坊擴充套件到龐大的全球使用者群所涉及的一些挑戰。有些系統,像狀態通道和Plasma,將會增加平臺的交易吞吐量。而其他的系統,像Truebit,可以將更困難的計算作為智慧合約的一部分,從而開創新的使用案例。

這三個示例僅代表了加密經濟擴容解決方案設計可能性的一小部分。我們甚至沒有涉及像CosmosPolkadot這樣的“跨鏈協議”所做的工作(儘管這些協議到底是“layer 2”解決方案還是其他東西,這已經完全是另一篇文章的主題)。我們還應該期望發明新的、意想不到的layer 2系統,這些系統可以改進現有模型,或者在速度,不可更改性和開銷成本之間提供新的權衡。

比任何特定的layer 2解決方案更重要的是,底層技術的進一步發展以及使其首先成為可能的機制:加密經濟的設計。

這些layer 2擴容方案有力證明了像以太坊這樣的可程式設計區塊鏈的長期價值。建立基於layer 2解決方案的經濟機制,只有在可程式設計區塊鏈上才有可能:因為你需要用指令碼語言編寫執行互動式遊戲的程式。由於像比特幣這樣的區塊鏈只提供了有限的指令碼功能,這對於它們來說很困難(或者有些情況下,比如 Plasma,這是完全不可能實現的)。

以太坊允許我們建立layer 2解決方案,以便在速度,不可更改性和成本開銷之間找到新的權衡點。這可以讓底層區塊鏈更能夠適用於更多種類的應用程式,因為面對不同威脅模型的不同型別應用程式會對不同的權衡模式有天生的偏向。對於需要保障乃至國家性範圍內的高價值交易時,我們可以使用主鏈。對於更偏重交易速度的數字資產交易,我們可以使用 Plasma。layer 2方案讓我們能夠在不影響底層區塊鏈的前提下取得權衡,並保持去中心化和不可更改性。

而且,很難事先預測給定的擴充套件方案需要哪些指令碼功能。當設計以太坊的時候,Plasma和 Truebit還尚未發明。但是因為以太坊是完全可程式設計的,實際上它能夠實現我們能發明的任何經濟機制。

區塊鏈技術的價值是建立在加密經濟共識的確定性核心,而諸如以太坊這樣的可程式設計區塊鏈才是能夠充分利用這種價值的唯一途徑。

感謝Vitalik Buterin,Jon Choi,Matt Condon,Chris Dixon,Hudson Jameson,Denis Nazarov和Jesse Walden對本文早期草稿的評論。

相關閱讀推薦:

新增微信(cdong1024),加入區塊鏈開發者技術交流群

蟲洞社群:https://www.uzanapp.com?fr=51CTO ——中美區塊鏈開發學習社群

在 [在這裡插入圖片描述](述