[譯] 帶你瞭解以太坊第2層擴容方案:狀態通道(State Channels)、Plasma 和 Truebit

JohnJiangLA發表於2018-03-12

[譯] 帶你瞭解以太坊第2層擴容方案:狀態通道(State Channels)、Plasma 和 Truebit

賓夕法尼亞州 Tunkhannock 地區鐵路高架橋(cc)。古羅馬的建築理念在新時代的使用。

對於以太坊來說 2018 年是著力基礎建設的一年。今年是初期使用者來測試網路極限的一年,並將重新關注一些擴充套件以太坊的技術。

以太坊至今仍處於成長初期。 現今,它還不是安全的或者可擴充套件的。技術人員能夠很清楚的認識到這一點。但是在去年,大量 ICO 所導致的炒作已經開始誇大目前的網路能力。構建一個安全,易於使用的去中心化網際網路,受約於一套通用經濟規範並被無數人使用,以太坊和 web3 提出的這一美好承諾就在眼前,但只有在建立關鍵基礎設施的前提下才能夠實現

致力於構建這種基礎架構和擴充套件以太坊效能的專案通常被稱為 擴充套件方案(scaling solutions) 。這些專案有著不同的形式,並且通常相互相容或互補。

在這篇長帖中,我想要深入講解種擴充套件方案:“off-chain” 或 “第二層(layer 2)” 方案。

  • 首先,我們會全面的討論下以太坊(以及所有公有的區塊鏈)的擴充套件難題。
  • 其次,我們將介紹解決擴充套件難題的不同方法,區分 “layer 1” 和 “layer 2” 解決方案。
  • 最後,我們會深入瞭解第二層(layer 2)解決方案並詳細解釋它是怎樣運作的,我們會談及 狀態通道(state channels)Plasma  Truebit

本文的重點在於給讀者全面而詳細的講解第二層(layer 2)解決方案的概念與工作原理。但我們不會深入研究程式碼或特定實現。相反,我們專注理解用於構建這些系統的經濟機制以及所有第二層技術之間共同的思維模式。


1. 公有區塊鏈的擴充套件難題

首先,你要知道“擴充套件”不是一個單一的、特定的問題,它涉及了一系列難題,必須解決這些難題才能使以太坊對全球無數使用者可用。

最常討論的擴充套件難題是交易通量。目前,以太坊每秒可以處理大約 15 筆交易,而 Visa 的處理能力則大約在 45,000/tps。在去年,一些應用程式(比如 Cryptokitties 或偶爾的 ICO)已經足夠流行以至於“放緩了”網路速度並提升了挖礦費用(gas) 的價格。

公有區塊鏈(比如以太坊)最核心的缺陷是要求每一筆交易要被網路中的每一個節點處理。一筆支付,Cryptokitty 的誕生,部署新的 ERC20 合約,每一個以太坊區塊鏈上發生的操作都必須由網路中的每個節點並行執行。這是設計理念所決定的,也正是由於這種設計理念才使得公有區塊鏈具有權威性。節點不需要依賴其他節點來告訴他們當前區塊鏈的當前狀態,它們會自己計算出來。

這給以太坊的交易通量帶來了根本性的限制:它不能超過我們對於單個節點的設計要求。。

我們可以要求每個節點做更多的工作,如果我們將塊大小加倍(例如,區塊 gas 限制),這意味著每個節點處理每個區塊的工作量大致是之前的兩倍。但是這樣就減弱了系統的分散化理念:節點要做更多的工作意味著效能較差的計算機(比如使用者裝置)可能會從網路中退出,並且挖礦也會更向效能強大的節點運營者集中。

相反,我們需要一種方式使區塊鏈做更多有用的事,但並不是增加單個節點的工作量。

從概念上來說,有兩種可能解決這個問題的方法

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

第一種方法是拋棄我們的前提,如果我們可以構建一個每個節點不必處理每個操作的區塊鏈,會怎樣?如果網路分為兩個部分代替原有網路,每一個部分都可以獨立執行,會怎樣?

A 部分可以處理一批交易,而同時 B 部分可以處理另一批。這實際上會使區塊鏈的交易通量翻倍。因為我們的限制現在能夠被個節點同時處理。如果我們可以將區塊鏈分為許多不同的部分,那麼我們可以將區塊鏈的通量提高很多倍。

