一、伊斯坦布林升級
11月21日以太坊官方部落格發文稱:以太坊網路將按計劃在區塊高度9,069,000處進行升級,時間預計在2019年12月8日星期日發生。具體升級日期和時間可能會因出塊速度有所變化。本次伊斯坦布林升級要實現的功能包括引入分片;降低 GAS 成本的措施;改進與隱私幣 Zcash 的鏈互操作性;以及允許更多創造性功能的智慧合約。
伊斯坦布林升級將分兩個階段實施,包含14項EIPs(以太坊改進提案)。其中 6 項提案將在第一階段(V1)中實施應用,其餘 8 項仍需核心開發員商討審議後,預留給之後的第二階段(V2)升級實施。
在V1階段這些提案中,EIP-1884頗具爭議——為保護區塊鏈免受潛在的垃圾交易攻擊,它將增加應用程式開發人員從網路中檢索資料的計算成本,給操作碼重定Gas耗費,一部分操作的Gas耗費提高了。這使得在以太坊上呼叫資料的成本高於先前,對於開發人員來說,需要避免編寫佔用儲存空間很高的應用程式來消除 Gas成本變化帶來的最大幹擾,例如,預估在一筆交易中訪問的總儲存空間+合約+合約程式碼,並確保不會過載。另有EIP-1108大受歡迎——它涉及到對以太坊上預編譯的橢圓曲線演算法重新定價。旨在通過優化 GAS 支付來改善以太坊的可擴充套件性和隱私協議,並將使 ZK-SNARKs 和其他隱私應用程式(如 Zether 和 AZTEC)在以太坊上的使用成本更低。
第二階段(V2)將計劃在升級後的主網上實施,包括了一項被稱為“ProgPoW”的演算法改進,它將通過替換工作量證明功能 Ethash 演算法來增強以太坊抗 ASIC 的能力。
伊斯坦布林升級是以太坊可擴充套件藍圖上的一個關鍵里程碑,力圖在不犧牲去中心化原則的前提下,使應用區塊鏈變得更快速、更便宜。
以太坊成立至今已牢牢佔據加密資產市值第二的位置,並擁有著全球較大的開發者社群,其在DAPP數量上也將其他公鏈遠遠甩在身後。但是即便是這樣“一人之下萬人之上”的地位,也並不意味著以太坊就可以高枕無憂了。定位於“世界計算機”的以太坊,目前每秒只能處理大約15筆交易,像Visa這樣的私人公司則可以每秒處理45,000筆交易。頻頻發生的擁堵事件導致的額外費用和處理時間等待更是讓使用者的體驗變得很差,這在很大程度上限制了以太坊的發展。以太坊想要被大量採用,必須要大幅提升以太坊網路上的擴充套件性與效能,從而更好的承載去中心化應用,促進行業應用爆發。
(主流公鏈DAPP資料圖,11月29日)
以太坊2.0是替代當前以太坊的網路的既定規劃。伴隨著以太坊即將進行的伊斯坦布林(Istanbul )升級,以太坊2.0的方案和程序再次成為大家熱切關注的一個問題。
二.以太坊 2.0以太坊的目標是成為分散式金融和智慧合約執行平臺,成為“一臺真正的世界計算機”。以太坊的官網是這樣顯示的:以太坊是面向去中心化應用的全球的、開源的平臺。在以太坊上,你可以編寫控制數字價值的程式碼,完全按照程式設計的方式執行,且在世界上任何地方都可以訪問。在這個去中心化的世界當中,以太坊似乎將自己定位成去中心化網路的構建者,去中心化網路基礎設施與技術的提供者。
為了實現世界計算機的目標,以太坊在2014年誕生之初,就設定了4個發展階段:Frontier (前沿)、Homestead (家園)、Metropolis (大都會)、Serenity (寧靜)。前三個階段都是採用POW模式,第四個階段“寧靜”則是POS——以太坊的最終形態,也就是我們說的以太坊2.0。
2.0階段將完成從 PoW 到 PoS 的轉化,以及其他一些重要升級。
2.0升級完成後,預計以太坊速度會大大加快,不同於之前的 POW,它將依賴於 PoS 權益證明的共識演算法來驗證交易。
2.1以太坊2.0架構
(以太坊2.0整體架構 ,來自Hsiao-Wei Wang)
此圖從上至下為:
1.PoW Main Chain是當前的以太坊主網。在以太坊2.0系統當中,它將會作為信標鏈的一個分片繼續執行。
2.Beacon Chain即信標鏈,它是所有鏈的基礎鏈,是整個以太坊2.0系統的中樞部分,通過權益證明Casper協議(Casper是整套系統的共識層,負責管理驗證者,施行獎勵和懲罰)並協調所有獨立並行的分片鏈,通過交聯(Crosslink)作為各分片的錨定點以實現跨分片通訊,併為分片提供最終確定性保證。
3.Shard Chains是分片鏈,是可擴充套件性的來源。每一個分片都有一個驗證者委員會對分片進行打包和驗證,並將分片的狀態通過交聯定期記錄在信標鏈上。一旦信標鏈上敲定(finalize)一個區塊,該區塊中的交聯所引用的分片塊就被認為確定不可篡改了。
4.VM層是以太坊2.0系統的最後一個重要組成部分,它將提供合約以及交易的執行。
以太坊2.0的架構如圖1所示,在以太坊2.0中會有一條稱之為信標鏈的主鏈,在信標鏈下,存在64個分片,每個分片可以獨立地處理資料。信標鏈是該架構的核心,負責連線主鏈以及管理各個分片。
Casper是其對應的共識,它有兩個版本,一個是Vitalik領導的Casper FFG,FFG使用POW+pos的混合共識,作為使以太坊從PoW成功轉變到PoS的過渡協議。它的主要思想是藉助PoS幫助PoW產生的區塊最終確認,進而在減少礦工獎勵的情況下提高系統的安全性;另一個是Vlad領導的Casper CBC,CBC則是純PoS共識,從目前來看CBC仍有很多細節需要進一步研究和探討。
信標鏈通過Casper共識協調所有獨立並行的分片鏈,負責將驗證者分配到分片中並追蹤每條分片當前的狀態,為分片提供最終確定性保證,對提升整個系統的安全性也能起到至關重要的作用。它是實現以太坊 2.0的基礎。
以太坊2.0中,1.0原鏈仍保持原有狀態執行PoW共識。在分片鏈能夠實現完整的功能後,1.0 將把以太坊的實際執行權交給信標鏈,作為信標鏈的一個分片或一個主儲存合約而存在,兩者通過橋接實現互通。
2.2以太坊2.0更新點
按照以太坊的發展路線圖,以太坊將在2020年步入2.0階段。以太坊2.0這場技術升級主要有三大創新:權益證明的共識機制(PoS機制)、分片和eWASM虛擬機器。
共識機制POW轉POS——提升效率,解決耗能問題
在以太坊 1.0中,使用工作證明(Proof of Work, PoW)作為共識機制,並藉此產生新的區塊。基於POW算力的共識,所有的節點同時只能做一件事,整個網路能夠處理的任務量是非常有限的,嚴重受制於網路中單個節點所能處理任務的上限。即使對區塊大小進行擴容,由於存在全網共識,效率提升的作用也是有限的。因此,為了要減少工作證明產生新區塊時所花時間過長,以及需要大量算力造成資源浪費的問題,以太坊 2.0 將改為權益證明( Proof of Stake, PoS)作為產生新區塊的共識機制。
分片(Shards)——提升網路效能和容量
物理空間上,分片是將公鏈網路中的所有節點劃分為不同的分組,每一個分組叫做一個分片。原本公鏈中所有節點所做的任務是完全相同的,現在將任務進行分組,分配給不同的分片,各個分片處理不同的任務。原來公鏈網路的效能瓶頸取決於網路中節點的效能,進行分片後,單個分片內的節點僅需承擔全網的部分工作,各個分片並行工作,從而提升整個網路的承載能力。假設分片數為n,則每個節點需要承擔的的工作量為全網工作量的1/n。同理,全網容量也將變為原來的100 倍。分片是區塊鏈擴容最佳方案,它能在沒有提高節點硬體要求且沒降低去中心化程度的情況下,實現網路效能和容量的大幅提升。
由eWASM代替EVM——提升智慧合約的相容性和執行效率
虛擬機器是類似於作業系統的小的程式,是處理智慧合約部署和執行的地方。以太坊系統上的所有節點都需要執行智慧合約來執行最終在區塊鏈上的交易,每個完整節點裡面都會執行一個虛擬機器,所有節點會執行同樣計算,之後所有節點來比對這個結果並寫入區塊資料中。
(智慧合約執行流程圖)
以太坊2.0將支援多種程式語言,以eWASM 將替代 EVM。EVM 虛擬機器是以太坊網路中的核心引擎,驅動著整個以太坊的運轉,承載著以太坊上所有的通證、DAPP、DAO 組織和遊戲等。但由於EVM工作臃腫繁複的編譯工作會消耗大量 gas 燃料費,並且隨著以太坊2.0PoS和分片的改進需要虛擬機器並行處理事務,而EVM是按順序處理事務並不適合此類操作。因此以太坊團隊提出使用 eWASM 替代 EVM,eWASM 是WASM (WebAssembly) 程式碼的Ethereum版本, 相比於EVM,eWASM具有更好的效能以及更好的擴充套件性,可支援Solidity,C++,Rust,AssemblyScript 等多種程式語言,開發合約會更容易,也將可能在ETH2.0上支援智慧合約、賬戶、狀態等。此外,eWASM向後相容EVM,因此現階段Ethereum的智慧合約理論上在Ethereum 2.0依舊可以執行。
2.3關鍵解決方案
與此同時,由於分片和pos共識機制的引入,以太坊2.0面臨著新的挑戰。於是有Casper FFG、信標鏈、橋接解決方案來彌合這些風險,幫助以太坊2.0不斷完善。
2.3.1 .Casper FFG
在Casper FFG實施後,以太坊將會先進入一個POW+POS混合挖礦的階段,這個階段大多數的區塊仍然是通過POW來產出,部分割槽塊會開始交給POS節點,讓整個網路以較為平緩的方式向POS來進行過渡。
Casper FFG按期為系統分配驗證者委員會,為每個分片選出區塊提議者和區塊驗證者,對驗證者實施獎勵和處罰。
1)管理驗證者狀態
驗證者的狀態有四種:未啟用的(尚未開始履行驗證者職責)、啟用的(正在驗證)、等待( 正要成為一個驗證節點但還在等待佇列中 )和退出的驗證節點(希望解除驗證者職責但仍卡在退出佇列中 )。
在Casper FFG上,一個完整的驗證人週期是:
1交抵押金:需要往Capser的智慧合約中抵押32個ETH
2等待入選通知:等待1天時間
3投票:等2確認後,在檢查點投票,確認區塊
4退出:發出退出協議後,還需要繼續驗證7天
5提取抵押金:提交申請後,需要等待4個月左右才能取出。
進入和退出要有一個等待期是為了系統要安排驗證者組成委員會,而且是點對點連線,要讓這個過程儘可能平滑,讓驗證者數量不至於大幅波動。
了解兩個時間單位
Slot(時隙):區塊提議人提議區塊並用於驗證的時間,當前為12秒。如果驗證者委員會內部能達成共識,該時隙便能成功產生一個區塊,否則該 slot 便為空。
Epoch(時段):多個時隙( 當前為 32 個 )組合而成的時間段,為6.4分鐘。 epoch 中最後一個 slot 稱為Checkpoint(檢查點)。
成為Validators(驗證者):
由於POS存在“無利害攻擊”問題,即在POS機制下,惡意的節點驗證者可以在沒有任何損失的情況下去把自己的幣押在分叉鏈上推動硬分叉。因此在Ethereum 2.0中驗證節點需要向信標鏈抵押一定數量的ETH(目前為32ETH)才能申請加入,當被標記為“active" 之後,才能執行Ethereum 2.0協議,同時信標鏈也會跟蹤和管理驗證節點。32個ETH的門檻較低,架構在PoW上的PoS是以智慧合約的形式存在,節點程式可能會稍微簡單一點,使用者只需要在電腦上執行錢包就可以了,配置要求性也不會很高。驗證人最重要做的事情是步驟3的投票,準備,及時投票就可以讓驗證人得到獎勵,避免被罰沒token。
退出驗證:驗證者也可以發出訊號表明他們想要退出系統,並停止參與協議的執行。為防止長程攻擊,以太坊ETH2.0中有較長的提取延遲期,他們的抵押TOKEN加上獎勵再減去罰款,將被退回到一個分片鏈當中。
2)為系統隨機分配驗證者
Committees(驗證者委員會)是由信標鏈隨機選擇的一組(至少128個)驗證節點,負責見證信標鏈和各分片產生的區塊。信標鏈有其對應的委員會,每一個分片也各有一個驗證區塊的驗證者委員會。委員會負責保證它們所在分片的安全性、活性以及完整性,並負責證明信標鏈上的分片狀態。
在每一次slot中,信標鏈會在各委員會中隨機為所在鏈選出一位驗證者負責出塊,一定數量的其他驗證者則則檢查該區塊並驗證正確性。到下一次出塊時,則再隨機選出一個驗證節點提議生成區塊,同時換另一組不同的驗證節點驗證正確性。
分配好的委員會在完成一個Epoch的出塊和驗證任務後,系統會將所有的驗證節點重新洗牌,給每一分片隨機選出下一個Epoch的新的驗證者委員會。驗證節點的選舉過程在隨機數生成演算法的幫助下,從根本上避免了驗證節點間的勾結串通,提高了協議的安全性。
3)確保鏈的最終確定性,避免POS長程攻擊
Bitcoin的PoW共識採用最長鏈原則,為防止雙重支付的發生,一般需要等6個區塊的確認之後,交易才能被真正確認為有效。事實上,6個區塊確認之所以被認為是確認有效的標誌,是因為在此之後,在現階段Bitcoin 的算力條件下,該交易被篡改的可能性已經可以忽略不計,但是從理論上來講,即使在一筆交易之後經過了幾百個區塊的確認,依據最長鏈原則,該交易仍然有被通過51%攻擊篡改資料的可能性。因此在PoW共識下,鏈的確定性只是隱式的最終確定性,而這一特性將會使本就複雜的狀態分片變的更加不確定。
以太坊2.0中驗證節點對每一個區塊進行投票會增加網路傳播開銷,為了減少Casper中投票的數量,每個epoch裡的最後一個slot上的區塊設定為一個檢查點,參與共識的驗證節點會對檢查點投票。每個驗證者投的是一段檢查點,可以是從確定性檢查點開始到若干個檢查點之後的一個檢查點。從創世區塊開始(創世區塊是第一個確定性檢查點),當下一個檢查點收到了超過2/3的的投票,那麼這個區塊就成為確定性不可更改的,這個檢查點即是確定性的檢查點,以此類推。當一個確定性檢查點收到了超過2/3從它出發到它後面的某個子檢查點的投票時,那麼這個確定性檢查點到後面這個檢查點間的所有的檢查點都已經被確認。
如果確定性檢查點在同一分支上的上一檢查點也是確定性檢查點,且有超過2/3的驗證者對這段投票,那麼這個確定性檢查點就是最終性的。如果一個檢查點狀態是最終性的,那麼它以及它之前所有的區塊都會確認。所以Casper共識中的又一大改進是引入了顯式的最終確定性,也就是在最新區塊前若干區塊前的區塊資訊無法再被篡改,這將有利於實現無狀態客戶端。
這其間,為了防止驗證者在執行的過程中作惡,Casper制定了一套懲罰機制如下:驗證者對於同一個區塊高度不能發起兩個不同的投票,並且兩個投票的投票範圍不能存在一個包含一個,否則罰沒抵押的token。
此外,為了讓PoS能夠提高PoW鏈的安全性,在如何進行分叉選擇的時候,FFG對最重鏈進行了些許的修改:首先在檢視中找到高度最高的確定性檢查點,並在該檢查點之後的區塊上進行最重鏈選擇。
這樣做有兩個好處,第一個是FFG中只要是在最終性檢查點之前的區塊都是被確認的,沒有被顛覆的可能性。第二點是一個確認的區塊的安全性是需要礦工不斷將自己的工作量提供給該區塊的,因此為了激勵礦工需要更多的挖礦獎勵;FFG中,只要是最終性的區塊都是被確認了的,無需後續的礦工用工作量為已經確認的區塊增加安全性,因此可以降低挖礦獎勵,降低通脹率。
4)通過獎懲機制規範節點行為
POS驗證節點除了承擔出塊的作用外,還承擔驗證區塊的作用,它還需要一直線上以完成分配給它們的任務。
驗證者投票的權重取決於他們抵押token的大小。驗證者每成功打包一個區塊,就會獲得一個與他們所持有的TOKEN成比例的以太坊2.0系統獎勵。如果大多數驗證者拒絕他們所建立的區塊,那麼驗證者將面臨失去抵押token的風險。同時,如果驗證者沒有履行對區塊投票的責任,那麼他們質押的以太幣會被削減,如果驗證節點的餘額減小到驗證閾值以下,則將被踢出驗證節點池,無法繼續參與驗證工作。因此,CASPER迫使驗證者誠實行事,並通過獎懲制度遵守共識規則。
2.3.2 信標鏈
跨片通訊需要藉助信標鏈來完成,因為一個分片沒有其他分片的直接資訊,只能通過交聯到信標鏈上得到關於其他分片的資訊。在以太坊2.0中,每一個分片都有一個驗證區塊的驗證者委員會,委員會成員必須在信標鏈上寫入關於分片的可驗證資訊(比如:默克爾根),這便是交聯。當信標鏈區塊完成時,相應的分片區塊就被認為是最終確定的,而其餘分片則可確信它們可依賴其進行跨分片交易。如果驗證者委員會成員不能對交聯的有效性達成共識,那麼將會對出錯驗證者進行罰沒。
1)保證分片驗證者隨機性
區塊鏈系統中很難產生良好的隨機性,而一個權益證明協議的關鍵要求,就是隨機性的來源,它必須是分散式的、可驗證的、不可預測的,並且是不可剝奪的。分片更容易被惡意礦工掌控,因為攻擊者只需要1/N的hash算力就可以完全控制一個分片。因此對於一個分片系統來講,需要很好的隨機性來防止特定分片被單獨攻擊.而信標鏈就是負責向系統的其餘部分提供這種隨機性。在以太坊分片中,當前的隨機數生成是信標鏈通過RANDAO結構完成的。
驗證者會提供一個“雜湊洋蔥”。 而RANDAO結構將很多參與者提供的單個隨機數組合成單個輸出數字的一種方式。為了防止任何一個參與者顯著地操縱隨機性,開發者使用了一種提交洩露(commit–reveal)方案。當驗證者註冊時,它會提供一個承諾值,該值是其選擇的原始數字經多次雜湊後產生的。每次在委員會中選擇區塊生成者時,它通過提供最後一個揭示數字的原像來剝離“洋蔥”的一層或多層。其它人都可以檢查這是否是正確完成的,因此提出者不能通過改變其單個隨機數來欺騙系統。因此區塊生產者基於上述協議內的隨機性,隨機地選擇區塊提議者。
casper協議功能中讓信標鏈每個分片選出驗證者委員會、擇出塊驗證者等都依賴於RANDAO結構帶來的隨機性。
2)通過交聯(crosslink)成為各分片的錨定點,實現跨分片通訊
當分片 A 上的使用者或合約想與分片 B 互動時,需要讓分片 A 驗證者委員會成員在信標鏈上寫入關於分片的可驗證資訊(比如:默克爾根)。分片 A 會將它的所有收據打包到它的區塊頭中。信標鏈等待分片 A 就包含該收據的區塊達成共識後,將分片 A 的區塊頭打包到信標鏈中。分片 B 等待信標鏈完成區塊共識後,才能將包含分片 A 該區塊頭的信標鏈區塊頭打包進分片 B 的區塊中,從而達成片內共識。如果分片 B 上的合約想要傳送回覆資訊(也許是返回一個值或一個錯誤),就需要將整個過程倒過來:分片 B 生成一條收據,最終在分片 A 中生效。
以太坊 2.0 新提案的分片數量由 1024 個降至 64個,降低了運算的複雜度,進行交聯的共識週期從一個 epoch降到一個 slot,來降低跨分片交易時的延遲時間。
雙向通訊時,當分片 B 上的合約為不需要傳送回覆資訊的最佳情況時也需要消耗 4 個共識週期才能完成,如下圖1到4的過程。使用者在 3 個時段結束後才能夠確認通訊過程已經完成,因為使用者能夠在分片 A 接收到分片 B 的可驗證資訊及其證據前看到分片 B 已經對該可驗證資訊完成共識了。由於 ETH 2.0 的共識週期是 12秒,分片 A 的使用者必須等待 12 *3=36秒才能看到結果,而若想在分片 A 上查詢到該結果則需等待12 *4=48 秒。
2.3.3 橋接
橋接是將以太坊 1.0 上的ETH遷移到以太坊 2.0 。
單向橋接方案中現有的以太坊 1.0 以太幣持有者可以燒燬他們所持有的貨幣以換取等量的以太坊 2.0 以太幣,2.0以太幣將會生成並被鎖在信標鏈的保證金合約中,但是無法回傳。這種橋接方式會導致驗證者流動性問題,而且更重要的是,它可能會引發以太坊 1.0 和以太坊 2.0 之間的可替代性問題,在雙向橋接之前產生,交易所中很可能會同時有兩個幣。雙向橋接不會有這個問題,但雙向橋接是一種緊密耦合的共識機制,對於兩邊鏈的攻擊及產生的問題,都會影響到另一邊的鏈,協定的開發勢必會非常煩瑣。
下圖是在 EthHub 上列出的單向橋樑和雙向橋樑一些顯著的優點和缺點。值得注意的是,單向橋接的優點大多體現在技術方面,而缺點則主要集中在經濟方面。也就是說,關於單向橋樑和雙向橋樑的選擇實質上就是技術與經濟挑戰之間的權衡。
雙向橋接目前可能的路線有兩條,一種是在以太坊 1.0 上面,建立以太坊 2.0 的輕節點;另一種是在以太坊 1.0 上運作以太坊 2.0 的全節點。
橋接需要考慮到每個協定的安全性,因為實際使用者群存在很多擔憂,並且需要大量的協調,才能在我們的生產網路上獲得硬分叉。團隊希望在影響到以太坊 1.0 的安全性和風險狀況之前,先在生產環境中得到驗證。開發團隊應該會在加入驗證者流動性之前啟用橋接,但是會等到第一階段的產品穩定之後再開放;有很多相關的研究都在同時進行,這可能會影響到何時完成這個操作。
三、以太坊2.0面臨的風險3.1落地風險
Ethereum 2.0開發難度較大,時間較長。由架構圖可以看出,完成以太坊2.0需要有幾個大的技術創新,實現智慧合約分片與狀態分片本身就有極高設計與開發難度,除此之外還需要考慮與原鏈的過渡與相容,更進一步的增加了實現難度。以太坊作為一個發展幾年的平臺,程式碼結構已經變得非常複雜,底層重則修改難,對於原有架構的修改牽一髮則動全身,需要考慮很多因素。我們看到雖然以太坊的框架已經確定了下來,但很多細節還在持續討論和修改中。
3.2競爭風險
許多公鏈致力於解決以太坊當前面臨的擴充套件與效能問題,他們大都會在智慧合約層相容以太坊程式碼,可以最快速、最方便的讓開發者能轉移到自己的公鏈上來,所以以太坊面臨的競爭壓力是非常大的,如果以太坊不能很好的將自己的例項提高,那麼肯定會給別的公有鏈超越的機會。高效能公鏈賽道里,2014年的Tezos已經在2018年上線了主網,2016年的專案Cosmos和Cardano測試版也在2019年上線,留給以太坊2.0的時間是緊迫的。
參考資料:
分片技術研究報告| TokenInsight
以太坊 2.0: 以太坊的未來之路|藍狐筆記
以太坊 2.0 的未來藍圖及挑戰
以太坊2.0是什麼?分成幾個階段