0
本文作者: 吳陽煜 | 2018-03-24 09:12 |
雷鋒網(wǎng)AI金融評論按:本文作者Josh Stark,原文載自Medium。雷鋒網(wǎng)AI金融評論授權轉(zhuǎn)載自微信公眾號以太坊愛好者EthFans,譯者劉艷安 & Elisa。
賓夕法尼亞州的尼科爾森大橋建設照片(來源)。羅馬人的工程原理正在被擴展到新用途上
對于以太坊來說,2018年是進行基礎建設的一年。今年是早期采用測試網(wǎng)絡極限的一年,今年將重新關注擴展以太坊的技術。
以太坊仍處于初級階段。現(xiàn)在,它不具備安全性和可擴展性。任何密切關注該技術的人都能很好地理解這一點。但在過去的一年里,ICO驅(qū)動的炒作已經(jīng)開始夸大目前的網(wǎng)絡容量。以太坊和web3期望建設的——一個安全、易用、由一套共同的經(jīng)濟協(xié)議約束、可供數(shù)十億人使用的分布式互聯(lián)網(wǎng),仍處于發(fā)展階段,直到關鍵基礎設施建成之后才能實現(xiàn)。
致力于構建此基礎架構并擴大以太坊容量的項目通常稱為擴容方案。它們有許多不同的形式,并且常?;ハ嗉嫒莼蚧パa。
在這篇長文章中,我想深入探討一種擴容方案:“鏈下”或“第二層”解決方案。
首先,我們將概括地討論以太坊(以及所有公共區(qū)塊鏈)的擴展挑戰(zhàn)。
其次,我們將介紹解決擴容挑戰(zhàn)的不同方法,分為“第1層”和“第2層”解決方案。
第三,我們將深入研究第2層解決方案,并解釋它們的工作原理——具體來說,我們將討論狀態(tài)通道,Plasma 和 Truebit。
本文重點向讀者提供關于第2層解決方案工作原理的全面、詳細的概念性理解。我們不會深入研究代碼或特定的實現(xiàn)方案,相反的,我們重點在于理解用于構建這些系統(tǒng)的經(jīng)濟機制以及所有第2層技術之間共同的常見見解。
首先,理解“擴容”不是一個單一的具體問題是很重要的。它指的是一系列必須克服的挑戰(zhàn),使得以太坊能對數(shù)十億的全球用戶有用。
最常討論的擴容挑戰(zhàn)是交易吞吐量。目前,以太坊每秒可以處理大約15筆交易,而Visa的處理速度大約為45,000 / tps。在過去的一年里,一些應用(比如 Cryptokitties,或者偶爾的 ICO)已經(jīng)足夠流行,來“減緩”網(wǎng)絡速度并提高 gas 價格。
像以太坊這樣的公有鏈的核心限制是,每一筆交易都要由網(wǎng)絡中的 每一個節(jié)點 進行處理。在以太坊區(qū)塊鏈上進行的每一項操作(付款,一個以太貓的誕生,新的ECR20合約的部署)都必須由網(wǎng)絡中的每一個節(jié)點并行處理。區(qū)塊鏈的設計就是這樣的,這是使得公有鏈具有權威性的一部分。一個節(jié)點不需要依賴其他節(jié)點來告訴它區(qū)塊鏈的當前狀態(tài)是什么,它自己會搞清楚。
這給以太坊交易吞吐量帶來了根本性的限制:它不能高于我們對單個節(jié)點所要求的交易吞吐量。
我們可以要求每一個節(jié)點做更多的工作。如果我們把區(qū)塊大小擴大2倍(即區(qū)塊 gas 值限制),這就意味著每一個節(jié)點的工作量是之前區(qū)塊工作量的兩倍。但是這是以去中心化為代價的:節(jié)點做的工作多了,意味著算力小的計算機(就像消費者設備)可能會退出網(wǎng)絡,挖礦在算力大的節(jié)點上就變得更加中心化。
相反,我們需要一種方法,可以讓區(qū)塊鏈在不增加單個節(jié)點工作量的情況下做更多有用的事情。
從概念上講,我們有兩種方法可能解決這個問題:
Ⅰ. 如果每個節(jié)點不需要并行處理每個操作會怎么樣?
第一個方法不符合我們的前提,如果我們可以構建一個區(qū)塊鏈,那么每一個節(jié)點不需處理每一個操作會是什么樣的?相反的,如果網(wǎng)絡分為兩部分,每個部分可以半獨立運作,會是什么樣的?
A部分可以處理一批交易,而B部分處理另一批交易。實際上這會使區(qū)塊鏈交易吞吐量翻倍,因為交易限制變成了兩個節(jié)點同時處理的交易總量。如果我們可以把區(qū)塊鏈分成許多部分,那么我們就可以成倍的增加區(qū)塊鏈的交易吞吐量。
這就是分片背后的智慧,分片,是 Vitalik 的以太坊研究小組以及其他團隊研究的擴容方案。區(qū)塊鏈被分成不同的部分,稱為碎片,每個部分都可以獨立處理交易。分片通常被稱為第1層擴展方案,因為它是在以太坊本身的基本級協(xié)議中實現(xiàn)的。如果你想了解更多關于分片的知識,我推薦你看這個擴展問答和這篇博文。(編者按:中譯本見文末超鏈接《以太坊上的分片》及《以太坊分片:overview and finality》)
Ⅱ. 如果我們能夠從以太坊現(xiàn)有的容量中擠出更多有用的業(yè)務會怎樣?
第二種選擇是從相反的方向考慮的:并不是增加以太坊區(qū)塊鏈本身的容量,如果我們能用已有的容量做更多的事情會怎樣?基層以太坊區(qū)塊鏈的吞吐量是相同的,但實際上我們可以做更多對人們以及應用程序有用的操作,像交易、游戲里的狀態(tài)更新或者簡單的計算。
這就是狀態(tài)通道,Plasma 和 Truebit 等“鏈下”技術背后的智慧。盡管它們每一個都解決了不同的問題,但它們都是通過鏈下操作而不是在以太坊區(qū)塊鏈上運行的,同時仍然保證了足夠的安全性和不可更改性。
它們也被稱為第二層解決方案,因為它們構建在以太坊主鏈上。它們不要求對基層協(xié)議的更改,相反的,它們只是以以太坊智能合約的形式存在,與鏈下軟件進行交互。
在深入理解特定的第2層解決方案之前,理解使其成為可能的基礎見解非常重要。
公有鏈的基本能力在于加密經(jīng)濟共識。仔細調(diào)整激勵機制,并且通過軟件和加密技術來保護它們,我們可以創(chuàng)建可靠的、就系統(tǒng)內(nèi)部狀態(tài)達成一致的計算機網(wǎng)絡。這是 Satoshi 白皮書的關鍵見解,該白皮書現(xiàn)在已應用于許多不同的公有鏈(包括比特幣和以太坊)的設計中。
加密經(jīng)濟學給了我們一個確定性的 核心 ——我們知道,除非一些極端情況就像發(fā)生了51%的攻擊,鏈上的操作(就像支付、或者智能合約)會像寫定的那樣執(zhí)行。
第2層解決方案背后的智慧,是我們可以將這個核心內(nèi)核的確定性作為 錨點——我們附加其他經(jīng)濟機制的一個固定點。第二層經(jīng)濟機制 可以向外擴展公有鏈的效用,讓我們可以進行 鏈下 交互,如果有必要的話,仍然可以可靠地 引用 該核心內(nèi)核。
這些構建在以太坊之上的層并不總是與鏈上操作具有相同的保證。但是它們?nèi)匀痪哂凶銐虻?nbsp;不可更改性 和 安全性,所以仍然是非常有用的。尤其是當不可更改性的要求有稍微的下降時,我們能以更快的速度或更低的開銷來進行操作。
加密經(jīng)濟學并不是以 Satoshi 的白皮書開始和結(jié)束的——它是我們學習應用的一種技術。它不僅在核心協(xié)議的設計中,而且在擴展底層區(qū)塊鏈功能的第二層系統(tǒng)的設計中。
Ⅰ. 狀態(tài)通道
狀態(tài)通道是一種技術,一種進行鏈下交易和其他狀態(tài)更新的一種技術。然而,在一個狀態(tài)通道內(nèi)發(fā)生的事情仍然保持著非常高的安全性和不可更改性:如果出現(xiàn)任何問題,我們?nèi)匀豢梢赃x擇回溯到鏈上交易中確定的“硬核”。
大多數(shù)的讀者對支付通道 比較熟悉,支付通道已經(jīng)存在了好幾年了,并且最近通過閃電網(wǎng)絡搭建在了比特幣上。狀態(tài)通道是更 通用 的支付通道,它們不僅可以用來進行支付,還可以用來在區(qū)塊鏈上進行任意的狀態(tài)更新,就像改變智能合約的內(nèi)部狀態(tài)。2015年,杰夫·科爾曼首次詳細描述了狀態(tài)通道。
解釋狀態(tài)通道如何運行的最佳方法就是看一個例子。記住,這是一個概念性解釋,這意味著我們不會涉及具體實現(xiàn)的技術細節(jié)。
想象一下,Alice 和Bob 想玩一個井字游戲,贏家可以獲得1eth。要做到這一點,最簡單的方法就是在以太坊上創(chuàng)建一個智能合約,它可以實現(xiàn)井字游戲的規(guī)則,并跟蹤每個玩家的操作。每次當一個玩家進行一次操作的時候,他們向智能合約發(fā)起一個交易。當其中一個玩家贏了的時候,就像規(guī)則里描述的那樣,智能合約就給贏家支付1eth。
這是可行的,但是效率低下、速度慢。Alice和Bob正在讓整個以太坊網(wǎng)絡處理他們的游戲,這可能多于他們的需求。每次玩家想要進行操作的時候,他們都必須支付gas費用,而且他們必須等幾個塊開采后才能采取下一步行動。
相反的,我們可以設計一個系統(tǒng),讓Alice和Bob在 盡可能少地進行鏈上操作 的情況下來玩井字游戲。Alice和Bob將能在鏈下更新游戲的狀態(tài),同時仍然有充分的信心,如果有必要的話,他們可以恢復到以太坊主鏈的狀態(tài)。我們把這種系統(tǒng)稱為狀態(tài)通道。
首先,我們在以太坊主鏈上創(chuàng)建一個理解井字游戲的智能合約“法官”,并把 Alice 和 Bob 初始化為兩個游戲玩家。這個智能合約包含 1eth 的價格。
然后,Alice 和 Bob 開始玩游戲。Alice 創(chuàng)建并簽署了一個描述她第一次操作的交易,并將它發(fā)送給 Bob,Bob 也對交易簽了名,并把簽名版本發(fā)了回去,而且為自己保留一個副本。然后,Bob 創(chuàng)建并簽署了一個描述他第一次操作的交易,并將它發(fā)送給 Alice,Alice 也對交易進行簽名,再發(fā)回去,并為自己保留一個副本。每次,他們都更新游戲的當前狀態(tài)。每一個交易包含一個聲明,這意味著后面的交易總是能知道每一個操作發(fā)生的順序。
到目前為止,沒有任何事情發(fā)生在鏈上。Alice 和 Bob 只是在網(wǎng)上互相發(fā)送交易,沒有任何東西傳到區(qū)塊鏈上。然而,所有的交易都能發(fā)送到法官合約上,換句話說,它們是有效的以太坊交易。你可以把這看作是兩個人來回互相在寫一系列區(qū)塊鏈認證的支票。實際上沒有錢存入銀行或取出,但每人都有一堆他們可以隨時存入的支票。
當 Alice 和 Bob 結(jié)束這個游戲時,也許是因為 Alice 贏了,他們可以向法官合約提交最終的的狀態(tài)(例如一系列的交易)來關閉這個通道,這樣只支付一筆交易的費用。法官合約確保這個最終狀態(tài)是雙方都簽名的,等一段時間以確保沒有人能合法的改變這個結(jié)果,然后就向 Alice 支付 1eth 的獎勵。
為什么我們需要法官合約所等待的“挑戰(zhàn)期”?
想象一下Bob沒有把最終的真實狀態(tài)發(fā)送給法官,而是發(fā)送之前的狀態(tài)(一個之前他能贏 Alice 的狀態(tài))。法官只是一個傳統(tǒng)的合約,它本身無法知曉這是否是最新的狀態(tài)。
挑戰(zhàn)期給了 Alice 一個向法官合約證明 Bob 關于游戲最終狀態(tài)的謊言的機會。如果 Bob 發(fā)送的是更早的狀態(tài),那么 Alice 是保留過這個狀態(tài)的副本的,她就可以把這個狀態(tài)提交給法官合約。法官合約通過查看聲明就能判斷Alice發(fā)送的狀態(tài)是最新的,并且拒絕 Bob 竊取勝利的企圖。
功能和限制
狀態(tài)通道在許多應用中都非常有用,它們在執(zhí)行鏈上操作方面有嚴格的改進。然而,重要的是要記住,在決定一個應用程序是否適合通道化時,就已經(jīng)做了特定的權衡:
狀態(tài)通道依賴于有效性。如果 Alice 在挑戰(zhàn)期內(nèi)丟失了網(wǎng)絡連接(可能是Bob渴望贏得獎品,破壞了她家的網(wǎng)絡連接),她可能無法在挑戰(zhàn)期結(jié)束前做出回應。不過,Alice 可以讓他人保留自己的狀態(tài)副本,并支付一定費用,來保持她的有效性。
當參與者將在很長一段時間內(nèi)交換許多狀態(tài)更新時,它們特別有用。這是因為在部署法官合約時創(chuàng)建的狀態(tài)通道有一個初始成本,不過一旦部署完畢,在該通道內(nèi)每個狀態(tài)更新的成本就會非常低。
狀態(tài)通道最適用于具有一組確定的參與者的應用程序。這是因為法官合約必須始終知道作為通道的一部分的實體(即地址)。我們可以添加和刪除成員,但每次都需要更改合約。
狀態(tài)通道擁有強大的隱私性,因為一切都在參與者之間的通道“內(nèi)部”發(fā)生,而不是廣播和記錄在鏈上。只有最初和最后的交易必須公開。
狀態(tài)通道具有即時終結(jié)性,這意味著只要雙方都簽署了一個狀態(tài)更新,這個狀態(tài)就可以被認為是最終狀態(tài)。雙方對此都有很高的保證,如果有必要,他們可以“強制執(zhí)行”將此狀態(tài)放到鏈上。
在 L4 中,我們正在構建 Counterfactual 框架:一個在以太坊上的廣義狀態(tài)通道的框架。我們通用的模塊化的實現(xiàn),將允許開發(fā)人員即使本身不是狀態(tài)通道專家的情況下,在其應用程序中使用狀態(tài)通道。你可以在這里閱讀關于這個項目的更多內(nèi)容。我們將在2018年第一季度發(fā)布描述我們技術的論文。
另一個以太坊上值得注意的狀態(tài)通道項目是雷電網(wǎng)絡,它目前專注于建立一個支付通道網(wǎng)絡,模式與閃電網(wǎng)絡相似。這意味著你不必與每個想要與之交易的特定人員都開通一個狀態(tài)通道,你可以打開一個連接著更大的狀態(tài)通道網(wǎng)絡的通道,如此你可以向任何連接在這個狀態(tài)通道網(wǎng)絡上的人付款,并且不需與額外的費用。
除了 Counterfactual 框架和雷電網(wǎng)絡,在以太坊還有幾個用于特定于應用程序的狀態(tài)通道。例如,F(xiàn)unfair 為其分布式博弈平臺建立了狀態(tài)通道(他們稱之為“博弈通道”),Spankchain 已經(jīng)為成人參與者建立了單向支付通道(他們還為其ICO使用了狀態(tài)通道),而且 Horizon Games 在他們的第一個以太坊為基礎的游戲中也在使用狀態(tài)通道。
Ⅱ. Plasma
2017年8月11日,Vitalik Buterin 和 Joseph Poon 發(fā)表了一篇名為《Plasma:自主智能合約》的文章。這篇論文介紹了一種新技術,可以使得以太坊每秒交易數(shù)比目前可達到的更多。
就像狀態(tài)通道,Plasma 是一種鏈下交易的技術,同事它依靠以太坊底層來實現(xiàn)它的安全性。不過 Plasma 是從一個新的方向?qū)崿F(xiàn)了狀態(tài)通道,它允許創(chuàng)建附加在以太坊主鏈上的子鏈。這些子鏈反過來可以產(chǎn)生他們自己的子鏈,他們的子鏈也可以產(chǎn)生他們子鏈,等等。
其結(jié)果就是,我們可以在子鏈級別執(zhí)行許多復雜的操作,運行擁有數(shù)千名用戶的整個應用程序,并且只需與以太坊主鏈進行盡可能少的交互。Plasma 子鏈可以更快地操作,且交易費用更低,因為它的操作不需要在整個以太坊區(qū)塊鏈存留副本。
為了理解Plasma如何運行的,我們來看一個如何使用它的例子。
讓我們假設你正在以太坊創(chuàng)建一個交易卡游戲。這些卡片將是 ERC 721 不可替代的 token(如 Cryptokitties ),但這些卡片具有某些的定的特征和屬性可讓用戶互相對戰(zhàn)。例如“爐石傳說”或“萬智牌”。 這種復雜的操作在鏈上執(zhí)行起來是很昂貴的,所以你決定使用Plasma來代替應用程序。
首先,我們在以太坊主鏈上創(chuàng)建了一套智能合約,作為Plasma 子鏈的“根”。Plasma 根包含了子鏈的基本“狀態(tài)交易規(guī)則”(諸如“交易不能花費已經(jīng)花費的資產(chǎn)”),記錄了子鏈狀態(tài)的哈希值,并且作為一種“橋梁” 讓用戶在以太坊主鏈和子鏈之間轉(zhuǎn)移資產(chǎn)。
然后,我們創(chuàng)建子鏈。子鏈可以擁有它們自己的共識算法,在這個例子中,假設它使用 POA,POA 是一種簡單的、依賴于可信塊生產(chǎn)者(即驗證者)的共識機制。區(qū)塊生產(chǎn)者與 POW 系統(tǒng)中的礦工類似,它們是接收交易、形成區(qū)塊并收取交易費的節(jié)點。讓我們保持例子的簡單性,假設你(創(chuàng)建游戲的公司)是唯一一個創(chuàng)建區(qū)塊的實體,即你的公司運行著幾個節(jié)點,這些節(jié)點被當做子鏈的塊生產(chǎn)者。
子鏈一旦創(chuàng)建并激活,塊生產(chǎn)者將定期向根合同做出聲明。這意味著他們實際上在說“我聲明子鏈中最新的一塊是X”。這些聲明被記錄在Plasma根中的鏈上,作為子鏈發(fā)生計算的證據(jù)。
現(xiàn)在子鏈已經(jīng)準備好了,我們可以創(chuàng)建交易卡游戲的基本組件。卡片本身是 ERC721 中、最初在以太坊主鏈上創(chuàng)建的,然后通過 Plasma 根移動到子鏈上。這引出了一個關鍵點:Plasma 允許我們擴展基于區(qū)塊鏈的數(shù)字資產(chǎn)的互動,但這些資產(chǎn)需要首先在以太坊主鏈上創(chuàng)建。然后,我們在子鏈上部署包含所有游戲邏輯和規(guī)則的實際游戲應用的智能合約。
當用戶想玩我們的游戲時,他們 只與子鏈交互 。他們可以持有資產(chǎn)(ERC721卡)與以太幣進行兌換,和其他用戶(無論我們的游戲允許他們做什么)玩游戲,而無需直接與主鏈交互。因為只有非常少的節(jié)點(即塊生產(chǎn)者)必須處理交易,所以交易費會很低并且操作會很快。
但是這樣安全嗎?
通過把更多操作從主鏈移到子鏈上,很明顯我們可以進行更多操作。但這樣有多安全?發(fā)生在子鏈上的交易實際上是否真的是最終的?畢竟,我們剛剛描述了一個系統(tǒng),其中只有一個實體控制著我們子鏈的塊的生產(chǎn)。這不是中心化嗎?公司會不會竊取你的資金,或者只要它想就能隨時拿走你的收集卡片(資產(chǎn))嗎?
簡而言之,即使在單個實體控制子鏈上所有塊生產(chǎn)的 情況 下,Plasma 也為你提供了一個基本保證,即你始終可以將金和資產(chǎn)退回到主鏈上。如果一個塊生產(chǎn)者開始惡意行事,可能發(fā)生的最糟糕的事情就是他們迫使你離開子鏈。
讓我們了解一下塊生產(chǎn)者能惡意行為的幾種情況,并了解Plasma如何處理這些情況。
首先,想象一下一個塊生產(chǎn)者對你進行欺詐——通過創(chuàng)建一個你的資金立即被他們控制的假的新塊。他們是唯一的塊生產(chǎn)者,所以他們可以隨心所欲的創(chuàng)建不符合我們區(qū)塊鏈規(guī)則的新塊。就像其他區(qū)塊一樣,他們必須向根合約廣播一個包含此區(qū)塊證據(jù)的聲明。
就像上面提到那樣,用戶總是有一個最終的保證:他們可以把資產(chǎn)退回到主鏈上。在這種情況下,用戶(或者更確切地說一個代表他們的應用程序)能夠檢測到盜竊的企圖,并且在區(qū)塊生產(chǎn)者嘗試并使用他們偷到的資產(chǎn)之前把自己的資產(chǎn)退回到主鏈上。
Plasma 還創(chuàng)建了一種機制,防止欺詐時不能退回到主鏈上。Plasma 包含了一個機制,任何人(包括你在內(nèi))都可以向根合約發(fā)布欺詐證明,嘗試表明該塊的生產(chǎn)者有欺詐行為。這個欺詐證明會包含前一個塊的信息,并且允許我們證明根據(jù)子鏈規(guī)則,當前塊(錯誤塊)不是根據(jù)前一個塊的狀態(tài)正確產(chǎn)生的。如果這個欺詐被證實,那么子鏈就會回滾到前一個區(qū)塊的狀態(tài)。更好的是,我們構建了一個處罰系統(tǒng):任何對錯誤塊簽名的塊生產(chǎn)者都會丟失他們在鏈上的保證金。
但是提交一個欺詐證明要求你能獲取底層數(shù)據(jù)——即:用于證明欺詐的區(qū)塊的實際歷史。如果塊生產(chǎn)者為了阻止 Alice 向根合約提交欺詐證明,沒有把之前的塊的信息進行共享怎么辦?
在這種情況下,Alice的解決方案是把她的資金退回到主鏈上,并離開這個子鏈。本質(zhì)上,其實是Alice向根合同提交了“證明資金”。在任何人都能向她的證明發(fā)出挑戰(zhàn)的延遲期后(例如,證明她在之后一個合法的區(qū)塊里花掉了這些資金),Alice的資金就回到了以太坊主鏈上。
最后,塊生產(chǎn)者可以審查子鏈的用戶。如果他們想,塊生產(chǎn)者可以不把某些交易包含到塊中,從而有效地阻止了一個用戶在子鏈上的任何操作。如上所述,此種情況下,對于用戶來講,解決方案僅僅是把資產(chǎn)退回到以太坊主鏈上就可以了。
但是,資金退回本身就有風險。有一個問題是,如果子鏈上所有的人都同時退回資金會發(fā)生什么。在大量資產(chǎn)退回的情況下,以太坊主鏈在挑戰(zhàn)期內(nèi)可能沒有足夠的容量來處理每個人的交易,這意味著用戶可能會丟失資金。盡管有許多能阻止這種情況發(fā)生的技術,例如,通過延長挑戰(zhàn)期的方式來適應資金退回的需求。
值得注意的是,并不是所有的塊生產(chǎn)者都要被一個實體所控制——這只是一個的極端的例子。我們可以創(chuàng)建子鏈,并把塊生產(chǎn)者分布在不同的實體中,即,類似公有鏈那樣,以一種分布式的方式進行管理。在這種情況下,塊生產(chǎn)者以上述方式進行干預的風險較小,因此用戶不得不把資產(chǎn)轉(zhuǎn)移到主鏈上的風險也小。
現(xiàn)在我們已經(jīng)介紹了狀態(tài)通道和 Plasma,以下幾點對比值得注意。
有一點不同就是當狀態(tài)通道的各方都同意退出時,狀態(tài)通道可以立即執(zhí)行資金回退。如果Alice和Bob都同意關閉通道并退回資金,只要他們對最終狀態(tài)達成一致,他們可以立即從狀態(tài)通道中得到他們的資產(chǎn)。這在plasma中是不可能的,就像上面說的,用戶必須經(jīng)歷一個有挑戰(zhàn)期的資金退回過程。
狀態(tài)通道平均每個交易的交易費要比Plasma便宜,而且狀態(tài)通道速度更快。這就意味著我們可能在Plasma上構建狀態(tài)通道。例如,在有兩個用戶進行一系列小交易交互的應用程序上,構建狀態(tài)通道。在子鏈級別構建狀態(tài)通道比直接在子鏈上處理交易更快更便宜。
最后值得注意的是,這些只是部分描述,我們還遺漏了許多細節(jié)。Plasma 本身就處于非常早的階段。如果你想了解更多關于 Plasma 的現(xiàn)狀,可以看 Vitalik 最近關于 Plasma 最小實現(xiàn)版的提議(即精簡 Plasma 實現(xiàn)方案)。這里有臺灣團隊正在實現(xiàn)的Plasma,你可以在這個代碼庫中找到。OmiseGo 正在實施他們的分布式交互進行——他們進度的更新在這里。
Ⅲ.Truebit
Truebit 是鏈下一種幫助以太坊進行繁重、復雜計算的技術。這使得它與狀態(tài)通道和Plasma不同,它們對于提高以太坊區(qū)塊鏈的總交易吞吐量更有用。正如我們在開篇部分所討論的那樣,擴容是一個多方面的挑戰(zhàn),它不僅僅要提高交易吞吐量。Truebit 不會提高交易吞吐量,但它能讓基于以太坊的應用程序仍然以在主鏈上驗證的方式,做更復雜的事情。
這將使我們能夠?qū)σ蕴粦贸绦蛴杏玫?、計算成本高、無法在鏈上進行的操作。 例如,驗證來自其他區(qū)塊鏈的簡單支付驗證(SPV)證明,這個證明可以讓以太坊智能合約“檢查”交易是否在另一個鏈上已經(jīng)發(fā)生(如比特幣或狗狗幣)。
讓我們看一個例子。想象一下你有一些代價昂貴的計算(就像 SPV 證明)需要作為應用程序的組成部分。你不能僅僅把它當做以太坊主鏈智能合約的一部分,因為SPV證明的計算代價是非常昂貴的。記住,在以太坊上直接進行任何計算都是非常昂貴的,因為每個節(jié)點都要并行處理這種操作。以太坊的區(qū)塊有一個 最大 gas 值限制,從而為該區(qū)塊中所有交易能執(zhí)行的計算總量設置了上限。一個 SPV 證明的計算代價是非常大的,即使它是區(qū)塊里唯一的交易,它需要的 gas 值也是單個區(qū)塊 gas 值限制的許多倍。
相反,你向別人支付一小筆費用,把計算放到鏈外。收你錢的人就被稱為求解者。
首先,求解者支付智能合約中的保證金。然后,你給求解者描述一下他們需要執(zhí)行的計算。他們進行計算,并返回結(jié)果。如果結(jié)果是正確的(大多都在一秒鐘內(nèi)),他們的保證金就能返回。如果事實證明求解者沒有正確執(zhí)行計算——即他們有欺詐操作或犯了錯誤,那么他們就失去保證金。
但是,我們?nèi)绾闻袛喾祷亟Y(jié)果是正確還是錯誤呢?Truebit 使用一種稱為“驗證游戲”的經(jīng)濟機制。從本質(zhì)上講,我們?yōu)楸环Q作挑戰(zhàn)者的其他團體創(chuàng)造了激勵,讓他們來檢查求解者的工作。如果挑戰(zhàn)者能夠通過驗證游戲證明求解者提交了錯誤的結(jié)果,那么挑戰(zhàn)者將得到獎勵,而求解者則丟失了他們的保證金。
由于驗證游戲是鏈上執(zhí)行的,因此它不能僅僅計算結(jié)果(這會破壞系統(tǒng)的整個目的,如果我們把計算在鏈上質(zhì)詢,則不需要Truebit)。相反,我們強迫求解者和挑戰(zhàn)者來驗證他們沒有達成一致的具體操作。實際上,我們把雙方逼到一個死角——找到他們不同意結(jié)果的實際代碼行。
一旦一個特定的操作經(jīng)過了驗證,那么它就小到足以在以太坊主鏈上執(zhí)行了。然后我們以太坊上的智能合約執(zhí)行這個操作,這個智能合約能夠一勞永逸的解決哪一方在說真話,哪一方在說假話或者或者犯了錯誤。
如果你想了解更多關于Truebit的東西,你可以閱讀這篇文章,或者Simon de la Rouviere的博客。(編者注:中譯本見文末超鏈接《一個可擴展的去中心化計算的代碼執(zhí)行法庭》)
第2層的解決方案都有一個共同的見解:一旦我們擁有公有鏈提供的確定性核心內(nèi)核,我們就可以將其用作擴展區(qū)塊鏈應用程序可用性的加密經(jīng)濟系統(tǒng)的錨點。
現(xiàn)在我們已經(jīng)研究了一些示例,我們可以更具體地了解第2層解決方案是如何應用此見解的。第2層解決方案使用的經(jīng)濟機制往往是互動游戲:它們通過為不同團體創(chuàng)建激勵,來相互競爭或“檢查”彼此的工作。區(qū)塊鏈應用程序可以假定某給定的聲明可能是真實的,因為我們已經(jīng)為另一方創(chuàng)建了強激勵,來證明你提供給它的是錯誤的信息。
在狀態(tài)通道中,這就是我們?nèi)绾未_認通道最終狀態(tài)的方法——通過給各團體一個“反駁”對方的機會。在 Plasma 中,這就是我們?nèi)绾喂芾砥墼p證明和資金退回的方法。在Truebit 中,這就是我們?nèi)绾未_保求解者說出真相的方法——通過激勵驗證者證明求解者的錯誤。
這些系統(tǒng)將有助于我們標注將以太坊擴展到龐大全球用戶群中所涉及的挑戰(zhàn)。 一些像狀態(tài)通道和 Plasma 等將增加平臺的交易吞吐量。像 Truebit 這樣的其他方案將可以在智能合約中進行更加 困難 的計算,從而開創(chuàng)新的使用案例。
這三個例子僅代表加密經(jīng)濟解決方案可能設計空間的一小部分。我們甚至沒有說像 Cosmos 或 Polkadot 這樣的“跨鏈協(xié)議”所做的工作(盡管他們還有一些其他內(nèi)容都是“第2層”解決方案,但這些另一篇文章的主題)。我們還應該期望發(fā)明新的、不可思議的第2層系統(tǒng),以改進現(xiàn)有模型,或在速度、不可更改性和開銷之間提供新的權衡。
比任何特定第二層解決方案更重要的是,進一步發(fā)展底層的技術和機制,如果可能的話,要把加密經(jīng)濟設計這種底層技術放到第一位。
對于像以太坊這樣的可編程區(qū)塊鏈的長期價值而言,這些第2層擴展方案是一個有力的論據(jù)。只有在區(qū)塊鏈可編程時,構建第2層解決方案的經(jīng)濟機制才是可能的:你需要使用腳本語言來編寫執(zhí)行交互式游戲的程序。這對比特幣等區(qū)塊鏈來說要困難得多(或者在某些情況下,比如 Plasma 是不可能的),因為它只提供有限的腳本功能。
以太坊允許我們構建第2層解決方案,以便在速度、不可更改性和開銷之間找到新的權衡點。這使得底層區(qū)塊鏈更適用于多種類的應用程序,因為具有不同威脅模型的不同類型的應用程序,對于不同的權衡有自然的偏好。對于我們希望保護的民族的、國家的高價值交易,我們使用主鏈。對于速度更重要的數(shù)字資產(chǎn)交易,我們可以使用Plasma。第2層可以讓我們在保持去中心化的特性、不可更改的特性和不影響底層區(qū)塊鏈的情況下做出這些權衡。
而且,事先很難預測給定的擴展方案需要哪些腳本功能。設計Ethereum時,Plasma 和 Truebit 尚未發(fā)明。但是因為以太坊是完全可編程的,它實際上能夠?qū)崿F(xiàn)我們發(fā)明的任何經(jīng)濟機制。
充分利用區(qū)塊鏈技術的價值的唯一方法,是通過可編程區(qū)塊鏈(如以太坊)來實現(xiàn)這一加密經(jīng)濟公式創(chuàng)建的 核心確定性。
感謝 Vitalik Buterin,Jon Choi,Matt Condon,Chris Dixon,Hudson Jameson,Denis Nazarov 和 Jesse Walden 對本文早期草稿的評論。
雷鋒網(wǎng)
雷峰網(wǎng)版權文章,未經(jīng)授權禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。