解讀以太坊layer2擴容方案

買賣虛擬貨幣
2018年,是專注於以太坊基礎設施的一年。在這一年,大家對網路侷限性進行了測試,重新把精力集中到擴容技術上。以太坊還處於嬰兒時期。今天,它還不夠健全,也不具備可擴充套件性。任何瞭解這項技術的人,都清楚知道這一點。但是在過去一年裡,由投機驅動的炒作,過分誇大了區塊鏈的能力。以太坊與web3——一個安全、易於使用的分散式網路,受一套共識機制約束,併為數十億人使用——仍在大家的視野範圍內,在關鍵基礎設施完善之前,都不會實現。構建這一基礎設施、擴充套件以太坊功能的專案,都被稱作擴容方案。它們有許多不同形式,而且往往都是相互相容或互補的。本文中,我將深入探討一種擴容方案:“鏈下”或者“layer2”。·首先,我將討論以太坊(以及所有區塊鏈)擴容挑戰。·其次,我將談到解決擴容問題的不同方案,並區分“layer1”和“layer2”。
·第三,我將介紹layer2,並分析它是如何工作的,特別是狀態通道(state channels)、Plasma、和Truebit。本文的重點是讓讀者對layer2的工作原理有個全面而詳細的理解。但我不會深入到程式碼研究和特定的使用場景。相反,我們專注於構建這種系統的經濟機制,以及所有layer2技術的原理。1. 公有鏈的擴容挑戰首先,必須要知道,“擴容”不是單一的、具體的問題。它是以太坊在服務全球幾十億使用者之前,必須要解決的問題。首先就是交易吞吐量方面。目前,以太坊每秒可以處理15筆交易,相比之下,Visa處理速度可以達到45000筆/秒。在過去一年裡,一些應用程式——像Cryptokitties發展的很好,導致整個網路執行速度也開始放緩,交易價格增加。像以太坊這樣的公有鏈,要求網路中每一個節點參與處理每一筆交易,其主要侷限也正在於此。以太坊上的每個操作——轉賬,Cryptokitty的誕生,ERC20合約的生成——都必須由網路中的每個節點一起執行。這是設計時決定的,也是使公有鏈足夠權威的原因之一。節點不需要從外部得知區塊鏈的狀態,它們自己可以解決。
這對以太坊的交易吞吐量設定了一個基本限制:它不能高於從單個節點獲得的資料的速度。我們可以要求每個節點做更多的工作。如果我們將區塊大小加倍,這將意味著每個節點所做的工作量大約是現在工作量的兩倍。但這是以犧牲去中心化為代價的:需要節點做更多的工作,那麼功能較弱的計算機(如消費者裝置)可能會退出網路,而挖礦權利將集中到強大的運營商手上。我們需要一種方案,既能不增加單個節點的負荷,又能處理更多交易。從概念上講,我們可以採取兩種方法來解決這個問題:1) 如果每個節點不必並行處理每個操作呢?第一種方法,顛覆前提:如果我們可以構建一個區塊鏈,鏈內節點都不必參與處理每筆交易呢?如果網路被分成兩個部分,可以半獨立地運作呢?
被分開後,A區可以處理一批交易,B區也可以處理一部分。這可以把區塊鏈交易吞吐量提高一倍,因為我們現在設定每兩個節點可以同時工作。如果我們把區塊鏈分成許許多多不同區域,那吞吐量會提高許多倍。

這就是“分片(sharding)”背後的理念,是由以太坊V神和其他科研人員提出來的。一個區塊鏈被分成許多不同的“片”,每個“片”都可以獨立處理交易。分片一般是指layer1的擴容方案,因為它是在以太坊的基層協議上實現的。

2) 如果為以太坊建立協議層網路呢?

第二種選擇和第一種恰恰相反:與其增加以太坊自身的能力,不如在其基礎之上採取措施。以太坊區塊鏈基本層的吞吐量不變,但實際上我們可以執行更多操作,比如交易、狀態更新或簡單的計算。

這就是“鏈下”技術背後的原理,像狀態通道,Plasma,Truebit。雖然每一種技術旨在解決不同問題,但它們都需要在保證安全性的前提下,進行“鏈下”操作。

這也被稱作layer2,因為它們事建立在以太坊主鏈之上的。它們不需要在基礎層上進行改變,相反,它們只是作為與鏈下軟體互動的智慧合約存在的。


2. Layer2是數字經濟解決方案

在細說layer2解決方案之前,先來了解一下其背後的原理。

