3個階段展示以太坊2.0最新進展(附詳實參考來源)

買賣虛擬貨幣

作者 | Ben Edgington

編譯 | Jhonny

我知道你們最近幾天都被有關 Libra 的訊息刷屏了,所以這裡有一點精神慰藉:本文不會提及 Libra 的相關資訊,在這裡我們將回顧2019年6月以太坊 2.0最新的開發進展。

本文的內容不是非常全面的,這些天發生的事情太多了。我將把過去幾周積累的各種片段整理成一些連貫的東西。

讓我們從開發更新開始。眾所周知,以太坊 2.0的交付計劃分為三個不同的階段。最近最令人興奮的是有關階段0 (接近信標鏈客戶端的互操作性) 和階段2 (以太坊 2.0計算模型的開始) 的進展。

階段0:信標鏈實現

信標鏈 (beacon chain) 是整個以太坊 2.0系統的協調層,可能也是最難交付的部分。有關信標鏈的背景知識,請參閱我之前發表的State of Ethereum Protocol #2: The Beacon Chain 這篇文章 [1]

去年6月份,信標鏈被設想為以太坊2.0的未來。僅僅一年之後,階段0的規範將在今年6月30日被凍結敲定。它是一個全新的區塊鏈設計,其野心之大前所未有,包含了幾十項重大的創新和見解,8個客戶端實現已經準備就緒:這是驚人的以太坊社羣一年以來的成就。坦率地說,這將使 Libra 相形見絀。任何對此不以為然的人,都生活在與我不同的宇宙中。

既然有關以太坊2.0規範的更新進展已經在 Github 上被很好地跟蹤和記錄了 [2],我就不像在以前那樣詳細介紹了。今天我們將從更廣泛的角度來介紹相關的進展。

01. 互操作性

隨著階段0的規範趨於穩定,現在的重點轉移到各個以太坊 2.0客戶端實現之間的互操作性 (interoperability)。當前由8個活躍團隊正在跟上最新的以太坊2.0規範。

一旦信標鏈網路啟用,每個客戶端都將需要相互進行通訊,以便就信標鏈的狀態達成共識。每個客戶端都需要遵循相同的規則:即使是一個位 (bit) 不正確,也會導致無法達成共識。

考慮到這一點,我們在布魯克林的 Bushwick Generator 舉辦了一個研討會,名為“通往互操作之路”(The Road to Interop)。我拍了一些照片[3],感興趣的人還可以觀看現場錄製的長達四個小時的影片 [4],還有研討會的議程 [5]。這是一個讓幾個客戶端實施團隊聚在一起,計劃如何讓我們的客戶端彼此連貫地通訊的場合。Vitalik 在當天下午做了一個關於階段2想法的演講 (見下文)。Terence Tsao 也釋出了關於 Prysm 客戶端架構和設計的演講幻燈片 [6]

計劃中的下一個重大事件是大約在9月初舉辦的主題為“Interop Lock-in”的研討會。那時,客戶端實現團隊將在聚集在安大略省某個偏遠的小屋,但只有在我們確認了所有客戶端都能夠很好地相處之後才會進行。

Jonny Rhea 在 Github 上整理髮布了擬定通往互操作性之路的各階段 [7],大家可進行參閱。

02. 網路 (Networking)

最終目標是使 Libp2p 成為以太坊2.0網路基礎上的 P2P 通訊協議 (備註:Libp2p 是一個便於使用者開發去中心化點對點應用程式的網路框架)。

然而,作為實現這一目標的一個簡化步驟,各個客戶端正在實現更簡單的 Hobbits 協議,Trenton van Epps 發表的這篇文章 [8] 對 Hobbits 協議進行了很好地介紹。Jonny 也以推文風暴 [9] 的形式闡述了 Hobbits 協議的基本原理,且 ConsenSys 也提供了一些獎勵金 [10] 來鼓勵各團隊在客戶端中整合該協議。

與此同時,Whiteblock 在 Libp2p 上做了一些效能測試,Daniel Choi 在 Scaling Ethereum 探討會上進行了介紹  [11] 。他們的發現對 Libp2p 在某些情況下的效能提出了一些問題 [12]。但是,透過與 Prtcocol Labs 進行合作,我們還將對 Libp2p 進行一些進一步的測試,以探索與以太坊 2.0相關的更真實的引數範圍。