這是分片sharding)的思維模式,也是 Vitalik 的以太坊研究小組(Ethereum Research group) 和其他社群正在研究的一種擴充套件方案。一個區塊鏈被分割成叫做 shards 的不同部分,每一個部分都可以獨立處理交易。因為分片是在以太坊的基礎級協議中實現的,所以通常被也稱為第一層layer 1)擴充套件解決方案,如果你想了解更多有關分片的內容,請檢視 extensive FAQ這篇博文

[譯] 帶你瞭解以太坊第2層擴容方案:狀態通道(State Channels)、Plasma 和 Truebit

二. 如果我們能夠從以太坊現有能力中壓榨出更多有用的業務操作

第二種選擇的方向則相反:不是增加以太坊區塊鏈本身的容量,如果我們可以通過我們已經擁有的能力來做更多的事情,會怎樣?在基礎級別以太坊區塊鏈的生產力都是相同的,但是實際上,我們可以做更多對人和應用程式有用的操作,比如交易,遊戲中的狀態更新,或者簡單的計算。

這是 “鏈下(off-chain)” 技術背後的思維邏輯,比如 狀態通道(state channels)Plasma Truebit。雖然其中每個解決方案都在解決一個不同的問題,它們都通過執行“鏈下”操作而且能夠不在以太坊區塊鏈上執行的同時,仍然保證足夠的安全性和權威性。

這些也被稱為 第二層(layer 2) 解決方案,因為它們建立在以太坊主鏈“之上”。他們不需要更改基本級別的協議,相反,它們只是作為作為以太坊上的智慧合約,用於與鏈下軟體進行互動。

[譯] 帶你瞭解以太坊第2層擴容方案:狀態通道(State Channels)、Plasma 和 Truebit

2. 第二層(layer 2)解決方案是加密經濟解決方案

在深入瞭解第二層解決方案的細節之前,瞭解下使其可行的潛在細節是非常重要的。

公有區塊鏈的動力源泉在於加密經濟合約。通過調整激勵措施並用軟體和加密措施保護激勵,我們可以建立一個就內部狀態達成一致的穩定計算機網路。這是中本聰的白皮書的關鍵內容,現已應用於許多不同的公有區塊鏈(包括比特幣和以太坊)的設計中。

除了一些極端的情況下(比如 51% 攻擊),加密經濟合約給了我們一個穩固的核心 。我們知道鏈上(on-chain)操作(比如支付,智慧合約)可以被看做是寫入去執行。

第二層(layer 2)解決方案背後的關鍵是我們可以將這個穩固的核心用作錨點,一個可以附加其他經濟機制的固定點。這種 第二層 經濟機制可以擴充套件公有區塊鏈的可用性。讓我們脫離區塊鏈進行互動操作,並且在需要的情況下仍能可靠地重歸到核心鏈上。

這些構建在以太坊“之上”的層並不總是與鏈上操作具有相同的保障。但是,它們仍然具備足夠的權威性,安全性以及可用性,特別是在終端略微減少時,我們能夠更快的執行操作或維持更低的日常成本。

加密經濟並不是隨著中本聰的白皮書而開始或結束,它是最適合我們去學習與應用的技術主體。不僅存在於核心協議的設計中,也存在於第二層系統的設計中,它們擴充套件了底層區塊鏈的功能性。

一. 狀態通道(State channels)

狀態通道(State Channel)是一種用於執行交易和其他狀態更新的“off-chain”技術。可是,一個狀態通道“中”發生的事務仍保持了很高的安全性和權威性。如果出現任何問題,我們仍然可以選擇重歸到“穩固核心”上,它的權威性是建立在鏈上交易基礎上。

大部分讀者會熟悉存在多年的概念——支付通道(payment channel),它最近通過在比特幣上藉助閃電網路(lightning network)實現了。狀態通道是支付通道泛化出來的形式,它不僅可用於支付,還可用於區塊鏈上任意的“狀態更新”,比如智慧合約中的更改。在 2015 年,Jeff Coleman 第一次詳細介紹了狀態通道。

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

