天天看點

一文看懂以太坊2.0最新進展

來源 | unitimes

作者 | Ben Edgington

編譯 | Jhonny

9個月前,原先的 Casper 和 Sharding 的設計被抛棄,以太坊 2.0 被認為是是目前以太坊主網的一個全新的發展。讓我們來盤點一下。

9個月前,以太坊2.0規範在 HackMD 上還是空白頁。現在它是一個功能齊全的 GitHub 庫,擁有着5版預釋出版本。54位貢獻者送出了1860次大約 23,000 行代碼,删除了 19,000 行。該規範現在貫穿了12個獨立的文檔,涵蓋了協定的不同方面,這還是不包括在不同代碼庫中的驗證者管理合約在内。該規範還在繼續快速發展。

以太坊2.0的設計包含了一些優秀的創新以及現有技術的應用,如 LMD GHOST 分叉選擇規則、BLS 簽名聚合、哈希樹根 (hash tree root)、二次洩漏 (quadratic leak)、托管證明等等。

簡而言之,這是一項宏偉的工程。這是激動人心的。就在9個月前,在柏林的那間地下室裡,作者從來沒有想到在這麼短的時間内會取得這麼多成就。這還不包括以太坊2.0用戶端實作。

在以太坊 2.0可以考慮傳遞出去和能夠運作之前,計劃了三個階段。目前進展如何了?我們一起來看一下!

階段0是信标鍊 (Beacon Chain),這是整個系統的權益證明 (PoS) 協調層。目前,階段0的規範正處于完成時期,針對此階段的規範進行修改的步伐已經迅速放緩。實際上,該規範已經是處于可執行和可測試狀态。剩下的幾乎就是選擇一個序列化算法 (抱歉!開玩笑?)。

信标鍊用戶端實作已經由多個團隊使用多種語言建立,并且正在組裝測試網絡。在調試、聯網實作和相容性測試之前,我們還有很長的路要走,但前進的道路是很明确的。一些人認為,我們可以在2019年底前部署一個真正質押 ETH 的以太坊主網。可以肯定的是,2020年初定能實作。此階段可能是最具挑戰性的實作階段。

階段1是分片資料層 (sharded data layer):就是在1,000多條獨立區塊鍊 (即分片鍊) 之間配置設定交易,這些分片鍊都錨定于權益證明信标鍊上。目前,階段1的規範進展得很好,可能會在階段0規範完成之後很快敲定。也就是說,在接下來的幾個月裡就會敲定階段1的規範。階段1實作主要是一個點對點網絡設計挑戰,目前這項工作正在進行中。

階段2是分片狀态 (sharded layer) 和執行層 (execution layer)。階段2還沒有規範文檔,還有很多研發工作要做。問題不在于我們将如何做這些事情,而在于考慮到未來系統中的所有利益相關者,哪種可用的解決方案是最佳選擇。開發者們即将開始着手解決這些棘手的問題:更多内容詳見下文。

這就是以太坊2.0現在的情況。過去的9個月是一段令人震驚的時期。我想我們大概已經走了四分之一到三分之一的路程。按照這個速度,以太坊2.0将在英國正式退歐之前得以傳遞……

規範更新

目前有一個實驗性的模式識别 ,用于檢視從所有規範文檔生成 RST/Sphinx (ReadTheDocs 格式) 的效果。

連結:https://github.com/ethereum/eth2.0-specs/pull/835

1. 信标鍊規範 (階段0)

規範連結:

連結:https://github.com/ethereum/eth2.0-specs/blob/master/specs/core/0_beacon-chain.md

自兩周前的上一個以太坊2.0更新文檔以來,信标鍊規範還沒有釋出過新的主要規範版本。

連結:https://notes.ethereum.org/c/Sk8Zs--CQ/https%3A%2F%2Fbenjaminion.xyz%2Fnewineth2%2F20190315.html

但是有一個 bug 修複的小版本釋出,是以我們現在使用的信标鍊規範是 v0.5.1 版本。

連結:https://github.com/ethereum/eth2.0-specs/releases/tag/v0.5.1

展望未來,Justin Drake (以太坊核心開發者) 曾确認過,我們将使用 SHA256 作為标準哈希函數 (之前是Keccak256,在那之前是 Blake2b)。選擇 SHA256 函數的主要原因是跨鍊标準化和相容性。

其他更改包括拆分和将分叉選擇規則變得可執行。這樣做允許從信标鍊規範直接生成測試向量(test vectors),這也是非常棒的。驗證者退出 (validator exiting) 相關規範也經過了重新調整和簡化。

信标鍊規範0.6版本預計将在接下來的幾周内釋出,此版本的變化将包含對上一版本的徹底簡化。

2. 分片鍊規範 (階段1)

規範連結:

https://github.com/ethereum/eth2.0-specs/blob/master/specs/core/1_shard-data-chains.md