另一個有趣的進展是,PegaSys 研發團隊發表的拜占庭容錯聚合協議 Handel:Practical Multi-signature Aggregation for Large Byzantine Committees (《Handel:實現更大規模的拜占庭委員會的實用多重簽名聚合》) [13]

該協議可以顯著地加快以太坊2.0中驗證者蒐集區塊證明 (attestations) 的速度,允許更大的委員會規模 (committee sizes),因此可能更快地實現交易的最終性 (finality)。

03. Testing  測試 (Testing)

在當前對階段0進行開發的期間,大量的測試工作正在進行。值得注意的是 Antoine Toulme 關於測試執行器 (runner) 的工作,這項測試工作由 Moloch DAO 資助,可以透過這個影片來了解最近的進展更新 [14],該影片非常值得客戶端開發人員檢視。

該規範是可執行的,並且所有跨客戶端測試向量都可以直接從編寫好的規範生成 [15],這一點是非常棒的。

還需要進行大量的工作來對該規範進行模糊測試 (fuzz-test),並提供一個用於對客戶端進行模糊測試的框架,正如在最新版的以太坊2.0規範中所體現出來的那樣[16]

04.形式化驗證 (Formal Verification)

Runtime Verification 已經編寫了有關以太坊2.0存款合約增量 Merkle 樹實現的審計報告,該報告使用 Vyper 語言  (而不是 Solidity) 進行編寫。

這是一個重要的里程碑,為將存款合約部署到當前的以太坊 1.0鏈鋪平道路。為了便於閱讀,我們團隊 (備註:即 PegaSys 團隊) 的 Joe Delong 撰寫了一篇解釋性的有關以太坊 2.0 存款 Merkle 樹的實現的文章 [17]。稀疏的 Merkle 樹是非常棒的!

Runtime Verification 還將在 K 語言中生成信標鏈的正式可執行規範 [18]

05. 信標鏈上線

在上週以太坊2.0實施者的電話會議上,Justin Drake 提出了信標鏈部署階段的兩個目標日期:

  • 在 DevCon 5 會議期間:將存款合約部署到當前的以太坊1.0鏈上。這一公開儀式將有助於避免騙子釋出虛假地址來竊取人們的存款。

  • 2020年1月3日:信標鏈創世區塊可能誕生。那時信標鏈將正式啟用。

信標鏈創世區塊的誕生將取決於兩個先決條件。首先,存款合約中必須質押有足夠多的 ETH。之前的一個硬性目標是質押的數量超過200萬 ETH,但這個要求已經被移除 [19]。但質押數量的目標將是一個保證信標鏈安全啟動的指令。

第二個先決條件是目標為3個 (或至少兩個) “生產就緒”的信標鏈客戶端和網路驗證者。在此之前,所有客戶端都要完成大量的相容性、最佳化、測試、審計、改進、工具化、文件化和打包工作,所以我認為1月3日的目標有些雄心壯志。

階段1:分片資料

最近,階段1的規範 [20] 已經成了 Serenity 的一片綠洲。

階段2:狀態執行

公平地說,就在幾個月前,以太坊 2.0要交付的階段2還是一片迷霧。階段2是所謂的“執行層”,這使得以太坊2.0區塊鏈實際可用。該階段將提供資金轉移、實現智慧合約和讓所有 dapp 得以搭建等功能。但是,就在最近的4月初,我們還不清楚該階段將會是什麼樣子。Casey Detrio 在 Scaling Ethereum 會議期間上做了一個關於階段2的歷史和現狀的精彩演講 [21],非常值得你花五分鐘的時間進行觀看……當時針對此階段的所有問題都是開放的,設計空間仍然是巨大的,可能性也是無限的,那時我們不知道從哪裡開始。

為了打破這一僵局,Casey 在 Ethresear.ch 上釋出了一項令人興奮的提議:Phase One and Done: eth2 as a data availability engine [22]。在不深入所有細節的情況下,這引發了一股創新浪潮,階段2迅速而令人興奮地開始成為關注的焦點。

之後 Vitalik 默默地公開了有關階段2的首個提案 [23] 及其後續跟進 [24],以迴應 Casey 的提議。新成立不久的 Quilt 團隊的 Will Villaneuva 在 Medium 上發表了一篇對此進行解釋的文章 [25]。在紐約的 Interop day 期間,Vitalik 講述了有關階段2的最新想法 (相關影片見 [26]),最後在多倫多的 Scaling Ethereum 會議期間闡述了更多的背景資訊 (影片見 [27] )。