現在試想一下,愛麗絲和鮑勃想玩一場井字遊戲,贏家可以獲得一個以太幣。實現這一目的的最簡單方法就是在以太坊上建立一個智慧合約,實現井字遊戲規則並跟蹤每個玩家的動作。每次玩家想要移動時,他們都會向合約傳送一個交易。當一名玩家獲勝時,根據規則,合約會付給贏家一個以太幣。

這樣是可行的,但是效率低下且速度慢。愛麗絲和鮑勃正在使用整個乙太網路處理他們的遊戲過程,這對於他們的需求來說有點不合時宜。他們每一步都需要支付挖礦費用(gas),並且還要在進行遊戲的下一步之前都要等待挖礦完成。

不過,我們可以設計一個新的系統,它能使愛麗絲和鮑勃在井字遊戲的過程中產生儘可能少的鏈上操作。 愛麗絲和鮑勃能夠以鏈下的方式更新遊戲狀態,同時在需要時仍能將其重歸到以太坊主鏈上。我們將這樣一個系統稱之為“狀態通道”。

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

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

到目前為止,還沒有發生任何鏈上的操作。愛麗絲和鮑勃只是通過網際網路向彼此傳送交易,但沒有任何事情涉及到區塊鏈。但是,所有交易都可以傳送給 Judge 合約,也就是說,它們是有效的以太坊交易。你可以把這看做兩人在彼此來回填寫了一系列經過區塊鏈認證的支票。實際上,並沒有錢從銀行中存入或取出,但是他倆都有一堆可以隨時存入的支票。

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

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

假設,鮑勃並沒有給 Judge 傳送一份真實的最終狀態,而是傳送一份之前他贏了愛麗絲的狀態。這時如果 Judge 是一個非智慧合約,它自己根本無法得知這個狀態是否是最近的狀態。

而質疑時間給了愛麗絲一個機會能夠證明鮑勃提交了虛假的遊戲最終狀態。如果有更近期的狀態,她就會有一份已簽名交易的副本,並可以將其提供給 Judge。Judge 可以通過檢查隨機數來判斷愛麗絲的版本是否更新,然後鮑勃盜取勝利的企圖就能被駁回了。

特性和限制

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

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

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

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

除了 Counterfactual 和 Raiden,在以太坊上還有幾個應用程式特定的通道實現。例如,Funfair 就為他們的去中心化賭博平臺搭建了一套他們稱之為 “Fate channels” 的狀態通道,SpainChain 為成人專案演員構建了一套 one-way payment channels(他們還在他們的 ICO 中使用了狀態通道),還有 Horizon Games 也在他們的第一款基於以太坊的遊戲中使用了狀態通道。

二. Plasma

2017 年 8 月 11 日,Vitalik Buterin 和 Joseph Poon 發表了一篇題為 Plasma: Autonomous Smart Contracts的文件。這份文件介紹了一種新技術,它能使以太坊每秒可以處理的遠比現在更多的事務。

和狀態通道一樣,Plasma 是一種用於管理鏈下交易的技術,同時依靠底層的以太坊區塊鏈來實現其安全性。但是 Plasma 採用了一種新思路,它是通過建立依附於“主”以太坊區塊鏈的“子”區塊鏈。這些子鏈又可以循序產生它們自己的子鏈,並能依次迴圈往復。

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

[譯] 帶你瞭解以太坊第2層擴容方案:狀態通道(State Channels)、Plasma 和 Truebit

plasma.io/plasma.pdf

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

試想你正在建立一個基於以太坊的卡牌交換遊戲。這些卡牌是一些 ERC 721 不可替代的令牌(比如 Cryptokitties),但是擁有一些可以讓玩家相互對戰的特徵和屬性,這有點像爐石傳說或者萬智牌。這些型別的複雜操作在鏈上執行代價非常大,所以你決定在你的應用程式中使用 Plasma 作為替代方案。

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

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

一旦子鏈建立好並生效後,區塊生產者會週期性的向根節點合約發出提交。也就是他們實際上在說“我提交的 X 是子鏈中當前最新的區塊”。這些提交被當做子鏈中事務的證明,記錄在鏈上的 Plasma 根節點裡。

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

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

但是這種模式安全嗎?

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

