觀點:以太坊的路線圖應該改變嗎?
編者按:本文來自以太坊愛好者(ID:ethfans),作者:阿劍,Odaily經授權轉載。
以太坊愛好者(ID:ethfans)中文譯本以太坊愛好者(ID:ethfans)
,作者:阿劍,Odaily經授權轉載。以太坊愛好者(ID:ethfans)中文譯本
以太坊愛好者(ID:ethfans)
以太坊愛好者(ID:ethfans)
中文譯本
中文譯本
Phase 0:以PoS 為共識機制的信標鏈
Phase 1:多條分片鏈
Phase 2:為所有分片增加執行功能
)中,Vitalik 明白地表示,路線圖已經發生了變化:(1)暫時不再強調Phase2 的重要性,Phase 1 致力於實現數據分片(shard data),供rollup 方式使用;(2)信標鏈將具備執行功能,即Eth1-Eth2 合併之後,信標鏈區塊將直接包含交易;(3)Phase 0 實現後的三大工作:輕客戶端支持、數據分片、合併,將並行推進,任一模塊只要準備好了就推出。
Phase 0:以PoS 為共識機制的信標鏈
Phase 1:多條分片鏈
Phase 2:為所有分片增加執行功能
Eth2.0 的三階段路線圖
Phase 0:以PoS 為共識機制的信標鏈
Phase 1:多條分片鏈
Phase 2:為所有分片增加執行功能
在過去兩年,廣為流傳的Eth2.0 路線圖規劃了三個依次序實現的組件:
Phase 0:以PoS 為共識機制的信標鏈
Phase 1:多條分片鏈
從這一路線圖可以清晰地看出,原來的以太坊2.0 的目標是打造一個“分片化執行(sharded execution)” 的系統,意思是:每個分片都有自己的狀態,這些狀態按各分片的狀態轉換規則來變更;變更後的狀態由信標鏈來敲定;由此,以太坊2.0 就成了一個多個分片可以並行處理交易的系統。這也意味著,以太坊2.0 是一個“共識” 和“交易處理(驗證)” 解耦的系統,被分配到各分片上的驗證者負責驗證交易和狀態的正確性;但這些狀態的敲定則依賴於信標鏈的epoch 敲定機制,兩個過程並不是完全同步的。
這種“PoS 信標鏈+ 多分片” 的架構,似乎也非常好地利用了PoS 算法本身的特點:為了解決No-thing-at-stake 問題(PoS 出塊不需要付出計算量,因此有資格出塊的賬戶會嘗試在不同的分叉上同時出塊,使系統分崩離析),以太坊2.0 所用的Casper 算法要求用戶先存入一部分押金才能獲得出塊資格,而如果驗證者濫用了出塊資格(比如同時支持兩個分叉),則會被罰沒押金;由此,像Casper 這樣的算法實際上在區塊鏈上創造了兩種可以相互溝通、但相互獨立變更的狀態:一種是普通用戶的狀態,另一種是驗證者的出塊權重狀態;共識過程以出塊權重狀態為基礎,達成共識也會更改出塊權重狀態;因此,共識過程先天獨立於用戶交易的驗證,可以解耦;對任意的交易批次及結果狀態而言,共識過程可以被抽象成一種“終局性敲定機制”,邏輯上,多分片並行執行於是成為可能。
至於其可擴展性,以太坊分片技術的命名“二次方分片(Quadratic sharding)” 透露了端倪:假設分片上的交易,其執行複雜性能夠被化約到與區塊頭驗證同樣的難度,則分片化執行的架構,可以使整個系統的處理能力,隨著參與節點處理能力的線性提高而呈平方級提高。通俗來說,如果參與網絡的節點(平均而言)在一段時間內能驗證4 個區塊頭,這就意味著,在參與一個分片時,節點們可以在同等時間內驗證4 筆交易,此時系統總處理量是4 條分片× 4 筆交易/分片= 16 筆交易;如果節點的處理能力變成了8(2 倍),則處理量會變成64 筆交易(4 倍)。
(1)存在一種技術,使得分片交易的驗證,可以簡化到與驗證區塊頭同樣的難度;
二級標題
(2)不存在跨分片的交易,即各分片內的交易是完全不會相互依賴的。跨分片的交易需要佔用多個分片的處理容量,也要佔據信標鏈的處理容量,會使可擴展性大打折扣。
關於(1),這個假設是有可能得到滿足的,無狀態性(statelessness)就是這樣的一種技術,它的思路是,在傳播交易(或者傳播區塊時),附帶交易所訪問狀態的證明( witness),使得交易的驗證者無需持有交易執行之時的狀態數據,就能驗證交易的有效性。這一點極為關鍵,如果沒有無狀態性,參與分片驗證的驗證者就必須保存分片的狀態,因為驗證者會被不斷分配到不同的分片鏈上,那就意味著他們必須保存所有分片的狀態,在實踐中也就意味著他們要不斷下載所有分片的區塊並處理交易,從而使整個系統坍縮為一個大區塊系統(例:投入能處理16 筆交易的資源,處理16筆交易)。遺憾的是,至今,以太坊1.0 也沒有研究出足夠輕量的無狀態方法。
除了存疑的可擴展性,分片化執行還帶來了許多經濟上的有趣問題。例如,如果跨分片交易的處理時間超過一筆分片內交易的處理時間(這是必然的),這就意味著,不同分片上的ETH 價值也不會相同。就好像美國國內的1 美元,與美國國外的1 美元,實際上並不是同一種東西。不論有多少個分片,都至少會有兩種ETH 價格,一種,是那個金融應用最繁茂的分片(也就是Eth1 分片)上的ETH 的價格;另一種是其它分片上的ETH的價格;後者必須支付一定的手續費並付出一定的時間,才能換成前者,因此對前者必定有一些折價。同理,即使每個分片上都有uniswap,不同分片上市場的交易滑點也必定不相同,最終大家都會匯集到一個分片上,因為大家都在一起的時候,流動性最充沛,資金效率最高。某種程度上,可以認為跨分片交易的需要是很少的—— 但這也意味著,其它分片上閒置的交易處理容量,也根本沒有意義。
二級標題
分片化執行系統的技術難點,此處不再贅述,感興趣者可以自己想想分片化執行系統怎麼支付手續費的問題。但我在這裡想說的是,分片化執行系統的設計理念違背了大家的實際需要,也違背了事物的發展規律。全局狀態(可組合性),並不是一個問題,而正是大家需要的東西;正是因為以太坊使得所有金融應用都能瞬間組合,創造了一個價值可以零摩擦流通的空間,以太坊才有了變革世界的潛力;在協議層為價值流通創造摩擦,是自廢武功。有了一個良好的基礎層時候,應該想辦法維護這個基礎層,剩下的事情讓用戶自己選擇,讓生態自己演化—— 不要以為設計能設計出一個生態,過度設計只是給所有人強加成本。
分片化執行(Phase 2)的擱置,側面印證了其中的難度—— 在可預見的未來,這條道路無法產生令我們滿意的成果。儘管如此,我並不認為Eth2.0 的研究員們已經完全放棄了三階段路線圖,Vitalik 也還強調,變更後的路線圖,跟Phase 2 也是完全兼容的,只是Phase 2 不再具有優先級。
但是實際上,放棄分片化執行,才是以太坊應該選擇的道路。
二級標題
可執行信標鏈路線圖
沒了執行化分片,平方級擴展就無從談起了。那麼,這種“PoS Layer-1 + rollup + rollup 數據不佔據主鏈區塊空間” 架構的可擴展性如何呢?
結論
要解答這個問題,我們先來看看rollup 方案與主鏈的交互模式。
使用錯誤性證明的rollup(例如Optimistic Rollup)的方案則相反:任一人每次為合約公開交易數據時,都必須存入一筆押金,並斷言合約的新狀態根是YYY;此後一段時間內,任意其他人都能存入押金、發出錯誤性證明來挑戰該斷言;錯誤性證明即證明該批交易有瑕疵,或者交易處理後的新狀態根不是YYY;如果挑戰成功,則發布錯誤斷言的人會損失押金;如果一段時間內無人挑戰,則合約更新狀態根為YYY。
二級標題
結論
這兩種方案,都必須在鏈上發布數據,因此會佔用鏈上空間;而且,鏈上空間的大小,決定了rollup 系統在單位時間內的處理量(即TPS)。想得更深一些,如果這些交易數據,能夠發佈在一個數據量的約束更小的地方,或者說,不去佔用Layer-1 區塊的空間,則其處理量,能產生倍加的效果。如果這樣的地方有很多,那還可以產生倍乘的效果。


