以太坊2.0 的未來藍圖及挑戰
編者按:本文來自以太坊愛好者編者按:本文來自medium以太坊愛好者

,譯者阿劍;原文來自
圖片描述Crosslink 2019 Taiwan圖片描述
Danny Ryan(來源: Crosslink 2019 Taiwan)-

一、以太坊2.0 的架構
圖片描述
一、以太坊2.0 的架構
圖片描述
以太坊2.0 架構(來源: Crosslink 2019 Taiwan)-
第零階段(Phase 0)
在以太坊1.0 (Ethereum 1.0)中,使用工作證明(Proof of Work, PoW)作為共識機制(Consensus),並藉此產生新的區塊。為了要減少工作證明產生新區塊時,所需要的大量算力,以及所花時間過長的問題,以太坊2.0 將改為權益證明( Proof of Stake, PoS)作為產生新區塊的共識機制。
第零階段會建立信標鏈(Beacon Chain),信標鏈就是以太坊2.0 系統層級的鏈,當從以太坊1.0 移轉到以太坊2.0 時,信標鏈扮演著非常重要的角色,它是整個系統的基礎。
一旦第零階段完成,將會有兩個使用中的以太坊鏈。以太坊1.0 鏈(目前所使用的PoW 主鏈)以及以太坊2.0 鏈(新的信標鏈)。在這個階段,使用者在1.0 鏈把以太幣鎖到合約里以註冊公鑰,2.0 鏈會承認合約內註冊的公鑰。但是,他們無法將該以太幣遷移回去以太坊1.0 鏈上面,為了要執行信標鏈,你會需要一個信標鏈的客戶端。目前,許多團隊正在開發這些客戶端。
第一階段(Phase 1)
第一階段會加入分片鏈(Shard Chains),在這個階段主要專注於分片鏈的數據結構,以及其有效性(Validity)和共識性(Consensus),分片鏈在這階段只當作數據鏈,並不會指定分片鏈狀態執行(State Execution)或帳戶餘額(Account Balances)。這比較像是對分片結構進行測試,而不是嘗試利用分片來對信標鏈進行擴展。在這階段,信標鏈會把分片鏈的區塊(Block),當作沒有結構或意義的位元集合(Collections Of Bits)。以太坊1.0 和以太坊2.0 仍將同時存在,並且在以太坊2.0 鏈上進行測試和遷移。
這個階段分片鏈會與信標鏈交聯(Crosslinks),每個分片的當前狀態— “結合數據根(Combined Data Root)”,會定期記錄在“信標鏈” 區塊中,作為交聯。信標鏈區塊完成後,相應的分片區塊(Shard Block)將被視為已完成,其他分片知道它們可以依靠這些區塊進行跨分片交易。
二、新的分片提案

二、新的分片提案
圖片描述
二、新的分片提案
圖片描述
新提案的優點
新提案的交易
新提案的交易
目前的想法
目前的想法

三、執行環境
圖片描述
圖片描述
三、執行環境
圖片描述
在之前設計的以太坊2.0 和以太坊1.0 中,狀態在共識機制裡,扮演著非常重要的角色,共識機制會隨時去讀寫所有的狀態,不管是執行的概念、交易的概念、帳戶的概念、樹狀結構的概念、以及所有在數據結構中的概念,都深深地融入共識中。