簡單來說,即使是在子鏈中完全由一個實體完全控制區塊生產的情景下,Plasma 也能做出你可以隨時將你的資產收回到主鏈上的基本承諾。如果一個區塊生產者開始表現出敵意,最壞的情況也只是強迫你離開這個子鏈。

讓我們來看下區塊生產者表現惡劣的幾種方式,同時看下 Plasma 會怎樣處理這些情景。

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

如上所述,使用者有能將他們的資產隨時收回到主鏈上的基本保障。在這個情景下,使用者(或者代表他們權益的應用程式)會偵測到這種盜竊的企圖,並在區塊生產者嘗試和使用他們的“被盜”資產之前撤回到主鏈上。

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

[譯] 帶你瞭解以太坊第2層擴容方案:狀態通道(State Channels)、Plasma 和 Truebit

plasma.io/plasma.pdf

但是提交欺詐證明需要訪問底層資料,即需要用之前的實際歷史區塊來證明欺詐。如果區塊生產者為了防止愛麗絲能夠向根節點合約提交欺詐證明,不分享之前區塊的資訊怎麼辦?

在這種情況下,這個方案就是為了讓愛麗絲收回資產並脫離子鏈而準備的。根本上來說,愛麗絲向根節點合約提交了一份“欺詐證明”。在一段任何人都可以質疑證明(比如,顯示一些後面的合法區塊證明實際上她消費了這些資產)的延遲時段後,愛麗絲的資產將會被移回到以太坊主鏈上。

[譯] 帶你瞭解以太坊第2層擴容方案:狀態通道(State Channels)、Plasma 和 Truebit

plasma.io/plasma.pdf

最後,區塊生產者可以監察子鏈中的使用者。如果區塊生成者願意,他們可以直接不在其區塊中不包含實際事務,從而有效阻止使用者在子鏈上執行任何操作。如上所述,這個解決方案再一次的直接將我們所有的資產收回到以太坊主鏈上。

但是,取出資產本身也會帶來風險。其中一個憂慮就是如果所有使用這一子鏈的使用者在同一時刻都要取出資產會怎樣。在這樣一個大量取出的情況下,以太坊主鏈主鏈上可能沒有足夠的能力處理每個人在質疑期內的交易,也就意味著使用者可能會失去資金。雖然有許多可行的技術能夠防止這種情況發生,例如,通過延長質疑時間來適應取出資產的需求。

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

現在我們已經介紹了狀態通道和 Plasma,有幾點值得比較下。

它們之間一個不同之處在於,當狀態通道中所有利益方都一致同意提現,它可以立即提現。如果愛麗絲和鮑勃同意關閉通道並撤回它們的資金。只要他們都認同最終狀態,他們就可以立即取得他們的資產。這在 Plasma 上並不可能實現,如上所述,使用者在取出資產的過程中必須包含一個質疑時間。

與 Plasma 相比,狀態通道在每筆交易上更便宜,而且速度更快。這意味著我們可以在 Plasma 子鏈上建立狀態通道例如,一個應用程式中兩個使用者在進行一系列的小型交易。在子鏈上建立一個狀態通道應該會比直接在子鏈上執行每個交易更加便宜和迅速。

最後,需要注意的是這部分講解缺失了大量細節。Plasma 本身還處於非常起始的階段。如果你有興趣瞭解 Plasma 現在的情況,請檢視 Vitalik 最近的一個關於 “Minimal Viable plasma” 的提議(即抽離出 plasma 的實現過程)。一個臺灣的團隊正在進行這項工作,可以在這個分支中檢視。OmiseGo 正在研究他們的分散式交易的實現,他們在這裡釋出了最近更新進展資訊。

III. Truebit

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

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

我們來看一個例子。試想你有一些高代價計算(比如 SPV 證明)需要作為一個以太坊應用程式的一部分執行。因為 SPV 證明的計算成本太高了,你不能簡單地將其作為以太坊主鏈上的智慧合約的一部分。請牢記,因為每個節點必須並行執行該操作,所以在以太坊上執行任何計算的成本都非常高。以太坊中的區塊都有最大費用(gas)限制,它用於限制該區塊中所有事務組合在一起能夠完成的計算總量。但是,SPV 證明的計算量實在太大,即使它只是其中僅有的交易,仍需要許多倍單個區塊的全部費用限制

