作者|ColinSchwarz
編譯|Jhonny
前言
隨著以太坊網絡的使用不斷擴大,通過一個強大而有效的機制來實現以太坊網絡的長期擴展和大規模采用變得越來越重要。
在上篇文章《Serenity將帶來什么?》中,我們討論了以太坊網絡目前面臨的最大問題之一,即擴容性。以太坊網絡支持數百個去中心化應用程序,每天處理數十萬比交易。隨著以太坊網絡的使用不斷增加,越來越多的數字應用被創建,越來越多的交易被執行,伴隨而來的是交易的時間和成本的不斷上升。這使得以太網絡的速度變慢,使用起來也不那么方便了。
在最近的一次速度測試中,以太坊網絡每秒僅能處理20筆交易(各種來源的數據表明,在過去一年中,以太坊網絡每秒處理約12-45筆交易)。相比之下,PayPal、Visa等中心化網絡每秒通常能完成193筆交易和1,667筆交易,Visa的最大容量接近2.4萬筆。
隨著以太坊網絡的使用不斷擴大,通過一個強大而有效的機制來實現以太坊網絡的長期擴展和大規模采用變得越來越重要。以太坊社區自2014年以來一直在研究如何擴展以太坊網絡,且不管是以太坊還是其他區塊網絡,都研究了幾種實現擴容的解決方案。當前,以太坊社區選擇將sharding(分片)作為擴展該網絡的最佳方式。
本文將首先探討一些已經研究過的用于擴展以太坊和其他區塊鏈的解決方案,其中有些方案可以與sharding相結合,之后我們將探討有關sharding的細節及其發展路線圖。
區塊鏈的不可能三角
在探討如何擴展以太坊之前,我們有必要了解一下“區塊鏈的不可能三角。”這個首先由以太坊創始人VitalikButerin提出的三角悖論指出,區塊鏈網絡只能完全滿足以下三個特性中的兩個參數:去中心化性、安全性和擴容性。針對這種三難困境的一種理想解決方案就是在這三者之間做出妥協。目前,以太坊網絡是去中心化且安全的,但缺乏可擴展性。擴展以太坊網絡的嘗試必須確保不會使得網絡的去中心化和安全性受到損害,這樣才能提供徹底、長期的解決辦法。
不盡人意的擴展方案
擴展區塊鏈的最早想法之一就是簡單地增加每個區塊的大小。以太坊區塊鏈上一個區塊的大小取決于該區塊的Gas上限,當前每個以太坊區塊的Gas上限是800萬Gas。人們的想法是,由于每個區塊的生成速度保持不變,因此提高Gas上限將會允許在同一時期執行更多的交易,從而提高網絡的速度和吞吐量。
盡管這種想法在技術上是正確的,但是將區塊大小增加到某個最優點之后,往往會產生比它所解決的問題更多的問題,并且由于這種方式所帶來的負面影響,使得這種方式實際上并不會增加吞吐量。
首先,更大的區塊意味著更難以被處理,并且往往會導致更高的延遲,這對以太坊網絡是不利的。這意味著當區塊大小增加到某個特定的程度之后,只有那些擁有先進和昂貴的硬件設備的人(礦工)才能成功地進行挖礦。
其次,更大的區塊大小也意味著需要更多的存儲空間,這就會增加每個網絡節點所需的容量。當前以太坊區塊鏈的大小約是227GB,因此將區塊大小加倍將使這個數字加倍,且網絡的交易速度和吞吐量并不會因此而帶來顯著的提升。這將再次有利于那些能夠負擔得起更好的硬件和更大存儲空間的富人。
最后,更大的區塊將使節點更難以與網絡同步。這就又讓那些擁有更多資源的人處于優勢地位,并且使得網絡在遭到重大攻擊時更難以實現網絡重組。
所有這些因素都意味著當區塊大小增加至超過某個最優點之后,網絡會存在更大的中心化風險,因為這種方式將會使得網絡權利集中在那些最富有的參與者手中,阻止那些只擁有普通硬件設備的大多數用戶運行節點或進行ETH挖礦。因此這種方式并不是一種長期可持續擴展以太坊網絡的可行方案。
第二種方式是通過使用很多不同的山寨幣網絡來減輕主鏈的負載,從而試圖增加網絡的擴展性。也即將交易轉移至那些更小的區塊鏈網絡中進行(這些網絡都有其自身的網絡容量),而不是將所有交易都發送至單條主鏈之上。
這種方式有可能可以增加吞吐量,但代價是使網絡的安全性受到損害。這是因為,具有較小市值和較低價值的山寨幣(altcoins)更容易被攻擊或控制。正如Vitalik所說的那樣:“通過這種方式使得吞吐量增加了N倍,但同時也使安全性降低N倍。”因此,這種方式只有在N值很小的時候才安全,即這種方式無法顯著地提高網絡的擴展性并保證網絡的安全性。
數據:以太坊橋TVL達到183.9億美元:金色財經報道,Dune Analytics數據顯示,以太坊橋當前TVL達到183.9億美元。其中鎖倉量最高的5個橋分別是Avalanche Bridge(58.57億美元),FantomAnyswap Bridge(48.64億美元)、Polygon Bridges(44.51億美元)、Arbitrum Bridges(21.35億美元),Optimism Bridges(2.5億美元)。[2021/10/14 20:29:27]
第三種類似的方式稱為“混合挖礦”(mergemining),這種方式被Namecoin等項目采用。與使用很多不同的山寨幣的方式類似,混合挖礦就是試圖通過將主鏈的負載轉移至幾條不同的側鏈上,從而減輕主鏈的負載并增加吞吐量。
但是與山寨幣的方式不同,所有采用混合挖礦的區塊鏈網絡都有著相同的礦工和挖礦協議,(或者在PoS系統中,有著相同的驗證者)。這種方式增加了潛在攻擊的成本,因此使得這種方式比使用很多山寨幣的方式更加安全。但是網絡吞吐量增加N倍,意味著網絡中的挖礦能力也需要增加N倍,這就會導致同樣的挖礦中心化風險,這點與增加區塊大小的方式一樣。
因此,上訴三種方式并不是解決區塊鏈不可能三角的理想解決方案,因此并沒有被以太坊2.0團隊所接受。
有前景的擴展方案
最近,以太坊社區已經研究了幾種更有前景的擴展方案,這些方案可以在不嚴重損害網絡安全性或去中心化的情況下提高擴展性,目前正由一些項目進行實現。
其中一種方案涉及到使用諸如ZK-SNARKs或Mimblewimble等先進的密碼學技術來加快節點的驗證速度。這種系統在鏈上創建能夠使各個節點更快更容易地對區塊進行驗證的區塊密碼學證明(cryptographicproofs),這種方式使得節點只需驗證區塊的密碼學證明,而無需從創始區塊開始驗證整條鏈。同時,ZK-rollups和ZK-ZK-rollups也被認為有望將以太坊的吞吐量提升30倍。
盡管如上這些方案可能帶來交易速度的提升,但它們并不是完整的擴展方案,且Vitalik認為通過使用更簡單的加密經濟學就可以實現同樣的效果,而無需使用這些純粹的密碼學技術。
01.Plasma鏈
Plasma鏈是另一種有前景的擴展方案,它通過實現在區塊鏈之間(比如以太坊主鏈和Plasma鏈之間)進行資產的相互轉移來增加帶有智能合約功能的區塊鏈的吞吐量。資產從區塊鏈主鏈發送并存儲在Plasma鏈上。存儲在Plasma鏈上的資金可以通過一種稱為退出(exit)的方式安全地撤回至主鏈上。只要主鏈的共識機制是安全的,就可以保證能夠安全地撤回到主鏈上。
理解Plasm鏈的一個很好的例子就是,我們可以將Plasma鏈比作是在賭場購買籌碼:顧客可以帶著現金進入賭場,使用現金購買任意數量的籌碼,然后按照自己的意愿使用這些籌碼(前提是遵循賭場的規章制度),等顧客想要離開賭場的時候就可以將手頭上的籌碼退換成貨幣。
這與以太坊區塊鏈中的Plasma鏈的運行方式類似,只是這里的“貨幣”是以太幣(ETH),籌碼是Plasma鏈中的某種原生山寨幣。這樣一來,交易就從以太坊主鏈上被委托到了Plasma鏈上,從而使主要節點可以以一種更具成本效益和更合理的方式來分配計算能力。
Plasma鏈是相對安全的,因為Plasma鏈直接與以太坊主鏈相連接,且將以太坊作為真相來源。用戶還可以依賴以太坊主網的安全性和規則來贖回他們的ETH或Plasma代幣。同時,Plasma鏈使用一種稱為MapReduce的工具,配合一個默克爾trie結構來實現快速簡單地欺詐驗證,以此來抵御惡意者的欺詐行為。
以太坊開發者CollinCusce解釋道:“那些在Plasma鏈上進行了資金抵押的用戶將會自我監控,且當他們能夠證明存在不當行為時,會將爭議以證明的形式提交給根鏈(即以太坊主鏈)。”
Plasma鏈甚至包含了“回滾”的功能,即如果Plasma鏈上的某個惡意者企圖進行欺詐,其花費請求被證明無效之后,“回滾”功能將被激活。激活之后,所有涉及的資金將被返回至欺詐之前的狀態。從計算角度來說,這種回滾的成本是很低的,只需要消耗以太坊主鏈的2位空間。
通過這種方式,Plasma鏈能夠使以太坊主鏈得以擴展并更好地運行。同時,Plasma鏈通過將主鏈及其相關的工具和協議作為唯一的真相來源,從而使Plasma鏈保持一定程度的安全。
鏈外DeFi聚合層Frontier與以太坊推送服務(EPNS)達成戰略合作:鏈外DeFi聚合層Frontier宣布與以太坊推送服務(EPNS)達成戰略合作,以支持去中心化通知服務。該合作關系將允許Frontier以平臺無關的方式(移動端、網絡、錢包等)向用戶發送通知。
雙方試點項目和合作主要包括:探索Frontier App中的協議使用;實施和消除任何必要的功能,以實現平穩集成;關于構建SDK的技術討論,該SDK可作為即插即用解決方案部署到所有加密錢包中;未來可能與Frontier錢包整合。[2021/4/29 21:10:05]
與上文討論的其他擴展想法相比,Plasma鏈更具創新性和安全性,但與任何解決方案一樣,Plasma也并非沒有問題和折衷之處。
首先,通過使用Plasma鏈只能有限地擴展以太坊網絡,而無法以指數方式擴展。盡管Plasma鏈與以太坊主鏈相連接,并將以太坊主鏈作為唯一的真相來源,但Plasma鏈并不像以太坊主鏈本身那樣那么安全,因為Plasma鏈容易受到“拒絕訪問攻擊(denialofaccessattacks)”。其中的問題是,有著更少節點數和更少用戶量的小型區塊鏈(如Plasma鏈),要比擁有更多節點數和更多用戶量的以太坊主鏈更易受到攻擊。
如果某條Plasma鏈受到大規模攻擊,那該條Plasma鏈的所有用戶將需要將自己儲存在Plasma鏈上的資金撤回至以太坊主鏈上。但問題是,如果那些同時試圖撤回至主鏈的Plasma鏈用戶的數量超過了以太坊主鏈的短期計算資源承受的范圍,那任何此時無法退出的用戶都將遭遇拒絕訪問,這是一個嚴重的安全問題。
以太坊ShardingFAQ對此進行了解釋:“...這種情況下,區塊鏈中將沒有足夠的空間來及時處理所有的退出,因此這種系統將變得不安全。”
幸運的是,有一些方法可以緩解Plasma鏈的這種不安全性。比如,通過設置靈活的退出延遲(withdrawaldelay)機制,當很多Plasma鏈用戶同時提出退出請求時,將自動延長退出時間。這種方式能夠保障用戶資金的安全,但依舊可能使強大的攻擊者鎖定用戶的資金很長一段時間。這種“長時間的拒絕服務”是一種安全故障,但這比“完全喪失訪問權限”要溫和得多。
且如果受到攻擊的Plasma鏈是專門用于進行微額交易,而非進行高價值交易時,延長退出時間帶來的影響也會更小。事實上,將Plasma鏈用于進行微額交易才使其最有意義,因為以太坊主鏈的高交易費和更長的交易時間并不利于進行微額交易。同樣值得注意的是,Plasma鏈的不安全性并不會影響以太坊主鏈的安全性。
雖然Plasma鏈仍然是一個相對較新的、未經測試的概念,但其潛在的優點似乎超過了其缺點。當“Cryptokitties(加密貓)”Dapp在以太坊主網上線時,由此導致的交易量激增對網絡的可用性產生了明顯的負面影響,包括交易價格和等待時間的增加。如果這款Dapp是搭建在某條Plasma鏈上的話,那以太坊主鏈就可以自由地進行一些更重要的和更有價值的交易了,其可用性也就不會受到如此大的影響了。
Vitalik也認為,Plasma在不可能三角方面的折衷性與上文之前提及的其他方案不同,Plasma鏈是一種“不同方向的折衷”,并“可以說是一種更為溫和的折衷”,這使得Plasma鏈能夠“對(以太坊)現在進行很大的改進。”
也許對于Plasma鏈來說,這種方案的最大特點就是Plasma與Sharding并非相互排斥的。以太坊2.0將會實現這兩種擴展方案,用戶可以選擇使用帶有分片的主鏈,還是使用某條Plasma鏈,或者兩者皆使用,這取決于用戶自己的個人需求和偏好。
02.狀態通道
另一種以太坊鏈下擴展方案就是基于通道的策略來實現擴展,比如比特幣的閃電網絡或者以太坊的雷電網絡。狀態通道(statechannels)具有許多與Plasma鏈相同的優點和權衡,但在技術層面上的操作卻截然不同。
與Plasma鏈不同,雷電網絡(Raidennetwork)并不是一條單獨的、間歇性與以太坊主鏈相連接的區塊鏈,而是一個通過使用以太坊智能合約與以太坊主鏈相連接,且擁有與主鏈不同的用戶的網絡。
所有想要進行交易的雷電網絡用戶都必須將一定數量的ETH存儲在某個與主鏈相連接的智能合約中,該智能合約會在雷電網絡中開啟一個通道(channel),該通道將直接與另一個用戶相連接,這筆存儲在該智能合約中的ETH存款將作為存款人進行交易的抵押品(collateral)。
以太坊穩定幣總發行量達186億美元創歷史新高:金色財經報道,據DeBank數據顯示,以太坊穩定幣總發行量已經達到186億美元,創下歷史新高。按照發行量計算,目前排名前三的以太坊穩定幣分別是:1、USDT:12,442,113,561美元,發行量占比66.88%;2、USDC:3,046,577,409美元,發行量占比16.38%;3、DAI:1,063,650,356美元,發行量占比5.72%。注:以太坊上的穩定幣是用于區塊鏈網絡中的法幣,通常和法幣價格鉚定,由第三方審計,有真實美元作為儲備或由復雜的算法來保障其價格。[2020/12/7 14:26:25]
存儲了一定量抵押品的用戶可以在雷電網絡中進行盡可能多的ETH交易,只要交易的ETH總額等于或少于該用戶抵押在該智能合約中的ETH總額。
除了開啟該支付通道的交易雙方之外,其他任何人都無法訪問該智能合約,且抵押的ETH將確保交易的任何一方都不會存在雙花問題,或者其他形式的欺詐。交易雙方都需要提供一個與他們的ETH抵押相關聯的數字簽名,該數字簽名使雙方都負有責任,從而一旦交易被確認之后,交易雙方就不能退出交易了。這確保了系統的公平性和一致性,以及安全性。
如果某個用戶A想要通過狀態通道與另一個用戶B進行交易,那用戶A不一定需要與用戶B開啟一個通道,而是可以使用雙方之間已經存在的中介通道,只要雙方之間存在“至少一條可用的路徑,該路徑通過一個通道網絡來將雙方連接起來”。通過這種方式,即便某個用戶在狀態通道網絡中只開啟了一個或者兩個通道,那該用戶也可能可以與大量用戶進行交易。
當然,通過直接的通道進行交易是無需手續費的,只需要抵押一定的ETH存款;但如果交易需要通過多個支付通道才能完成,那交易者可能需要為使用這些中介通道而支付一小筆手續費。這筆手續費會受到競爭性費用市場的影響,費用市場旨在將手續費維持在較低的水平,并與被發送的價值成正比(即發送的價值越高,可能支付的手續費就相對更高)。
狀態通道解決方案的一個最強大的特性是,由于狀態通道中的交易不像在主鏈上那樣需要整個網絡達成共識,因此交易幾乎可以在瞬間完成。此外,狀態通道交易不會以任何方式阻塞主鏈,除非一次性創建并最終關閉所有的通道。
與Plasma鏈一樣,狀態通道也是與sharding具有互補性的,且這兩種以太坊擴展方案都正在被開發中。但不幸的是,與Plasma鏈一樣,基于通道的解決方案也易于受到拒絕服務攻擊。然而,正如之前已經指出的那樣,這些攻擊是可以被減輕的。簡言之,雷電網絡是一種將實現重大擴展性的通道解決方案,且在安全性或去中心化方面不會折衷到不可接受的程度。ShardingFAQ解釋道:“可以說,通過sharding(以及其他技術)實現的鏈上擴展和通過狀態通道實現的鏈下擴展都是必要且互補的。”
綜上所述,人們已經探索了很多Layer1方案用于擴展以太坊和其他區塊鏈網絡,同時不對網絡的安全性和去中心化造成影響。一些方案已經失敗了,其他一些方案也取得了有限的成果。
在經過大量研究之后,以太坊社區已經選擇將sharding作為實現網絡的大規模擴展并解決區塊鏈的不可能三角悖論的最有前景的方案。Plasma和狀態通道等Layer2解決方案將能夠有與sharding一起使用,進一步擴展以太坊2.0網絡。
Sharding
上文中我們探討了一些旨在擴展以太坊和其他區塊鏈網絡的Layer2擴展方案,下文中我們將討論sharding這種被以太坊社區選擇作為擴展以太坊網絡的Layer1解決方案。Sharding(分片)被認為是實現以太坊網絡大規模長期擴展的最佳方式。
Sharding一詞來自數據庫術語,涉及到將一個大型的數據庫分割成很多更小的、更易于管理的部分,以便能夠更快、更有效地訪問和處理數據。
對數據庫進行分片將允許總數據量超過任何單個分片的容量。將區塊鏈網絡分割成很多分片以增加網絡的擴展性,這與前者遵循相同的原則和目標,但實現起來會更加復雜。與Casper和eWASM一樣,sharding也是備受期待的以太坊2.0的主要特性之一。
比特幣和其他區塊鏈網絡也已經考慮并試驗了分片技術,以對交易處理或區塊鏈狀態進行分片,盡管其中大多數分片計劃從未執行過。以太坊2.0的分片設想也將解決這兩個主要瓶頸:對交易處理和區塊鏈狀態進行分片。根據GitHub上的官方shardingFAQ:“我們希望能夠每秒處理10,000多筆交易,而不需要強制每個節點都成為超級計算機或存儲TB級大小的狀態數據。這需要一個全面的解決方案,其中狀態存儲、交易處理、甚至交易下載和重新廣播的工作負載都分攤在各個節點上。”
分析:2019年以太坊交易量與相關推文數量存在反向關系:2018年,提到以太坊的推文數量與交易量之間存在正相關。但是在2019年,以太坊交易量與相關推文數量存在反向關系。當推文數量增加1%時,交易量將減少0.167%。2019年以太坊回報率略為負,總回報率約為-2.86%。推文數量的增加似乎起到減少買賣的效果,這與投資者沮喪的回報前景一致。(CoinTelegraph)[2020/3/15]
這聽起來很棒,但sharding實際上是如何工作的呢?
分而治之
在當前的以太坊網絡上,每個節點必須驗證每筆交易。這是確保網絡活性的一個重要特性。即使80%的以太坊節點同時出故障,網絡仍能正常運行。雖然讓許多節點執行相同的操作實際上并不會使以太坊網絡變慢,但這種方式并不一定能夠使網絡資源得到優化利用。
我們通過一個簡單例子來展示如何更有效地使用以太坊的大量節點:假設以太坊網絡上有三個節點,節點A、節點B和節點C。當前,為了驗證某筆交易(假設是數據T),每個節點必須分別驗證T的整個數據集,以便對其進行確認。驗證過程確保了網絡的安全,但這會產生一個所有交易都必須經歷的瓶頸:網絡必須等到每個節點驗證每筆交易,這樣每秒處理的交易總數只能與每個節點的總交易容量一樣。
但根據提議的sharding(分片)協議,T將被分解為T1、T2和T3。節點A、B和C只需要處理這些較小的數據分片中的一個,就可以使整個數據集得以驗證。
即便是在這個簡單的示例中,通過將數據分解為三個集合也可以極大地提高吞吐量并減少交易時間。當以最佳的方式將sharding應用于以太坊網絡中時,改進將是巨大的。在撰寫本文時,以太坊網絡上有超過8200個節點。
根據最新的以太坊2.0規范,以太坊2.0區塊鏈將被分成1024條分片鏈。由于每條分片鏈都將能夠處理與當前以太坊網絡一樣多的交易量(在實現eWASM之后會更多),sharding將會使以太坊的吞吐量和網絡速度提高1,000倍以上。此外,在增加了諸如zk-rollups和Plasma等Layer2解決方案之后,還將進一步提高網絡的吞吐量和交易速度。
Sharding,Casper&信標鏈
在我們講解sharding如何運作的細節之前,有必要了解一下Casper:這是以太坊2.0將使用的一種PoS(權益證明)機制,旨在代替當前以太坊網絡使用的PoW(工作量證明)機制。
Casper將通過信標鏈得以實現,信標鏈將是以太坊2.0網絡的系統鏈,確保整個網絡的共識和狀態的最終性(finality),并將促進分片鏈之間的通信(即跨分片通信)。
Casper機制不會依賴于硬件挖礦來消耗能源和計算從而達成共識,而是將依賴于驗證者來達成共識,驗證者將需要質押32ETH來成為以太坊2.0網絡的驗證者。
起初,sharding和Casper是由不同的團隊遵循不同的開發路線進行構建的,但從2018年春季開始,sharding和Casper團隊已經開始緊密協作,從而使這兩個體制可以同時開發,并從彼此的進展中獲益。驗證者將通過Casper協議來對分片和信標鏈進行驗證并達成共識。
由于以太坊的規模以及區塊鏈技術的內在復雜性,對以太坊進行分片并非易事。區塊鏈作家BrianCurran對其中的復雜性進行了解釋:“...通過將節點分割成更小的子集,這些子集需要能夠處理特定的交易集,同時更新網絡狀態,同時確保狀態的有效性。”
這意味著進行了分片的以太坊網絡如果想要與當前的網絡一樣正常運行,則必須開發一個復雜的系統來確定信標鏈和分片之間的職責分配,并建立分片之間以及分片與信標鏈之間的通信方式。該系統還必須包含一種機制,該機制將確保所有的網絡數據和交易保持有效和可用,從而實現最終性(finality)。
以太坊研究者和開發者一直在苦苦思索,什么樣的系統才能最好地實現所有這些功能。
在進一步討論之前,有必要指出,以太坊2.0提議的分片系統實際上還沒有進入實際使用階段。開發以太坊2.0客戶端的團隊仍在進行階段0的工作,階段0主要專注于信標鏈的實現。
Sharding的許多細節仍在研究和開發中,但通過最新的以太坊2.0規范以及以太坊研究相關的文章,我們可以嘗試設想提議的sharding模型。
區塊鏈項目聯合推出以太坊社區基金 旨在協調和加強以太坊網絡的發展:在以太坊網絡上的項目已經宣布計劃共享資源和協作。Cosmos、OmiseGO、Golem、Maker、Global Brain和Raiden將共同推出以太坊社區基金,旨在協調和加強以太坊網絡的發展。該基金的第一個舉措將是一項基礎設施撥款項目,為解決可擴展性問題提供永久性的財政支持。可擴展性是以太坊網絡上所有平臺的共同核心問題,這將阻止主流的大量使用它們的項目。通過匯集資源并緊密合作,而不是孤立地進行,這些項目希望能夠產生一個通用的解決方案,這將有利于以太坊網絡上的所有項目。[2018/2/21]
共識&最終性
分片技術的引入以及從PoW到PoS系統的過渡,意味著在以太坊2.0網絡中達成共識和最終性的方式將與當前的以太坊網絡中有很大的不同。我們將從基本方面開始,然后詳細介紹系統需要實現的一些更復雜的功能。
在以太坊2.0系統中,用戶的賬戶都將特定于某個分片。與當前以太坊1.0鏈中的交易類似,每個分片中的交易將會相對簡單,但分片之間的交易(即跨分片交易)將會使給系統增加一層復雜性。對此我們將在后文中加以論述。
在以太坊2.0中,交易將會按照當前正在開發的一個優化過程被分組到各個“交易包(transactionpackages)”中。這些交易包必須通過一個雙重驗證過程,以便添加到信標鏈主鏈上:
首先,驗證者會被定期和隨機地分配到各個分片鏈中。一旦被分配到某個分片鏈中,驗證者就會對各個交易包的有效性進行投票。
如果驗證者頭贊成票,則信標鏈上的一個獨立委員會必須通過一個分片管理者合約(shardingmanagercontract)來對該投票進行驗證。如果信標鏈委員會也投了贊成票,那該交易包就會被添加至主鏈中,成為公共賬本的一部分,與該分片中的交易包建立一個不可篡改的交聯(crosslink)。
在sharding的之后階段,分片和主鏈之間的這種連接將是這樣的:如果主鏈或其任何一條分片無效,則整個網絡將被視為無效。就像在未實現sharding的區塊鏈中一樣,交易包的驗證將帶來網絡狀態的改變,這種改變將反映在諸如存儲和賬戶余額等方面。
經過一段時間(根據當前的規范,也即每生成64個區塊,約6.4分鐘)之后,每個分片中的驗證者將被解除其職責,并重新返回到更大的驗證者池之中,且信標鏈將會對每個分片重新隨機分配驗證者。
信標鏈管理者所有驗證者的登記表,通過RANDAO和VDF提供隨機性,通過CasperFFG提供最終性,并記錄跟蹤信標鏈與分片之間的交聯(crosslinks)。在以太坊2.0的階段2期間,信標鏈也將存儲狀態執行合約。
信標鏈通過采用RANDAO和VDF(可驗證延遲函數)來提供隨機性和不可預測性,防止潛在的攻擊者試圖預測他們的節點將被分配到哪個分片之中。其邏輯是,如果攻擊者在分配之前不知道將被分配給哪個分片中,那么他們將無法提前配合發動攻擊。
以太坊2.0系統通過對驗證者進行隨機選擇和分配,并對交易包進行雙重驗證,以此來達成共識,保障網絡安全不受攻擊,并確保網絡的最終性(finality)。
跨分片通信
現在,我們對交易、分片和信標鏈之間的關系以及它們如何協同工作以便達成共識和最終性有了一定的理解。然而,為了使以太坊網絡達到最大的效率,分片必須能夠在彼此之間進行交易,并相互引用數據。這將需要網絡上的各個分片之間進行通信。在去年布拉格舉行的Devcon2018大會上,以太坊創始人VitalikButerin對此進行了解釋:
“想象一下,以太坊被分割成數千個島嶼。每個島嶼都可以做自己的事情。每個島嶼都有自己的功能,屬于該島的每個人(即賬戶)都可以交互,他們可以自由地沉溺于其所有的功能中。如果他們想與其他島嶼接觸,就必須使用某種協議。”
這是一個很好的比喻,它提出了以太坊開發人員必須解決的最重要的問題之一:在實現分片所帶來的巨大擴展性潛力的同時,如何實現多個不同的分片之間彼此通信,從而交付一個與當前以太坊網絡一樣的無縫集成系統?
正如Vitalik的島嶼類比所述,為了確保效率和安全性,各個分片之間的交互需要遵循一個特殊的協議。分片還需要知道何時適合進行彼此通信,并且只在需要時才進行通信。以太坊社區選擇的通信協議稱為“收據范式(receiptparadigm)”,這些收據(receipts)將通過“分布式共享內存(distributedsharedmemory)”存儲在信標鏈中,這意味著這些收據將只能被其他分片查看,而不能被分片修改。這個特性很重要,這允許各分片驗證彼此的活動并從中獲益,同時仍然維持每個分片的最終性。
早期的分片想法側重于如何在分片之間最好地分配數據和職責。不過,Vitalik最近公布了兩項關于階段2的新提議:Proposal1和Proposal2。
這兩項提議的精神是“……有一個相對最小的共識層框架,該框架仍然提供足夠的功能來開發復雜的框架,為我們提供作為第二層所需的所有智能合約功能。”為此,Vitalik建議將單條分片的一些任務和責任委托給信標鏈。
之前的設計想法是,分片的功能類似于自治的以太坊區塊鏈,具有自己的交易、ETH和智能合約。通過該新提議,智能合約和ETH的基本級別的概念將只存在于信標鏈上,分片將繼續擁有自己的狀態和執行。這應該有助于降低每個分片的復雜性,同時維護網絡的各種機能。
Vitalik相信,新的以太坊系統將提供足夠的功能來實現一個“支持分片中的智能合約、跨分片通信和所有其他功能的執行環境,我們希望使用信標鏈合約來構建這些功能。”
這個新系統將通過向信標狀態添加三種新的交易類型和兩種新的數據結構來完成。交易類型包括NewExecutionScript、NewValidator和Withdrawal,這些交易分別代表著一個可以存儲ETH的執行腳本,一個添加新的驗證者的函數,以及一個從信標鏈中撤出驗證者的函數。
這些新組件將用于促進跨分片通信,并交付這樣一個系統,在這個系統中,所有ETH的交易和所有智能合約的執行都可以通過Layer2abstraction實現,而不需要將它們包含在分片中。通過使用信標鏈合約來引入這個抽象層將有助于將每個分片的復雜性降到最低,這將簡化和改進分片之間的通信。
除了其固有的復雜性之外,跨分片通信的另一個問題是延遲性。如果我們想將一個代幣從shardA發送到shardB中,shardA上將“銷毀”那枚代幣,并記錄發送的地址和金額,以及目標分片。過一段時間后,每個分片將知道其他分片的狀態根,這允許分片驗證收據并確認該代幣已經被轉移了。此時,來自shardA的收據將由shardB回收,shardB將驗證該收據的有效性,以便該枚代幣可以在shardA中進行銷毀,并在shardB中找回。
這個過程會導致交易在被發送和實際被確認時間產生延遲,這會降低用戶體驗,并影響以太坊2.0應該提供的速度和擴展性。對此問題提出的解決方案稱為FastCross-ShardTransfersViaOptimisticReceiptRoots,其中的離你那很簡單,即存儲有條件的狀態,并對提交的交易的有效性“保持樂觀”。
一旦交易被驗證,如果交易確實有效,則交易將被永久記錄,反之則將被逆轉。分片之間的通信是以太坊2.0開發人員仍在研究的最復雜的問題之一。以太坊2.0想要保留當前1.0鏈的優點,同時大大提高其擴展性,就必須要成功地實現跨分片通信。
面臨的挑戰
除了跨分片通信之外,sharding仍然面臨一些挑戰。我們已經研究了單個分片被攻擊的可能性,以及這種攻擊可以通過對驗證者進行隨機選擇和重新打亂分配的方式來加以抵制。但是,雖然這種隨機性對于網絡安全有利,但卻使得節點更難計算分片的根和網絡狀態,因為節點無法提前訪問他們將被分配的分片。
出于同樣的原因,實現輕客戶端獲取有關整個網絡狀態的準確信息是比較難的。另一個需要注意的是欺詐識別。如果某個節點聲稱某個狀態或交易組無效,那如何通知其他節點以便讓他們可以監測并拒絕該欺詐行為呢?
持續進展時可能會出現更多的挑戰,但令人興奮的是,前文討論的主要問題,大多數已經被研究團隊解決了。
以太坊2.0發展路線圖
以太坊2.0的開發正在進行中,其中考慮了五個重要的設計目標:安全性,去中心化,恢復力,持久性和簡潔性。以太坊2.0的階段0(信標鏈)大約會在2020年1月3號啟動。為了確保達成上述目標,階段0之后的各階段將逐步推出,間隔期大約為一年。
階段0將啟動的信標鏈將是以太坊2.0的系統鏈,其功能已在前文討論過。正是通過分片與信標鏈間的交聯(crosslinks)來時間分片之間以及分片與整個網絡之間的通信。
階段1將引入基本的分片,實質上將是測試運行一個完全分片的系統將如何運作,因此,它不會立即展示分片的全部擴展性潛力。此階段將解決分片鏈上的共識和確定性(finality),并將允許信標鏈監控分片鏈的執行。
階段2將出現完全分片和集成的以太坊2.0。分片將從“基本數據制造者”升級為“全功能鏈”。階段2也將引入全新的以太坊虛擬機eWASM。
應該注意的是,雖然這些階段在概念上是分開的,但由于它們是相互有關聯的,大部分仍將同時進行。此外,開發人員仍在努力改進以太坊1.0區塊鏈(通常稱為Eth1.x),也將繼續推出以太坊2.0。
Eth1.x的既定目標是通過優化客戶端來提高交易吞吐量,執行“狀態費用(statefees)”以確保全節點的可持續運營,并穩定交易費用以及開發可以將Eth1.x連接到Eth2.0鏈的確定性小工具(finalitygadget)。
鑒于當前的階段推出時間預測,我們可以預測性的在2020年底看到數據分片,并在2021年看到完全分片的以太坊。有許多才華橫溢、充滿激情的開發者正在致力于將這一夢想變為現實。我個人也希望分片可以成功實現,并且它將幫助以太坊和其他區塊鏈實現大規模的擴展和采用。
特別感謝AidanHyman、GregMarkou和CaymanNava審閱本文并提出許多有價值的建議。此外,這篇文章的撰寫也離不開許多其他偉大的作者和研究人員在該領域所做的工作。感謝所有本文中引用的資料文件的創作者!
參考鏈接:
“Ethereum2.0.”https://medium.com/rocket-pool/ethereum-2-0-76d0c8a76605
“WhyScalingPublicBlockchainsisaLotHarderThanJustIncreasingBlockSize.”https://medium.com/gochain/why-scaling-public-blockchains-is-a-lot-harder-than-just-increasing-block-size-5c5e7ed53c38
“CryptocurrencyStatistics.”https://bitinfocharts.com
“ShardingFAQs.”https://github.com/ethereum/wiki/wiki/Sharding-FAQs
“EthereumPlasma—Part1:ScalingProblems.”https://medium.com/@collin.cusce/why-business-needs-ethereum-plasma-now-scaling-problems-pt-1-8d6186438b5
“EthereumPlasma—Part2:HowItWorks.”https://medium.com/@collin.cusce/why-business-needs-ethereum-plasma-now-how-it-works-key-components-pt-2-37a82737cd54
“WhatistheRaidenNetwork?”https://raiden.network/101.html
“Transcript:ScalableBlockchainsasDataLayers.”https://medium.com/@trenton.v/transcript-scalable-blockchains-as-data-layers-vitalik-buterin-11aa18b37e07
“EtherNodes.”https://www.ethernodes.org/network/1
“ShardingintroductionR&Dcompendium.”https://github.com/ethereum/wiki/wiki/Sharding-introduction-R&D-compendium
“WhatareEthereumNodesAndSharding?”https://blockgeeks.com/guides/what-are-ethereum-nodes-and-sharding
“WhatisSharding?GuidetothisEthereumScalingConceptExplained.”https://blockonomi.com/sharding/
“Ethereum2.0randomness.”https://www.youtube.com/watch?v=zqL_cMlPjOI
“Phase2,Proposal1.”https://notes.ethereum.org/s/HylpjAWsE#
“FastCross-ShardTransfersViaOptimisticReceiptRoots.”https://ethresear.ch/t/fast-cross-shard-transfers-via-optimistic-receipt-roots/5337
“TheRoadmaptoSerenity.”https://media.consensys.net/the-roadmap-to-serenity-bc25d5807268
Proposal1:https://notes.ethereum.org/s/HylpjAWsE?source=post_page
Proposal2:https://notes.ethereum.org/w1Pn2iMmSTqCmVUTGV4T5A?viewPhase=&source=post_page
尊敬的用戶:????HotcoinGlobal已開放區塊鏈資產VCC充提幣業務,定于2019年7月22日17:00在ETH交易區正式開啟VCC/ETH交易.
1900/1/1 0:00:00尊敬的用戶: 火幣全球站前期推出大客戶尊享權益方案,根據您在火幣產生的季度日均數字資產持倉總額或季度交易手續費獲得相應權益.
1900/1/1 0:00:00尊敬的Hubi全球用戶:為了更好的服務用戶,讓用戶享有更多權利,現針對用戶推出Hubi俱樂部專屬特權服務.
1900/1/1 0:00:00尊敬的用戶: BTC合約大師賽第3日獲獎名單公布如下:獎項一:日收益率排行獎勵 排名 UID 收益率 獎品 1 728****64 196.99% 200HT 2 999****80 188.
1900/1/1 0:00:00尊敬的HCoin用戶: HCoin平臺定于香港時間2019年8月13日18:18分開放交易,屆時用戶可以通過SEA/USDT交易對進行購買交易提現操作;BTC鯨魚過去一個月已累積約9萬枚BTC:.
1900/1/1 0:00:00中國人民銀行大樓外景“在臉書發行天秤幣的時候,我們的數字金融研究平臺也成立了。我想這可能不是一個巧合……”5年多以來,幾個重要的階段勾勒出中國深入推進央行數字貨幣研究的脈絡.
1900/1/1 0:00:00