以太坊2.0進展更新 (2019年6月)

買賣虛擬貨幣

作者 | Ben Edgington

編譯 | Jhonny

我知道你們最近幾天都被有關 Libra 的訊息刷屏了,所以這裡有一點精神慰藉:本文不會提及 Libra 的相關資訊,在這裡我們將回顧一些最新的以太坊 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[31]

對於我們這些更熟悉當前 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]

可以在 Twitter [43] 或 Peepeth [44] 上關注我,瞭解更多資訊。

更多資源

  • 相關的規範文件 [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]

--<END>--

文中涉及的連結:

[1]:https://media.consensys.net/state-of-ethereum-protocol-2-the-beacon-chain-c6b6a9a69129

[2]:https://github.com/ethereum/eth2.0-specs/releases

[3]:https://photos.app.goo.gl/eV81rzNZoBBtnm1HA

[4]:https://www.youtube.com/watch?v=NlDA3gKqysA

[5]:https://hackmd.io/@vJTdwcwQSByvMaZGfTX_oQ/Hyz8Mw-9V?type=view

[6]:https://docs.google.com/presentation/d/1UN5EV6nb2UHAQdVkE5BGkL2fyKKND0cdWi7gS2SWhAw/edit#slide=id.p

[7]:https://github.com/ethereum/eth2.0-pm/tree/master/interop/hobbits

[8]:https://medium.com/whiteblock/introducing-hobbits-a-lightweight-wire-protocol-for-eth-2-0-b1bfae5e4843

[9]:https://twitter.com/JonnyRhea/status/1139245584169209858

[10]:https://explorer.bounties.network/profile/0xb7693d3f040d66ab89ab86e7f8688c01febbc77c

[11]:https://youtu.be/RW7K3JQOZOg?t=9335

[12]:https://twitter.com/DeanEigenmann/status/1137032627230089216

[13]:https://arxiv.org/pdf/1906.05132.pdf

[14]:https://www.youtube.com/watch?v=4V-WQ2CnRfA

[15]:https://github.com/ethereum/eth2.0-specs/tree/dev/test_generators

[16]:https://github.com/ethereum/eth2.0-specs/releases/tag/v0.7.1

[17]:https://medium.com/@josephdelong/ethereum-2-0-deposit-merkle-tree-13ec8404ca4f

[18]:https://twitter.com/RosuGrigore/status/1131066228460675072

[19]:https://github.com/ethereum/eth2.0-specs/pull/1152

[20]:https://github.com/ethereum/eth2.0-specs/blob/dev/specs/core/1_shard-data-chains.md

[21]:https://www.youtube.com/watch?v=RW7K3JQOZOg&t=6284

[22]:https://ethresear.ch/t/phase-one-and-done-eth2-as-a-data-availability-engine/5269?u=benjaminion

[23]:https://notes.ethereum.org/s/HylpjAWsE#

[24]:https://ethresear.ch/t/proposed-further-simplifications-abstraction-for-phase-2/5445

[25]:https://medium.com/@william.j.villanueva/a-journey-through-phase-2-of-ethereum-2-0-c7a2397a36cb

[26]:https://youtu.be/NlDA3gKqysA?t=9441

[27]:https://www.youtube.com/watch?v=RW7K3JQOZOg&feature=youtu.be&t=2090

[28]:https://sites.google.com/consensys.net/fae

[29]:https://ethresear.ch/t/one-fee-market-ee-to-rule-them-all/5608?u=benjaminion

[30]:https://github.com/ewasm/scout

[31]:https://twitter.com/alexberegszaszi/status/1132242394102009856

[32]:https://ethresear.ch/t/phase-2-execution-prototyping-engine-ewasm-scout/5509?u=benjaminion

[33]:https://twitter.com/cdetrio/status/1134949249974767616

[34]:https://twitter.com/matt_garnett/status/1135925934882775043?s=03

[35]:https://ethresear.ch/t/work-to-natively-integrate-eth2-into-eth2/5573?u=benjaminion

[36]:https://medium.com/chainsafe-systems/ethereum-2-0-a-complete-guide-d46d8ac914ce

[37]:https://medium.com/chainsafe-systems/ethereum-2-0-a-complete-guide-3739a74be61a

[38]:https://www.youtube.com/watch?v=Z_dhq0MlFtc

[39]:https://ethgasstation.info/blog/eth2-proof-of-stake-testnet-what-we-learned/

[40]:https://medium.com/@ralexstokes/the-finality-gadget-2bf608529e50

[41]:https://medium.com/@ralexstokes/how-secure-is-ethereum-2-0-consensus-41523a59f270

[42]:https://twitter.com/matt_garnett/status/1136049338176720896

[43]:https://twitter.com/benjaminion_xyz

[44]:https://peepeth.com/benjaminion_xyz

[45]:https://github.com/ethereum/eth2.0-specs/tree/master/specs

[46]:https://github.com/ethereum/eth2.0-specs/pulls?q=is:pr+sort:updated-desc

[47]:https://github.com/ethereum/eth2.0-specs/commits/master

[48]:https://github.com/ethereum/eth2.0-specs/issues

[49]:https://github.com/ethereum/deposit_contract/

[50]:https://github.com/ethereum/eth2.0-pm

[51]:https://notes.ethereum.org/s/BkSZAJNwX

[52]:https://github.com/ethereum/wiki/wiki/Sharding-roadmap

[53]:https://github.com/ethereum/beacon_chain/issues

[54]:https://www.reddit.com/r/ethereum/

[55]:https://twitter.com/benjaminion_xyz/following

免責聲明:

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

推荐阅读

;