相反,鏈下你只需要支付很少的費用就可以完成計算。讓你為此付費完成計算的這個人被稱作解算機

首先,解算機支付給智慧合約一份押金。然後,你給解算機一份計算的詳細描述,它們執行計算,並返回結果。如果結果是正確的(大部分情況下發生在一秒鐘之內),它們的押金將被退回。如果解算機被證實沒有正確執行運算(比如,它們欺詐或者犯錯了),它們會失去押金。

但是,我們如何判斷結果是否正確呢?Truebit 使用了一種叫做“驗證遊戲(verification game)”的經濟機制。本質上我們建立了一種激勵機制,它叫做挑戰者challengers)來檢查解算機的結果。如果挑戰者能夠通過驗證遊戲證明解算計提交了錯誤結果,那麼他們就可以收取獎勵,而解算計則丟失他們的押金。

由於驗證遊戲是在鏈上執行的,因此它不能簡單地計算結果(這會推翻整個系統的設計初衷,如果可以在鏈上執行計算,我們也就不需要 Truebit 了)。相反,我們要求解算機和挑戰者確定他們意見不一致的特定操作實際上,我們支援雙方到一個角落,找出導致它們對結果不一致的具體程式碼行。

[譯] 帶你瞭解以太坊第2層擴容方案:狀態通道(State Channels)、Plasma 和 Truebit

Truebit 的簡化概念圖。

一旦確定了具體的操作,它就小到可以由以太坊主鏈來執行了。然後,我們通過以太坊智慧合約來執行這一行動,該合約一勞永逸地解決了哪一方說了真話,哪些又是謊言或錯誤。

如果你想了解更多關於 Truebit 的資訊,你可以檢視這份文件,或者 Simon de la Rouviere 寫的這篇博文

結論

第二層解決方案有著共同的遠見。一旦我們得到由公有區塊鏈提供的穩定核心,就可以將其作為加密經濟的錨點,擴充套件出無限的區塊鏈應用。

現在我們已經對一些樣例進行了調查,這樣就可以更具體地瞭解第二層解決方案怎麼實現這種遠見。第二層解決方案中運用的經濟機制通常是互動遊戲:它們通過為各方創造激勵以使其相互競爭或彼此“檢查”工作。由於我們激發了另一方出示證實錯誤資訊的強烈動機,因此區塊鏈應用程式可以假定某個給定的宣告是正確的。

在狀態通道方案中,就是通過給各方一個“反駁”對方的機會,來確定通道的最終狀態。在 Plasma 方案中,就是如何管理欺詐證明和提現。在 Truebit 方案中,就是通過激勵挑戰者證明解算機是錯誤的,從而保證解算機給出正確結果。

這些系統將有助於解決將以太坊擴充套件到全球使用者群過程中所涉及的一系列挑戰。一些系統,像狀態通道和 Plasma ,將會增加平臺的交易通量。其他系統,像 Truebit,將能夠作為智慧合約的一部分進行更多的複雜計算,建立出新的使用案例。

這三個例子只能代表加密經濟擴充套件方案可能性設計的一小部分。我們甚至還沒有談到像 Cosmos 或 Polkadot 這樣的“區塊鏈間協議”(儘管這是“第二層”解決方案或另一篇博文的內容)。我們還是應該期待能夠發明出意想不到的新型第二層系統,來改進現有模型或在速度,終端和開銷做出新的權衡。

比任何獨特的第二層解決方案更重要的是進一步發展潛在的技術和機制,使這些加密經濟設計成為可能。

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

以太坊第二層方案的出現讓我們能在速度、終端和開銷間做出新的權衡。這是底層區塊鏈能夠適用於更多種類的應用程式。因此面對不同威脅模型的不同型別應用程式會自然的選擇不同的權衡模式。對於需要保障區域性(乃至國家性的)範圍內的大規模交易時,我們使用主鏈。對於更偏重速度的數字資產交易,我們可以使用 Plasma。第二層方案讓我們能夠在損害底層區塊鏈的前提下做出這些折中措施,並保持去中心化和權威性。

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

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

感謝 Vitalik Buterin,Jon Choi,Matt Condon,Chris Dixon,Hudson Jameson,Denis Nazarov 和 Jesse Walden 對於本文初稿的意見。


掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章