公有鏈的基本力量在於數字經濟共識。透過仔細調整激勵措施,並將其與密碼學結合,從而從系統內部達成共識。這也是中本聰白皮書中提到的重點,這點現在已經被應用到許多不同的公有鏈中,包括比特幣和以太坊。

數字經濟共識給了我們一個硬核——除非像51%攻擊這樣極端事件的發生,否則所有操作(包括支付,或者智慧合約)都將按書寫程式執行。

Layer2背後的原理是,我們可以將這個確定性核心作為一個錨——在此基礎之上附加其他經濟機制。Layer2可以將公有鏈的效用擴充套件到鏈外,讓我們在鏈外互動成為可能,這些互動在需要的時候仍然可以返回到主鏈。

這些層都是建立在以太坊主鏈之上的,所以它並不能像鏈上操作一樣安全。但是仍然可以確保它們是最終地、安全地、實用地——特別是只需要犧牲一點操作許可權,就可以提高運作效率,降低手續費用。

數字經濟學並不是由中本聰的白皮書開始,也不會就此結束——這是我們正在嘗試應用的技術而已。不僅在核心協議的設計上,也體現在旨在擴充套件底層鏈功能的layer2的設計中。

Ⅰ. 狀態通道(State channels)

狀態通道指的是“鏈下”處理交易和其他操作的一種技術。然而,發生在狀態通道內事物仍然由很高的安全性和終結性:如果出了什麼問題,我們仍然可以選擇回到鏈上交易。

很多讀者都知道支付通道,這個已經出現許多年了,最近也在透過閃電網路(lightning network)在比特幣上實施。狀態通道是支付通道更為普遍的形式——它們不僅可以處理支付,也可以處理區塊鏈的“狀態更新”——就像智慧合約的更改。2015年,Jeff Coleman首先提出狀態通道。

來看一個例子,可以更好解釋狀態通道的工作方法。請注意,這是一個概念性的解釋,這意味著我們不會進入特定的技術細節。

想象一下,Alice和Bob玩三子棋遊戲(tic tac toe),贏家可以獲得1ETH作為獎勵。最簡單的辦法,就是在以太坊上建立一個智慧合約,將三子棋遊戲的規則寫入智慧合約內,並追蹤每一名玩家的棋子移動。每次玩家移動棋子時,就給合約傳送一次。當一個玩家生出,按規則,合約將支付1ETH給勝出者。

這雖然可行,但是效率低、速度慢。Alice和Bob的整個以太坊網路都在為這個遊戲執行,造成資源的浪費。玩家每移動一步棋,都要支付一筆費用,並且,他們還要等礦工完成驗證,才能進行下一步。

這時候,我們就可以設計一個系統,讓Alice和Bob的互動儘量在鏈下進行。Alice和Bob可以在鏈下更新狀態,並在需要的時候,回到鏈上交易。我們把這種系統稱之為“狀態通道”。

首先,我們在以太坊主鏈上建立一種智慧合約作為“法官”,並將遊戲規則寫入合約,並識別出Alice和Bob是本次遊戲的兩個玩家。再給這個合約設定1ETH的獎勵。

緊接著,Alice和Bob開始互動。Alice開始走第一步,簽名後傳送給Bob,Bob也會簽名,並將自己簽名後的版本發回,自己儲存一份福本。然後Bob走一步,簽名後傳送給Alice,Alice也簽名後發回,自己儲存副本。每次,他們都會更新自己的狀態。每次互動都會包含一次“隨機數nonce”,這就可以給每次互動按時序排列。

至此,所有操作都不是在鏈上發生。Alice和Bob只是在網際網路中發生了交易,但是所有交易都可以上傳至合約——換句話說,它們依然是有效的以太坊交易。你可以理解成,這兩個人是在來回寫著區塊鏈認證的支票。銀行沒有存款或者取款,但是每張支票都可以隨時存入。

如果Alice和Bob的遊戲結束,比如說Alice贏了,他們可以上傳最終狀態(交易清單)並關閉通道。這樣,只用支付一次交易費用就可以了。合約可以確保“最終狀態”有雙方簽名,並等待一段時間,以確保結果可靠,最後把1ETH的獎金支付給Alice。

為什麼需要這個等待時間?

假設Bob上傳的不是最終版本,而是他贏過了Alice那個版本。但是合約只會執行指令,無法知道哪一個是最終版本。這個時候,設定一段等待時間,可以讓Alice提供證據證明自己提供的是最終版本。

Alice提交雙方簽名的交易副本,合約透過交易的nonce確定Alice提交的是最終版本,駁回Bob的請求。

