Ethereum的可擴展性

擴容能力是什麼?

簡單的來說,可擴展性(scalability)就是對系統增長能力的衡量。就比如,在計算中網路或伺服器可以通過不同方法擴容來處理更多的需求。

加密貨幣中的可擴展性指的是區塊鏈可擴展容那更多用戶的程度。其中的更多用戶意味著區塊鏈將涉及更多的操作和交易競爭。

Ethereum擴容必要性

Ethereum的擁護者認為互聯網的下一次反覆運算將會在該平臺上建立。而那時的Web3.0將帶來一種分散式拓補結構,不再需要中間商、會更注重隱私性,並最終轉向資料的自我擁有。而這些基礎屬性將通過分散式存儲/通訊協定和智慧合約式的分散式運算來構建。

而為了實現之這一目標,Ethereum需要在不損害去中心化的前提下,大規模提升網路處理交易的能力。目前,Ethereum並未像Bitcoin那樣通過限制區塊大小來限制交易量。而只是向區塊中納入了gas limit(單一區塊中可容納最大gas量)。

比方說一個區塊的gas limit為100,000gwei,則當向該區塊中提交10筆gas limit為10,000,又或者是2筆gas limit為50,000的交易時,任何其他的交易都需要等待下一個區塊。

對於每個人都在使用的系統來說,這並不理想。而且當未決交易數量超過區塊可用空間,就會很快出現積壓。同時gas price價格也將上漲,此時人們就不得不支付更高價格來使自己的交易被優先處理。也就說繁忙的網路會使得特定用例中的操作變得非常昂貴。

當初風靡一時的CryptoKitties遊戲則是Ethereum網路局限性很好的示例。2017年,基於Ethereum的遊戲CryptoKitties吸引了大量使用者在網路中進行交易來進行虛擬貓(代表不可替換代幣)的繁殖。而迅速的普及也使得待處理交易火箭式上升,最後導致了網路的極度擁堵。

Blockchain可擴展性三角困局

從表面上來看只要提高區塊的gas limit就可以緩解所有可擴展性問題。也就是上限越高,網路在固定時間範圍內就可處理更多的交易。

遺憾的是,除非犧牲Ethereum的某些關鍵特性,否則這是不可行的。Vitalik Buterin提出了Blockchain Trilemma(區塊鏈不可能三角:擴容、安全性和去中心化)來解釋區塊鏈必須達到的微妙平衡。

Ethereum和Bitcoin等區塊鏈都將安全性和去中心化放在了首位。它們的共識演算法確保了網路的安全性,但其中的網路是由成千上萬的節點組成,所以降低了網路的可擴展性。由於接收和驗證交易都是由眾多節點來完成的,所以相比於中心化方案要慢的多。

另一種情形則是移除區塊的gas limit,這樣的網路則同時具有安全性和可擴展性,但不再是去中心化。

此時單一區塊中將包括更多的交易,最後形成更大的區塊。而網路中的節點扔需定期下載和廣播區塊,所以就需要大量的硬體基礎。也就是說,當gas limit提高時,節點驗證、存儲以及廣播區塊的難度將會增加。

在此過程中無法更上節奏的節點將會退出。假如此種方式持續下去,則僅會有少部分強大的節點倖存,而這就導致了系統的更加中心化。最後你會得到一個安全且可擴展的區塊鏈,但並會去中心化。

最後一種情況是,區塊鏈選擇了去中心化和可擴展性。也就是網路犧牲了共識演算法來實現更快的速度和去中心化,而結果卻是安全性降低了。

Ethereum的交易處理率

最近這些年,Ethereum的TPS(每秒交易量)很少會超過10。對於一個計畫成為“世界電腦”的平臺來說,這個數字低的驚人。

可擴展性解決方案一直都是Ethereum發展過程中重要部分。而Plasma就是解決方案的一種。該解決方案旨在幫助Ethereum及其他區塊鏈網路提高效率。

Ethereum 2.0

Ethereum的確具有很大潛能,但並不能掩飾其存在的局限性。之前我們也已經討論過在可擴展性方面的局限性。簡言之,如果Ethereum想成為新經濟體強有力的支柱,則它就必須每秒處理大量的交易。而鑒於網路的分散式特性,導致該問題很難解決,而且多年來Ethereum的開發者們也致力於該難題解決方案研發。

