以太坊發展繞不開的擴容問題
以太坊的“擴容”不是單一的、具體的問題,它是一系列問題,如果以太坊想要為全球幾十億使用者提供服務,就必須克服這些阻礙。最普遍的問題就是交易吞吐量。目前,以太坊每秒可以處理15筆交易,相較而言,Visa處理速度可以達到45000筆/秒。在過去一年裡,因為類似Cryptokitties這樣的應用程式太過流行,導致整個網路執行速度也開始放緩,交易價格增加。
類似以太坊這樣的公鏈,要求網路中每一個節點參與處理每一筆交易,這也正是其主要侷限所在。再以太坊上的每個操作——轉賬,Cryptokitty的誕生,ERC20合約的生成——都必須由網路中的每個節點一起執行。這是設計時決定的,也是公鏈權威的保證。節點不需要從外部得知區塊鏈的狀態,它們自己可以解決。
這意味著以太坊的交易吞吐量存在基本限制:不能高於從單個節點獲得的資料的速度。
我們可以要求每個節點做更多的工作。如果我們將區塊大小加倍(不考慮gas的限制),這將意味著每個節點所做的工作量大約是現在工作量的兩倍。但這是以犧牲去中心化為代價的:需要每個節點完成更多的工作,那麼功能較弱的計算機(如消費者的裝置)就可能會退出網路,而挖礦的權利將集中到強大的運營商手上。
因此我們需要一種方案,既能不增加單個節點的負荷,又能處理更多交易。
從概念上講,我們可以採取兩種方法來解決這個問題:
1) 如果每個節點不必並行處理每個操作呢?
第一種方法,改變前提:我們是否可以構建一個區塊鏈,鏈內節點都不必參與處理每筆交易呢?是否可以將網路分成兩個部分,半獨立地運作呢?
分開後,A部分可以處理一批交易,B部分也可以處理一部分,這樣區塊鏈交易吞吐量就提高一倍,因為我們現在設定每兩個節點可以同時工作。如果我們把區塊鏈分成許許多多不同區域,那吞吐量會提高許多倍。
這就是“分片(sharding)”背後的理念,是由以太坊V神和其他科研人員提出來的。將一個區塊鏈分成許多不同的“片”,每個“片”都可以獨立處理交易。分片一般是指layer1的擴容方案,因為它是在以太坊的基層協議上實現的。
2) 如果為以太坊建立協議層網路呢?
第二種選擇和第一種恰恰相反:與其增加以太坊自身的處理能力,不如在現有的基礎之上採取措施。在以太坊區塊鏈基本層的吞吐量不變的基礎上,嘗試執行更多操作,比如交易、狀態更新或簡單的計算。
這就是“鏈下”技術背後的原理,具體的技術包括狀態通道,Plasma,Truebit。雖然每一種技術旨在解決不同問題,但它們都需要在保證安全性的前提下,進行“鏈下”操作。
這也被稱作layer2,因為它們是建立在以太坊主鏈之上的,不需要在基礎層上進行改變,相反,只是作為與鏈下軟體互動的智慧合約存在的。