如果遵循EIP(Ethereum Improvement Proposals)的建議,開發者總是在要求新的操作碼,或著是更改礦工成本(Gas Cost)來支援他們的應用,像是Plasma 和Zkrollup 這樣的例子有很多,這樣就會需要修改EVM 1.0 的執行環境,才能支援到他們的應用程式(DApp)。
圖片描述
圖片描述
但是在以太坊2.0 的第二階段中,我們可以支持多個執行環境。也可以有多個狀態根,不同的帳戶模型等。舉個例子,你可以定義一個臉書幣執行環境(Libra EE),以便在以太坊2.0 上運行Libra。或者,您可以定義一個比特幣執行環境(BitCoin EE),這樣就可以在以太坊2.0 上運行比特幣。
以太坊2.0 簡易架構圖(來源: Crosslink 2019 Taiwan)-
在以太坊2.0 簡易架構圖中我們可以看到狀態根,它可能是32 Bytes 的Blob,上面有WASM 的執行碼(Execution Code),可以在使用者層級中去做細部設定。圖片右邊有一個鏈,鏈上有一般的交易數據以及見證(Witnesses),見證實際上顯示在數據庫的區塊中,你需要針對該狀態而不是數據庫執行該筆交易,而且還需要證明數據對於當前狀態根是有效的。舉個例子,如果我們要在帳戶A 和帳戶B 之間傳遞數值,假設從帳戶A 移動5 以太幣到帳戶B,我們不能直接說帳戶和余額(Balance)是確實可用的,在過程中,我們需要加入見證數據(Witness Data),來證明兩個帳戶當前的狀態,當執行碼正在執行交易數據時,狀態根可以修改和更新狀態樹。
執行環境並不是共識機制預先定義好的,他可以在使用者層級上去做新增,我們也可以把以太坊1.0 複製一份到以太坊2.0 的執行環境中,將現有的狀態根放入EVM直譯器,用默克爾見證驗證器(Merkle Witness Verifier)來當作他的執行碼。
執行環境的優點
執行環境的優點
執行環境有許多優點,相較於舊系統,它也許可以更快地將產品推向市場,因為我們不必等到核心共識推出之後,才研究並發展這個概念,在Layer 1 會有更少的阻礙,它可以在各種應用上,使用具高擴展性及數據可用性的執行引擎,所以未來會長期使用這個核心基礎層。
對於執行環境交易,開發者及使用者可能會覺得太抽象,對什麼是執行環境感到困惑,像是這一層加了什麼?應該在這一層做什麼?誰應該寫執行環境?而且相關的開發規範會趨向更嚴格的形式。
目前的想法
虛擬機可能會有潛在的碎片化問題,進而影響到交易速度。
目前的想法

四、雙向橋接
圖片描述
最後一個主題,主要討論開發雙向橋接是否是值得的?團隊可能可以在什麼時間點,來去做雙向橋接?
圖片描述
單向橋接示意圖(來源: Crosslink 2019 Taiwan)-
月初在日本大阪舉行的Devcon 5 上,橋接的問題受到了廣泛的討論,原提案的單向橋接(One-Way Bridge)模式,會有驗證者流動性的問題,而且更重要的是,它可能會引發以太坊1.0 和以太坊2.0 之間的可替代性問題,如果我們允許以太坊2.0 上的流動性,那麼某種形式的轉移機制,就會在將以太坊1.0 分叉到以太坊2.0 之前,或著是在雙向橋接之前產生,交易所中很可能會同時有兩個幣,團隊和整個驗證者社區都很擔心這個問題,目前正在找尋減輕這個問題的方法。

圖片描述
雙向橋接
雙向橋接目前可能的路線有兩條,一種是在以太坊1.0 上面,建立以太坊2.0 的輕節點;另一種是在以太坊1.0 上運作以太坊2.0 的全節點。

路線A: 在以太坊1.0 上,建立以太坊2.0 輕節點
圖片描述
圖片描述