特點和限制

狀態通道適用於很多應用程式,並對傳統的鏈上操作進行了許多升級。但是,在引入狀態通道之前,還必須考慮其他因素:

·狀態通道依賴可用性。如果Alice在過程中斷網了(假設是由於Bob迫切想要獲得獎金,而破壞了Alice家的網),那麼她可能無法及時提交狀態資訊。即便如此,Alice可以付錢,讓其他人儲存她的交易狀態,並作為她的代表,維持資料的可用性。

·如果使用者要進行許多次狀態更新,並且持續時間很長,那麼這種狀態通道就特別適合。這是因為雖然在建立時需要一筆費用,但是之後維護成本就會特別低。

·狀態通道適用於那些使用者固定的應用程式。因為合約必須知道通道內的所有實體。雖然可以對人員進行增加或者移除,但這都需要對合同進行更改。

·狀態通道具有很強的隱私屬性。因為所有操作都發生在“內部”通道中,而不會在鏈上公佈,也不會記錄在鏈。只有交易的開始和結束狀態是公開的。

·狀態通道具有即時的終結性。也就是說,一旦雙方對狀態簽名了,就可以認為是最終的。必要的話,也可以“強制”在鏈上執行。

在L4,我們正在構建一個Counterfactual:一個基於以太坊的狀態通道框架。我們計劃完成通用的、模組化的模板,並允許開發人員在其應用程式中使用狀態通道,而不需要自己成為狀態通道專家。

另一個值得關注的狀態通道專案是Raiden,改專案的目標是建立一個支付渠道,使用的是與閃電網路類似的模式。這意味著,與其與特定人員開設通道,你還可以與一個較大的頻道網路開設通道,使你可以與連線到同一頻道的其他任何人交易,並無需手續費。

除了Counterfactual,Raiden之外,還有幾個基於以太坊的的應用程式。例如,Funfair為了它們的去中心化平臺建立的狀態通道(“Fate channels”),Spankchain為成年演員建立了單向支付通道(他們也為ICO建立狀態通道),Horizon遊戲為他們的以太坊遊戲建立了狀態通道。

Ⅱ. Plasma

2017年8月11日,Vitalik Buterin和Joseph Poon發表了名為《Plasma:自主智慧合約》的論文。這篇文章引入了一種全新的技術,可以提高以太坊的處理效率。

與狀態通道一樣,Plasma是一種處理鏈下交易的技術,需要依賴以太坊底層技術去對其安全性進行保障。但Plasma的切入點不一樣,它可以允許在以太坊主鏈上建立“子鏈”(“child” blockchain)。這些“子鏈”,反過來,也可以建立它們自己的“子鏈”,以此類推。

其結果是,我們可以在子鏈級執行許多複雜的操作,執行包含數千名使用者的應用程式,並且只用與以太坊主鏈進行很少的互動。Plasma可以執行的很快,並收取較低的交易費用,因為整個過程不需要在以太坊主鏈上發生。


我們先來看一個例子,好理解Plasma是如何運作的。

讓我們想象一下,你正在以太坊上建立一個交易卡片遊戲。這些卡片就是ERC 721令牌(比如Cryptokitties),但它們具有某些特性和屬性,讓使用者可以進行博弈——比如《壁爐石》(Hearthstone)或《魔法的聚會》(Magic the Gathering)。在鏈上執行這些複雜的操作是很昂貴的,所以使用Plasma是很好的選擇。

首先,我們在以太坊主鏈建立一套智慧合約,作為服務於我們Plasma子鏈的“Root”。Plasma Root包含我們子鏈的“狀態轉換規則”(比如“不能雙花”),記錄子鏈狀態的雜湊,並充當一種“橋樑”,允許使用者在以太坊主鏈和子鏈之間進行互動。

然後,我們創造我們的子鏈。子鏈可以有自己的一套共識機制——在本例中,那就是授權證明(PoA),這是一種依賴可信區塊生產者的共識機制。區塊生產者類似於工作量證明中的礦工——它們是接受交易、生成區塊、收取交易費的節點。打個簡單的比方,假設你是生成區塊的唯一實體——也就是說,你的公司執行幾個節點,這些節點是我們子鏈的區塊生產者。

一旦子鏈被建立或者啟用,區塊生產者就對root合約做出承諾。意味著他們實際在說“我作證,子鏈中的最新區塊是X。”這些承諾都被記錄在Plasma root,以證明子鏈中發生的交易。

現在,子鏈已經準備好了,我們可以建立交易卡遊戲的基本組成部分。卡片是基於以太坊主鏈的ERC 721,透過 plasma root轉移到子鏈。這就引入了一個關鍵點:plasma允許我們與基於以太坊的數字資產進行大規模互動。然後,我們再在子鏈上部署遊戲應用的智慧合約,把遊戲邏輯和規則都寫進合約裡。

遊戲使用者,其實只是與我們的子鏈互動。他們可以持有資產(ERC 721 token),與以太交易,與其他使用者遊戲,從來不用與主鏈直接互動。因為只有少量節點需要處理交易,交易費用會低很多,操作速度也會更快。

但這怎麼確保安全呢?

將更多的操作轉移到子鏈上,主鏈就可以處理更多交易。但是要怎麼保障它的安全呢?在子鏈上發生的交易是最終的嗎?畢竟,我們剛剛還說,會有一個實體公司控制區塊的生成。這不就是中心化嗎?這個公司能隨時盜走你的資金或者遊戲卡嗎?

簡單地說,即使一個公司擁有子鏈區塊生成100%的控制權,plasma也為你提供了一個基本保證,你可以隨時將你的資金和資產取出,放回主鏈。如果一個區塊生產者出現惡意行為,最壞的打算是,它會強迫你離開子鏈。

讓我們看看區塊鏈生產者會有怎樣的惡意行為,再看plasma會做出怎樣的對策。

首先,想象一下,一個區塊生產者會怎樣欺騙你——透過建立一個假的新區塊來控制你的資金。他們是唯一有權力生成區塊的,因而他們可以不按照區塊鏈的法則來建立區塊。與其他區塊一樣,他們也會公佈一份包含該區塊證據的Plasma root契約的承諾。

如上所述,使用者是有保證的,他們可以撤回他們的資產回到主鏈。在這種情況下,使用者(或者更確切地說是代表他們行事的應用程式)將檢測到企圖盜竊的行為,並在區塊生產者嘗試使用他們“竊取”的資產之前退出。

Plasma 還創造了一種機制,以防止欺詐退出主鏈。Plasma包括一種機制,任何人(包括你)都可以向root合約釋出欺詐證據,證明區塊生產者作弊。此欺詐證明將包含有關前一個塊的資訊。根據子鏈的狀態轉換規則,虛假塊不符合以前的狀態。如果欺詐被證實,子鏈將被“退回”到前一個區塊。更好的是,我們構建了一個系統,在這個系統中,任何簽下虛假區塊的區塊生產者都會因丟失一張鏈上存款而受到懲罰。


但提交欺詐證據需要獲得基本資料,即用於證明欺詐的塊的實際歷史。如果區塊生產者也沒有分享先前區塊的資訊,以阻止Alice向root合約提交欺詐證據,該怎麼辦?

在這種情況下,Alice需要取出她的資金,離開子鏈。實際上,Alice向root合約提交了一份“資金證明”。在等待一段時間之後,任何人都可以質疑她的證明(例如,為了證明她在後來的有效區塊中花了這些錢),Alice的資金被移回以太坊主鏈。


最後,區塊生產者可以審查子鏈的使用者。如果他們願意,區塊生產者可以有效地阻止使用者在子鏈上執行任何操作。也就是簡單地將我們所有的資產撤回到上面所述的主鏈上。

然而,取款本身也存在風險。如果子鏈上的所有使用者要在同一時間取出自己所有的資產,以太坊主鏈可能沒有辦法承受這個壓力。也有許多技術可以阻止這件事發生,如延長提款的響應時間。

事實是,一個公司掌控100%區塊生成權是非常極端的情況,一般不會發生這種情況。也就是說,子鏈和公有鏈一樣,是去中心化的。因而上訴提到的風險會比較小。

現在我們已經談到了狀態通道和Plasma,將兩者比較一下。

·一個不同之處是,當同一通道內的所有使用者都同意退出時,狀態通道可以即時退出。比如說,如果Alice和Bob都同意關閉一個通道,並取回他們的資金,他們就可以立即拿回資產。這在Plasma上是不可能的,在Plasma中,使用者必須等待一段時間,才能退出。

·狀態通道也比Plasma更便宜,更便捷。這意味著我們可以將兩者結合起來,在Plasma子鏈上建立狀態通道。例如,在一個app上,兩個使用者可以進行系列小額交易。在子鏈上建立狀態通道,比直接在子鏈上進行交易,會更便宜高效。

·最後,本文可能遺漏了一些細節。Plasma還處在早期,你可以看看V神最近提出的“最小可行的Plasma”。還有一個臺灣團隊也正在做這件事。OmiseGo也在這個方向上努力。

