• <option id="cacee"><noscript id="cacee"></noscript></option>
  • <table id="cacee"><noscript id="cacee"></noscript></table>
  • <td id="cacee"></td>
  • <option id="cacee"></option>
  • <table id="cacee"></table>
  • <option id="cacee"><option id="cacee"></option></option>
  • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
    <option id="cacee"><option id="cacee"></option></option>
     找回密碼
     立即注冊

    掃一掃,登錄網站

    首頁 區塊鏈生態 查看內容
    • 3855
    • 0
    • 分享到

    公鏈的擴容挑戰 深度分析以太坊第二層擴容方案

    2018-5-17 08:54

    來源: 巴比特


    公鏈的擴容挑戰深度分析以太坊第二層擴容方案


    對于以太坊來說,2018年是它的底層架構之年。很多早期參與者會在今年測試網絡的極限,將重心放到對以太坊的擴容上。

    以太坊現在仍然還處在初期階段。直到現在,它也沒有那么安全或者可擴容化。對于任何與以太坊近距離工作的人來說,這都是很好理解的。但是就在去年,ico的推動目前已經開始對以太坊目前的網絡造成了很大的壓力。以太坊的承諾和web3,一個安全,易用的去中心化網絡,整合常用的經濟協議,并且被10億級別人來使用,這個概念還沒有落地,而且在正確的底層架構完成之前也不會實現。

    那些正在為以太坊的底層架構以及擴大它能力的項目被稱為擴容解決方案。這些方案有很多中形式,通常來說都是互相兼容的。

    在此文中,我想深入分析下某種擴容解決方案,“鏈下”或者說“2層”解決方案。

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

    其次,我們會討論解決這些擴容挑戰的不同方式,并且會區分“1層”和“2層”解決方案。

    第三,我們會專注于2層解決方案并且解釋它是如何工作的,尤其,我們會討論狀態通道,Plasma和Truebit。

    此文主要專注于讓讀者能夠對于2層解決方案如何工作有一個完整以及細節的理解。但是我們不會討論代碼和具體的實施。而且,我們會專注于理解用來打造這些系統的經濟機制,還有分享一些在所有2層擴容技術中的共識。

    公鏈的擴容挑戰

    首先,理解“擴容”并不是一個單一,特定的問題是非常重要的。它指的是對于以太坊來說必須要解決的挑戰,從而以太坊才能被全球幾十億人使用。

    最常見的擴容挑戰是轉賬吞吐量問題。目前,以太坊每秒大約可以處理15筆轉賬,但是相比Visa,它大約每秒可以處理45,000筆轉賬。去年,一些應用例如以太貓,或者現在出現的ICO,都足夠能讓以太坊網絡“降速”并且轉賬費用也會提高。

    像以太坊這種公鏈的主要限制在于每筆轉賬都需要被網絡中的每個節點處理。以太坊區塊鏈上的每個操作,比如某個轉賬,以太貓出生,新的ERC20合約實施,都需要通過網絡中所有的節點來進行。這是設計原理決定的,因為保證公鏈權威的一部分原因。節點們不用依賴任何其他人來告訴他們,區塊鏈現在的狀態是什么,他們自己能夠辨別。

    這就從根本上給以太坊網絡的轉賬吞吐量造成了限制:它不能比我們從單個節點處獲得的速度更快。

    我們可以讓網絡中每個節點去承擔更多工作。如果我們加倍區塊的大小(也就是區塊的燃料極限),也就是說每個節點在處理每個區塊的時候大約要做雙倍的工作量。但是這就帶來了去中心化的費用問題:節點需要做更多工作意味著低能力的計算機(例如消費電子品)可能就沒辦法在網絡中工作,如果算力集中在高能力計算機中,挖礦就變得非常中心化。

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

    從理論上說,有兩種方法可以解決這個問題:

    如果每個節點不用同步處理某項操作會怎么樣?

    第一種方法和我們的初始想法不同,如果我們打造一個區塊鏈,其中每個節點不需要都去處理每筆交易會怎么樣?如果網絡被分成2部分,他們還可以半自動化的進行操作,又會怎么樣?

    A部分可以處理一批交易,同時B部分可以處理另一批交易。這樣就可以有效地加倍區塊鏈的吞吐量,因為現在處理的極限就是2個同時可以達到的。如果我們將區塊鏈分為很多不同的部分,那么我們就可以把區塊鏈的吞吐量提高多少倍。

    這就是“分片”技術的想法,這是由Vitalik的以太坊研究團隊和其他人提出的擴容解決方案。區塊鏈被分成很多部分成為分片,每個片區都可以獨立地處理交易。分片通常被認為是1層擴容技術因為這是在以太坊底層協議上進行的。

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

    這個觀點從反方向進行考慮:不如去提高以太坊區塊鏈本身的能力,如果我們可以利用現有的能力做更多事情會怎么樣呢?底層以太坊區塊鏈的吞吐量是一樣的,但是實際上我們其實可以做更多對于人們和應用軟件有用的操作,例如轉賬,游戲中的狀態更新,或是簡單的計算。

    這就是類似狀態通道,Plasma和Truebit等技術使用的“鏈下”技術。當然,這些技術都在解決不同的問題,他們都是通過“鏈下”,而不是在以太坊區塊鏈上進行操作,同時也能保證足夠的安全和結果。

    這些也被稱為2層解決方案,因為它們是是基于以太坊主網的其他鏈進行的。他們不會對底層協議進行更改,他們就是基于以太坊的智能合約,同時和鏈下的軟件進行交互。

    第2層擴容解決方案是加密經濟解決方案

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

    支撐公有鏈最基礎的能量就是數字經濟共識。通過仔細協調激勵以及通過軟件和加密算法來對他們進行保障,我們就可以創造計算機網絡,并且對于系統內部狀態可以達成可靠地共識。這就是中本聰白皮書中的主要想法,而且現在這也被應用在不同公鏈的設計中,包括比特幣和以太坊。

    數字經濟共識讓我們獲得核心主鏈,除非有極端事件例如51%攻擊發生,我們知道鏈上操作- 例如支付或者智能合約,會根據寫入的代碼進行執行。

    在2層解決方案背后的想法,就是我們可以把核心主鏈作為錨定,作為一個固定點,我們可以在其上添加經濟機制。第二層的經濟機制可以擴大公鏈的使用性,讓我們能夠在區塊鏈下進行交互,如果有需要,也可以按照主鏈為準。

    這些區塊鏈層是基于以太坊的,不會總是和主鏈操作有同樣的保證。但是他們仍然可以很安全地使用,特別是雖然對于最終結算能力有所減弱,但是可以讓我們處理交易更快并且費用還更低。

    數字經濟并不是跟著中本聰白皮書開始和結束,它只是一種我們正在學著使用的技術。不只是對于核心協議的設計,但是對于第二層協議的設計,其實是擴大了底層區塊鏈的性能。

    狀態通道

    狀態通道是為了能夠在“鏈下”進行轉賬和其他狀態更新的技術。但是,狀態通道內部發生的交易仍然保持著非常高程度的安全和不可改變性:如果出現錯誤,我們仍然會追溯回鏈上交易。

    大多數讀者對支付通道的概念很熟悉,這已經提出有好幾年了,并且最近也通過閃電網絡在比特幣上進行部署。狀態通道比支付通道更加寬泛,他們不止是可以用于支付,而且可以用于區塊鏈上任意的“狀態更新”,就好像在一個智能合約內部進行改變。狀態通道是在2015年由Jeff Coleman首次提出細節的。

    解釋狀態通道最好的方法就是舉例。請記住這是概念解釋,意味著我們不會對特定的實施進行非常技術細節的解釋。

    假設Alice和Bob想要玩井字棋游戲,獲勝者會獲得1eth。比較單純的做法是在以太坊上建立智能合約并且將游戲的規則部署在合約上,并且追蹤每個選手。每次某個選手想要移動,他們會將交易發送到智能合約上。當一個選手贏得勝利,根據規則上定義的那樣,合約會為獲勝者支付1eth。

    這樣做或許可以,但是不會很有效率,還會比較慢。Alice和Bob會讓整個以太坊網絡都在處理他們的游戲,對于他們玩游戲所需要的,這明顯有些過度了。他們在每次移動棋的時候,都需要支付燃料費用,而且在做出下個移動的時候,他們需要等區塊被挖出。

    但是,我們可以設計一個系統,其中讓Alice和Bob能夠在盡量少的鏈上操作的前提下,來玩這個游戲。Alice和Bob可以在鏈下更新游戲的狀態,但是他們對于計算結果也非常有信心,因為如果有必要,他們可以返回到以太坊主網進行驗證。我們把這個系統成為“狀態通道”。

    首先,我們需要在以太坊主鏈上創立一個智能合約“仲裁”,他能夠理解這個游戲的規則,并且將Alice和Bob定義為游戲中的兩個玩家。這個合約需要持有那1eth的獎勵。

    然后,Alice和Bob就要開始游戲。Alice會創建并且簽署一個交易,其中描述了她的第一步棋,然后發送給Bob,Bob也需要簽署這個交易,并且傳回簽名完成的版本,他自己也需要留個備份。然后Bob創建并且簽署一個交易,其中描述了他的第一步,然后發送給Alice,Alice也會簽名,然后發回,并留下備份。每次,他們都會更新游戲的當前狀態。每個交易都包括一個“nonce”,這樣地話,過后我們就可以證明這些確實發生了。

    目前,鏈上還什么都沒有發生。Alice和Bob通過互聯網將交易互相傳送,但是還沒有接觸到區塊鏈。但是,所有的交易都會發生給仲裁合約,換句話說,他們都是有效的以太坊轉賬。你可以認為這就像2個人在互相寫一堆區塊鏈認證的支票。其實沒有錢從銀行存入和取出,但是每個人都有一堆支票,他們可以在任何時候存錢。

    當Alice和Bob的游戲結束,也許因為Alice已經贏了,他們可以通過像仲裁合約提交最終狀態,從而關閉通道(例如,交易清單),而且只需要支付單個交易費用。仲裁確認這是雙方簽署的“最終狀態”,最后等待一段時間來確保沒有開源合法地改變結果,然后給Alice那1eth的獎勵。

    為什么在仲裁合約等待的時候,我們需要“挑戰時間”?

    假設除了像仲裁發送真實的最終狀態,Bob發出了一個舊版本的狀態,里面寫著他贏了Alice。但是仲裁只是個合約,憑他自己,是沒有辦法知道這不是最近的狀態。
    這個挑戰時間就給了Alice一個機會來給仲裁合約證明Bob對游戲的最終狀態撒謊了。如果有更接近的狀態,那么她就可以拿到簽字交易的副本,并且她會上交這些給仲裁。仲裁就會通過檢查nonce,告知Alice的版本才是更接近的,并且Bob想要盜取勝利的想法也會被拒絕。

    未來和局限

    狀態通道在很多情況下都很有用,對于鏈上操作來說是一次非常大的提升。可是,也需要記住很重要地事情,那就是為了使用狀態通道,我們也作出了特別的權衡取舍。

    狀態通道依賴于可用性。如果Alice在問題挑戰過程中斷開了網絡連接(也許因為Bob想要拿獎勵,就切斷了她家的網絡連接)那么她或許就不能在挑戰時間內完成回復。但是,Alice可以支付給其他人費用來持有她狀態的副本,并且代替她來保持網絡可用。

    狀態通道對于用戶在長時間內進行多次狀態更新來說特別有用。因為在部署仲裁合約,并且建立通道的時候,會有初始費用。但是一旦部署,通道內每次狀態的更新,所需的費用都很低。

    狀態通道最好用在定義好的用戶之間。因為仲裁合約必須總是知道參與者(也就是,地址),這是給定通道的一部分。我們可以添加和移除用戶,但是每次都需要對合約進行更改。

    狀態通道有很強的隱私特性,因為任何事情都在通道內部的用戶之間發生的,而不是公開廣播,并且記錄在鏈上。只有打開和關閉交易是需要公開的。

    狀態通道有即時的結果,意味著只要雙方簽署了狀態更新,這就被認為是最終。雙方都會有非常強的保障,如果有必要,他們可以強迫改變鏈上的狀態。

    Plasma

    在2017年8月11日,Vitalik Buterin和Joseph Poon發布了一篇名為Plasma的白皮書:自動化的智能合約。白皮書介紹了能夠讓以太坊每秒進行比現在多很多的轉賬。

    類似狀態通道,Plasma也是進行鏈下轉賬的技術,并且依賴于以太坊區塊鏈的安全性。但是Plasma將這個想法帶去了新的方向,可以在以太坊主鏈上創建子鏈。這些子鏈可以發出他們的子鏈,并且這些子鏈還可以創建子鏈,如此往復。

    最后的結果是,我們可以在子鏈層級上處理很多復雜的操作,可以讓成千上萬的用戶運行整個應用,但是只和以太坊主鏈進行最少的交互。Plasma子鏈可以快速推進,并且需要更少的轉賬費用,因為上面的操作不需要通過整個以太坊區塊鏈。

    為了理解Plasma是怎么工作的,讓我們舉例說明。

    假設你在以太坊上創建一個卡牌游戲。這些會是ERC721不可更改的代幣(例如以太貓),但是會有某種特性和屬性,會讓用戶能和對方一起玩。這類復雜的操作在鏈上進行會十分昂貴,所以你決定使用Plasma來運行你的應用。

    首先,我們在以太坊主鏈上創造了一系列智能合約,可以作為Plasma子鏈的“根源”。Plasma根鏈包含最基礎的子鏈“狀態轉換規則”(就類似“交易不可以發送已經消費的資產”),將子鏈狀態的哈希值記錄,并且作為某種“橋”,能夠讓用戶將資產在以太坊主鏈和子鏈之間轉移。

    然后,我們創造了我們的子鏈。子鏈可以有自己的共識算法,例如,我們說它使用PoA算法,這是取決于可信區塊生產者(也就是,驗證節點)。區塊生產者就類似在工作量證明中的礦工類似,他們就是從區塊接受交易的節點,并且獲得交易手續費。讓我們簡單舉例,假設說你(創造這個游戲的公司)是創造區塊唯一的主體,也就是說,你的公司在運行的幾個節點是我們子鏈的區塊生產者。

    一旦子鏈被創建并且激活,區塊生產者就會對根合約做出定期承諾。這意味著,他們會很有效地說“我承諾在子鏈中最近的區塊是X”。這些承諾都會記錄在Plasma根鏈上,作為子鏈發生過什么的證據。

    現在子鏈已經完成,我們可以創建卡牌游戲的基本組成部分。卡牌本身是ERC721的,這是在以太坊主鏈上創建的,然后通過Plasma根鏈轉移到子鏈上。這就帶來了一個很重要的點:Plasma讓我們可以和基于區塊鏈的數字資產進行交互,但是這些資產需要首先在以太坊主鏈上創建。然后,我們可以將實際游戲應用部署在子鏈的智能合約上,這會包含整個游戲的邏輯和規則。

    當用戶想要玩我們的游戲,他們只需要和子鏈進行交互。他們可以持有資產(ERC721代幣),購買和交易成以太坊,和其他用戶進行對賽,而且不需要和主鏈直接交互。因為只有很少部分的節點(也就是,區塊生產者)需要進行處理交易,手續費會很低,而且速度會快很多。

    但是怎么保證安全呢?

    通過將更多的操作轉移下主鏈,然后轉上子鏈,這樣我們確實可以處理更多的交易。但是安全性如何呢?在子鏈上進行轉賬后,這就結束了嗎?畢竟,我們剛剛描述了一個系統,其中只有單個主體來控制子鏈的區塊生產。這樣不就是中心化了嗎?公司可以在任何時候盜取我們的資金,或者是在任何時候拿走你的卡片呢?

    簡單的回答是:甚至在一種情況下,單個主體控制了子鏈上100%的區塊生產,Plasma也可以給予最基本的保障,你可以提取資金,并且放回主鏈。如果區塊生產者想要進行欺詐,最壞地情況是他們強迫你離開子鏈。

    Truebit

    Truebit是能夠幫助以太坊進行鏈下復雜計算的技術。它其實和狀態通道和Plasma都不同,因為這對于提高以太坊區塊鏈整體轉賬吞吐來說,更加有用。Truebit不會處理更多的交易,但是它會讓基于以太坊的應用可以做更多復雜的事情,而且仍然可以在主鏈上進行驗證。

    這會讓在鏈上進行計算成本過高的以太坊應用,變得更加有效。例如,進行和其他區塊鏈的簡單支付驗證(SPV),這會讓以太坊智能合約“檢查”是否這筆交易在另外的鏈上(例如比特幣或者狗狗幣)發生。

    2層解決方案給我們分享了一個觀點:一旦我們有了公鏈提供的核心,我們可以把它作為數字經濟系統的錨定,然后擴大區塊鏈應用的使用性。

    比特定的2層解決方案更重要地是,底層技術的發展以及數字經濟的設計。

    這些2層擴容解決方案,對于類似以太坊這種可編程區塊鏈來說,是最有利的長期價值推動者。在2層解決方案底層的基礎上打造經濟機制,只有在區塊鏈可以變成的前提下才行:你需要腳本語言來寫代碼,可以強制進行交互游戲。這在比特幣上系統上會變得更加困難,(或者說,對于Plasma來說,這幾乎不可能),這就提供了有限的腳本可能性。

    以太坊可以讓我們創建2層解決方案,以在速度,結果和手續費之間的矩陣平衡中獲得新的優勢。這可以讓底層區塊鏈可以為更多種類的應用所使用,因為不同種類的應用,會有不同的模型,對于權衡也有不同的需求。對于高價值資金交易,我們使用主鏈,來保證安全。對于數字資產交易時,速度更重要,我們使用Plasma。2層擴容技術,讓我們不需要在像底層區塊鏈進行這些權衡的情況下,保護了去中心化和最終結果。

    而且,很難提前預測對于擴容解決方案來說,什么樣的腳本能力是必須的。當以太坊設計的時候,Plasma和Truebit還沒有發明。但是因為以太坊是完全可編程的,它能夠實施我們創造的任何虛擬經濟機制。

    能夠完全利用區塊鏈技術價值的唯一方式,就是和一個類似以太坊的可編程的區塊鏈一起使用,這里的區塊鏈指的是由加密經濟共識創建的核心。

    原文:https://medium.com/l4-media/making-sense-of-ethereums-layer-2-scaling-solutions-state-channels-plasma-and-truebit-22cb40dcc2f4
    作者:Josh Stark
    編譯:nuszjj

    版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。
    相關新聞
    發表評論

    請先 注冊/登錄 后參與評論

      回頂部
    • <option id="cacee"><noscript id="cacee"></noscript></option>
    • <table id="cacee"><noscript id="cacee"></noscript></table>
    • <td id="cacee"></td>
    • <option id="cacee"></option>
    • <table id="cacee"></table>
    • <option id="cacee"><option id="cacee"></option></option>
    • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
      <option id="cacee"><option id="cacee"></option></option>
      妖精视频