一方面,為了保持網路的去中心化特性,必須設置一定限制。然而當運行節點的操作條件越高,網路中的參與者就會越少,而網路也將逐漸中心化。所以提高Ethereum處理交易的能力時節點的負擔就會增加,從而威脅到網路的完整性。

Ethereum以及其他PoW(工作量證明)加密貨幣的另一弊端是,它們都是資源密集型。也就說為了能在區塊鏈上成功添加區塊,就必須進行挖礦。而此種區塊添加方式則需要大能耗快速計算。

為了解決上述局限性,遂提出了一系列升級計畫,統稱為Ethereum2.0(或ETH2.0)。一旦全面實施,則將會有效提升網路的性能。

Ethereum分片

通過以上理解我們知道,每個節點都會存儲區塊鏈副本。而每個節點也都將隨著區塊鏈的變化而更新,這一過程將消耗巨大寬頻和可用記憶體。

而如果使用名為“Sharding(分片)”的方法,則該過程就可避免。通過名字就知道該過程是將網路劃分為不同節點子集,也就是所謂的shards(分片)。每一個分片都將處理自己的交易和合約,同時也會按照要求與其他網路的分片進行通信。並且由於每個分片都將獨立驗證,所以它們不需要存儲其他分片的資料。

“分片”是一種複雜的擴容方式,需要大量的設計和實施工作。然而,倘若成功實施,則網路的吞吐能力將會以數量級提升。

Ethereum Plasma簡介

Ethereum Plasma是一種鏈下擴容解決方案。顧名思義,也就是將交易脫離區塊鏈以便於提高網路輸送量。此時的它就與側鏈和支付通道有些相似。

通過Plasma,側鏈就可以與Ethereum區塊鏈主鏈錨定,並保持一定程度的通信。它們的運作大體上是獨立的,也就是用戶依靠主鏈來解決爭端,靠側鏈來完成他們的活動。

Ethereum擴容成功的關鍵在於減少節點必須存儲的資料量。Plasma方案則允許開發者在主鏈的智慧合約中規定“子鏈”的一些規則。之後就可以將主鏈上昂貴的操作(構建應用或處理交易)轉移到“子鏈”完成。

關於Plasma的詳細資訊,請參考什麼是Ethereum Plasma?

乙太坊rollup介紹

Rollups類似於Plasma,他們都是將交易從主鏈中脫離,以此實現乙太坊的擴容。那麼,他們都是如何運作的呢?

通過在主鏈上的單個合約中,持有二級鏈上的所有資金,並保持該鏈當前狀態的加密證明。二級鏈的運營者在主網合約中存入保證金,並確保僅將有效的狀態轉換提交給主網合約。基於當前的思路,由於該狀態是在鏈下維護的,因此無需將資料存儲在區塊鏈上。但是,Rollups與Plasma的主要區別是將交易提交給主鏈的方式。Rollups使用特殊的交易類型,這種方式可以匯總海量交易,並將其捆綁在一起成為特殊的區塊,稱為Rollup區塊。

有兩種不同類型的rollup:Optimistic和ZK Rollup。兩者都通過不同方式保證狀態轉換的正確性。

ZK Rollups 使用一種被稱為零知識證明的密碼學驗證方式進行交易提交。其中一種較為特別的方法被稱為zk-SNARK。我們無法得知它工作的具體細節,但是會明確它的確被Rollups所使用。這是一種可以讓互補認同的雙方互相證明自己所擁有特定的資訊,而又不不需要互相透露該資訊是什麼的方式。

就ZK Rollups而言,這種資訊是提交到主鏈的狀態過渡。這樣做的一個很大好處是,這個過程幾乎會立即發生,而且幾乎沒有機會提交損壞的狀態。

優化滾動 犧牲了某些可調整性以獲得更大的靈活。通過使用一個名為優化虛擬機器(OVM)的虛擬機器,這些虛擬機器允許智慧合約在二級鏈上運行。 另一方面,這種方式不會有加密證據提交給主鏈,證明該狀態過渡是正確的。 為了緩解這個問題,會稍微將狀態進行延遲,支援使用者質疑和否定提交到主鏈的無效區塊。