Vitalik 提議的主旨是將以太坊區塊鏈在執行交易中的作用降至最低。在以太坊1.0鏈中,只有一種執行交易的方式,即透過 EVM。在執行了某個區塊中的交易之後,交易狀態的 Merkle 根將被寫入該區塊中。為了在該區塊中的交易上執行 EVM,所有的節點都需要儲存整條鏈的狀態 (包含賬戶餘額、合約儲存情況等)。

目前的階段2建議採用這個模型並加以推廣。現在可以有幾種 (甚至很多) EVM 型別 (我們稱之為執行環境,execution environments (EEs))。

執行環境 (EE) 就是在 eWASM 中編寫的、(幾乎) 作為純函式執行的程式碼。這意味著執行環境本身並不會儲存任何狀態:執行環境所需要知道的任何資訊都必須伴隨著交易一併被提供。因此,假如我想要傳送一枚代幣給你,那伴隨這筆交易,我需要提供一個證明 (比如一個 Merkle branch) ,從而證明我的餘額中有這枚代幣;該執行環境不知道我的餘額有多少,因為它並不儲存任何資訊。實際上,這並不完全正確:每個執行環境都將儲存一個32位元組的值,該值是其當前全域性狀態的某種概要或累加器 (也許是一個 Merkle 根,但這並不是規定性的,它可以是任何足夠安全的東西)。

以這種方式將執行層提取出來,這能夠提供最大程度的靈活性。可能會出現針對 zk-Rollups、ERC20 之類的代幣或者企業友好型環境、Plasam, 亦或者使用 Haskell 編寫 [28] 的智慧合約的 EE (執行環境) 等等。

其理念是,只要支付相當高的費用 (大約100 ETH?),任何人都可以部署自己的 EE 來支援自己的專業區塊鏈環境。以太坊2.0分片鏈只關注基本方面:交易排序和資料可用性。

當前,一些問題仍在積極討論中:是否支援 EE 之間的同步呼叫、如何組裝區塊的細節以及收取 gas 費用 [29]、EE 是永久性的還是需要支付一些儲存費用 (storage fee)、 EE 最初將在以太坊2.0中部署什麼等等。但在我看來,這無疑是正確的方向。

如果你想了解更多關於這一切的細節,你可以檢視 Casey 和 Alex 的 Scout 庫 [30],他們正在做一些可能的原型 [31],以及他們在 Ethersear.ch 上發表的文章:Phase 2 execution prototyping engine [32]

對於我們這些更熟悉當前 EVM 執行的具體情況的人來說,所有這些聽起來可能相當抽象和陌生。不用擔心,適應以太坊1.0和以太坊2.0之間的平穩過渡路徑已經成為一項優先事項,現在有一些有趣的想法 [33] 可以有效地實現這一點。雖然還存在一些挑戰 [34],但相關的討論 [35] 一直在 Ethresear.ch 行進行展開。

其他資訊

以下是我在過去一個月左右的時間裡隨機收集的一些零碎資訊:

  • Chainsafe 的 Colin Schwartz 正在撰寫一篇以太坊2.0的完整指南 [36]以及有關以太坊2.0擴充套件性的第一部分 [37]

  • Danny Ryan 在 Ethereal 會議期間傳遞的“Cautious Optimism (審慎的樂觀態度)”[38]

  • EthGasStation 與 Prysm 團隊合作併發布了相關報告 [39]

  • Alex Stokes 撰寫了一篇解釋以太坊2.0如何充當以太坊1.0的最終性小工具的文章 [40],以及一篇有關以太坊2.0共識的經濟安全性的文章 [41];

  • Matt Garnett 列出的開啟以太坊2.0學習的資源列表 [42];

更多資源

  • 相關的規範文件 [45]

       ୦ Pull requests [46]

       ୦ Commits [47]

       ୦ Issues [48]

  • 驗證者註冊合約 [49]

  • 兩週一次的以太坊2.0實施者電話會議 [50]

  • https://ethresear.ch/

  • https://gitter.im/ethereum/sharding & https://gitter.im/ethereum/casper

  • Eth2.0 Handbook 更新 [51]

  • Sharding 路線圖更新 [52]

  • 信標鏈相關問題 [53]

  • https://github.com/ethresearch/p2p/issues

  • 以太坊 Reddit 社羣地址 [54]

  • 加密貨幣領域相關推特賬戶 [55]

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;