階段1的主要更新是使用 JABS 替換 proof of custody game (JABS 即 Justin's Awesom Bit Sum)。500行代碼被删除了,是以,不管叫什麼,這絕對是一個主要的簡化。在開發者電話會議期間,Justin Drake 提到階段1規範将被分成兩個部分,其中第2部分包含對信标鍊的更新,以使其支援 proof-of-custody game。

應該可以在階段0規範完成之後不久就可以完成階段1的規範。

3. 狀态執行 (階段2)

上周,作者很高興看到 Brooklyn Zelenka 有關 Actor Modul (參與者模式) 的文章。Brooklyn 和 Boris Mann 還召集了一個讨論小組,讨論在以太坊2.0中跨分片通信模型 (cross-shard communication model) 可能是什麼樣子的。作者非常喜歡以太坊領域的一個原因是,聰明、博學的人總是在正确的時間出現來解決難題。跨分片消息傳遞是依然處于研究階段的關鍵部分之一。

相關連結:

https://medium.com/spadebuilders/actor-factor-2b0005fde786

4. 簡單的序列化 (Simple Serialize )

相關連結:

https://github.com/ethereum/eth2.0-specs/blob/master/specs/simple-serialize.md

在 Peter Szilagyi 的 SOS 序列化的基礎上,Piper Merriam 提出了對 SSZ 的更新,允許對序列化資料進行有效的索引。

連結:https://github.com/ethereum/eth2.0-specs/pull/787

5. 輕用戶端規範

相關連結:

https://github.com/ethereum/eth2.0-specs/tree/dev/specs/light_client

進行了輕微更新

6. 聯網 (Networking)

這是一個新的部分,包含了 Matthew Slipper 關于 RPC 接口的一個重要文檔的開頭部分:

https://github.com/ethereum/eth2.0-specs/blob/dev/specs/networking/rpc-interface.md

Matthew 還召集了一個電話來讨論線路協定 (wire protocol) 的事情。

7. 實作相關 (Implementation)

關于測試:

以太坊開發者會議期間,@protolambda 已經加入了以太坊2.0的測試和基礎設施相關工作中。除此之外,他還将緻力于模糊測試 (buzz testing) 和随機輸入 (randomised inputs) 等工作。

Diederik Loerakker,https://github.com/protolambda

現在該規範基本上是可執行的,許多用于生成和運作測試該規範上的裝置都被導入到中代碼庫中,甚至可以自動設定 CircleCI。

https://github.com/ethereum/eth2.0-specs/pull/800

此外,正式的測試生成庫正在轉移到規範庫中,以使它們更好地保持一緻。這将極大地幫助實作人員 (implementers) 保持測試套件與規範版本的同步。

一些實作團隊最近宣布了測試網絡:

  • Prysmatic 的 Gorli 測試網絡即将完成:

    https://medium.com/prysmatic-labs/ethereum-2-0-serenity-testnet-update-closer-than-ever-259cace9a1b1

  • Lighthouse 計劃在幾天内建立一個短期的測試網:

    https://twitter.com/ethZed/status/1111499764418240512

  • Parity 的 V3 版測試網已經處于可用狀态:

    https://github.com/paritytech/shasper/wiki/Shasper-Testnet-Plans

  • Nimbus 已經推出了自己的以太坊2.0公共測試網絡:

    https://our.status.im/the-nimbus-mvp-testnet-is-here/

至于跨用戶端測試網絡,Danny Ryan 提出了一些建議。他建議的一個方法是:(1)每個團隊運作自己的一個長期用戶端測試網,(2)用戶端通過所有的共識測試向量,(3)隻有到那時,才能與另一個客戶團隊進行1對1的合作,以實作該規範的公共版本的相容性。

8. 研究

對于所謂的 proof of custody game,已經做了大量的工作。這是階段1 (即分片資料層) 的核心部分,是一種用于讓驗證者負責檢視他們所驗證的分片區塊資料的機制。@dankrad 有一篇很好的文章,介紹了如何使用 PRF (僞随機函數) 以勒讓德符号 (Legendre symbol) 的形式而不是目前建議的哈希函數來實作這一點。這将允許在多方計算環境中有效地計算托管證明 (proof of custody)。也正因如此,之前 RANDAO 被更改為 BLS 簽名。

其他方面,Vitalik 給出了一些計算敲定區塊 “安全性” 的公式。也就是說,如果一個不同的敲定區塊與現有區塊存在沖突,考慮到驗證者集合中進入和推出的驗證者數量,必須對多少驗證者進行罰沒 (slash)?

https://ethresear.ch/t/weak-subjectivity-under-the-exit-queue-model/5187?u=benjaminion

9. 其他項

以太坊2.0工作計劃在悉尼EDCON會議之前繼續進行。我們将在4月9日的 EDCON 黑客松活動期間與大家見面。PegaSys 團隊的一些人也會前去參加。

資訊和系統資料庫在這裡:

https://notes.ethereum.org/7w7diW1-St2_Yu-YHjg6NA#。

Artemis 團隊正考慮在5月12日的紐約區塊鍊周時期舉辦一個 ETH2 用戶端實作者研讨會。(備注:Artemis 是信标鍊Java 用戶端)

雖然 Hsiao-Wei Wang 的示範文檔《Life of An Ethereum Beacon Chain Validator》沒有包括最新的進展,但很值得一看:

https://docs.google.com/presentation/d/1JlQ8fVZUvt7ywRcI7mj1ExmPxcNII2xKT4lkgnkq7gU/edit#slide=id.g52948b393d_2_75

Vitalik 在 r/EthTrader 上做出的回複:

https://www.reddit.com/r/ethtrader/comments/b660l4/vitalik_answers_to_rethtraders_questions/

Vitalik 對 PoS 存在的一些擔憂:

https://www.reddit.com/r/ethtrader/comments/b660l4/vitalik_answers_to_rethtraders_questions/ejim705/

相關文章:

https://thenextweb.com/hardfork/2019/03/28/vitalik-buterin-concerns-ethereum-proof-of-stake/

Vitalik 在 Ethhub 的采訪:

https://podcast.ethhub.io/vitalik-buterin-current-and-future-state-of-ethereum

原文連結:

https://notes.ethereum.org/c/Sk8Zs--CQ/https%3A%2F%2Fbenjaminion.xyz%2Fnewineth2%2F20190329.html