Ⅲ. Truebit

Truebit是幫助以太坊完成繁重計算的鏈下技術。而狀態通道和Plasma是擴大吞吐量的,所以這也是Truebit的不同之處。Truebit不會提高交易吞吐量,但是它會讓基於以太坊的應用程式做更復雜的事情。

有些操作計算成本太高,無法在鏈上執行。例如,驗證來自其他區塊鏈的簡單支付驗證(SPV)證明,這可以讓以太坊智慧合約“檢查”一項交易是否發生在另一條鏈上(如比特幣)。

想象你需要在基於以太坊的app上執行一些昂貴的計算(像SPV證明)。你不能把它簡單的作為以太坊主鏈智慧合約的一部分,因為SPV計算太貴了。事實上,在以太坊上做所有計算都很貴,因為總是需要所有節點都要參與到計算中。

然而,你可以給某個人(解決者)支付一點費用,讓它完成鏈下計算。

首先,解決者往智慧合約存入一筆費用,然後,你把需求告知解決者。他進行計算,然後把結果反饋給你。如果計算結果正確,他的押金會被退回。如果計算出錯(他出錯或作弊),就會損失自己的押金。

那我們怎麼知道結果正不正確呢?Truebit使用一種叫“驗證遊戲”的經濟機制。從本質上講,我們創造了一種激勵機制,鼓勵“挑戰者”來驗證解決者提交的結果。如果挑戰者能夠透過驗證遊戲,證明解決者提交了一個錯誤的結果,那麼他們就會得到獎勵,而解決者則會失去他們的定金。

因為驗證遊戲是在鏈上執行的,它不能簡單地計算結果(這將破壞整個系統的目的,因為如果我們能夠在鏈上進行計算,我們就不需要Truebit)。相反,我們強迫解決者和挑戰者確定他們不同意的具體操作。實際上,我們正在努力使雙方對結果產生異議。


一旦操作被認定,就足以在以太坊主鏈上執行。然後,我們透過智慧合約來執行細節。

結論

Layer2有個共同的核心:一旦有了一個公有鏈提供的確定性硬核,我們就可以將它用作擴充套件塊鏈應用程式有效性的數字經濟系統的錨。

我上面提到一些例子,可以讓我們更具體地瞭解layer2的應用場景。layer2所使用的經濟機制往往是互動式的遊戲:它們透過為不同的參與者創造競爭或“檢查”的動機來發揮作用。區塊鏈應用程式可以假定一個給定的宣告可能是真的,因為我們已經為另一個方提供證明它是假的資訊創造了強大的動機。

在狀態通道中,我們確認渠道的最終狀態的方式是——讓各方有機會“反駁”對方。在plasma中,它是我們如何管理欺詐證據和取款。在Truebit中,它是我們如何確保解題者講真話——透過給驗證者一個激勵來證明解題者是錯的。

這些系統將有助於解決大規模全球使用者群縮放所涉及到的一些挑戰。一些工具,比如狀態通道和Plasma,將增加平臺的事務吞吐量。其他的工具,比如Truebit,將使得有可能將更困難的計算作為智慧契約的一部分,從而開啟新的用例。

這三個示例僅代表了用於數字經濟擴容方案的一小部分。我們甚至還沒有涉及到像Cosmos或Polkadot這樣的“區塊間協議”的工作。我們還應該期望創造新的和意想不到的layer2系統,以改進現有的模型,或在速度、終結性和成本之間提供新的權衡點。

比任何特定的layer2更重要的是進一步開發底層技術和機制:數字經濟。

這些layer2解決方案需要建立在可程式設計區塊鏈之上,如以太坊:你需要一種指令碼語言來編寫程式。對於比特幣這樣的區塊鏈,這就困難得多(或者在某些情況下基本不能實現),因為這些區塊鏈只能提供有限的指令碼。

我們可以在以太坊上構建layer2,並可以在訪問速度、終結性和成本之間達到平衡。這使得底層區塊鏈對於更廣泛的應用程式來說更加實用。對於高價值的交易,建議使用主鏈。對於交易數字收藏品,速度更重要,我們可以使用plasma。Layer2讓我們在不損害底層塊鏈的情況下進行這些權衡,保持去中心化和終結性。

在設計以太的時候,Plasma和Truebit還沒有被髮明出來。但由於以太坊是完全可程式設計的,它幾乎能夠實現我們發明的任何經濟機制。


更多數字貨幣資訊:www.qukuaiwang.com.cn/news

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;