路線B:在以太坊1.0 上,運行以太坊2.0 的全節點
圖片描述
圖片描述
路線B:在以太坊1.0 上,運行以太坊2.0 的全節點
路徑B 示意圖(來源: Crosslink 2019 Taiwan)-
第二種路線,會在以太坊1.0 的節點上,運行以太坊2.0 的全節點,這個路線允許我們使用敲定性機制,因此,我們不僅可以使用這種機制,來促進以太坊1.0 和以太坊2.0之間的轉移,我們也可以利用驗證者的安全性,來保護以太坊1.0 鏈,我認為大家對此感到非常興奮,這通常被稱為“敲定性小工具提案(Finality Gadget Proposal)”。
輸出以太坊2.0 狀態根的另一個優勢,是以太坊1.0 有穩固的機制可以實現它,以及同時擁有以太坊2.0 的高擴展性及數據可用性,可以做一些有趣的應用,像是ZK Rollup 和Optimistic Rollup。
雙向橋接的優點
雙向橋接的優點
如果你在交易所中,列出以太坊1.0 以太幣和以太坊2.0 以太幣,它們的價格應該一樣。如果不一樣,你可以用較低的價格買一個以太幣,把他發送到橋上,然後以較高的價格獲得另一種以太幣,並把它出售。這種套利會使它們的價格保持不變,這樣會讓用戶,驗證者和開發人員感到困惑,雙向橋接可以防止兩邊的貨幣藉由套利的形式,來互相轉換。
雙向橋接是一種緊密耦合的共識機制,對於兩邊鏈的攻擊及產生的問題,都會影響到另一邊的鏈,協定的開發勢必會非常煩瑣,我們需要考慮到每個協定的安全性,如果我們越早開發協議,那麼我們實際上的進度就越少,當每個障礙隨著時間發展,它們就會相互阻礙,這讓以太坊1.0 在這一點上的開發速度比以太坊2.0 慢得多,因為實際用戶群存在很多擔憂,並且需要大量的協調,才能在我們的生產網絡上獲得硬分叉。
目前的想法
所以,如果我們越早將這些東西連在一起,就可能會減慢以太坊2.0 的開發和分叉週期,並且這增加了一些額外的開銷,換句話說,驗證我們可以鏈接客戶端的開銷是相對的。
目前的想法
目前的想法
我們應該會在加入驗證者流動性之前啟用橋樑,但是會等到第一階段的產品穩定之後再開放;同樣的,有很多相關的研究都在同時進行,這可能會影響到,何時完成這個操作。
名詞解釋:
名詞解釋:
EIP(Ethereum Improvement Proposals):EIP 是以太坊平台的標準,其內容包含了核心協議的規範,客戶端API 以及合約標準。
epoch:在以太坊2.0 中,epoch 指的是時長6.4 分鐘的時間單位,每個epoch 包含32 個slots。
Slot(時段):每個時段為12 秒,不一定每個時段都能產生區塊,而epoch 中最後一個slot 稱為邊界時段(Boundary Slot),或稱為檢查點(C heckpoint )。
Solidity:Solidity 是一種合約導向的語言,主要用來開發智能合約。
Consensus (共識機制):共識機制是區塊鍊為了在各節點間達成共識,所開發的演算法。
Validator 驗證者:驗證區塊的節點,由信標鏈在每個時段(Slot)為每個片(Shards)隨機產生。
Gas:交易所需的費用,當Gas 消耗完時,智能合約會終止並進行Rollback。
EVM(Ethereum Virtual Machine):EVM 中文為以太坊虛擬機,是一種輕量級的虛擬機環境,Eth 1.0 中智能合約的運行環境為EVM。
Dapp(Decentralized App):在以太坊中,基於智能合約的應用都稱為去中心化的應用程序,即Dapp(Decentralized App)。Ethereum Improvement Proposals
ether(以太幣):以太坊的貨幣名稱。Two-way bridges between eth1 and eth2
Finality(敲定性):「敲定性」是Casper 中的概念,是一種透過驗證者投票,在鏈上產生不可回朔(Rollback)的檢查點的機制。Ethereum 2.0 (Serenity) Phases
Libra:臉書提出的加密貨幣,預計於2020 年發行。ethfans
Merkle Tree: Merkle Tree 由計算機科學家Ralph Merkle 所提出,中譯為默克爾樹,因為是由哈希函數形成的樹。eth2 quick update
參考:


