최신 뉴스

以太坊2.0最新進展:啟動64個分片,驗證器預期兩年達數十萬

혁신적인 기술 2020-06-06

前言:本文是由以太坊 2.0 協調員 Danny Ryan 發佈於以太坊官方部落格上的,原文為《以太坊 2.0 的現狀》(2020 年 6 月)。在這篇文章中,Danny Ryan 介紹了以太坊 2.0(eth2)最新的狀況,各方面的進展和計劃。

非常感謝 Sacha Saint-Leger、Joseph Schweitzer、Josh Stark 和 protolambda 的出色投入和反饋。

我花了很多時間來解釋和回答有關 eth2 的問題。當我與技術貢獻者溝通相關研究和技術規範時,其中一些涉及到深度和技術層面,但是如今,我更頻繁向社群提出有關 eth2 的進展、方向、動機、設計決策,延誤等問題。我真的很喜歡這些對話。當我解釋 eth2 時,我會感到非常興奮,想出新的方法來描述各個部分的進展,或者根據聽眾找到合適的類比,以使社群運轉起來,並保持透明。

但是,這種動態/對話的方法雖然很有價值,但是仍舊讓社群中的很多人並不了解。我一次又一次被問到同樣的問題,甚至六個月後我又被問到了同樣的問題!顯然這裡存在著資訊傳遞的問題。社群想要知道的資訊已經公開存在,但卻是以各種形式分散在網絡上——如研究類貼文、技術規範文檔、規範說明文檔、公共電話會議、公共聊天頻道、reddit、部落格文章。

在以太坊開發大會 devcon5 之後,我在彌合 eth2 內的人與社群中其他人之間的資訊鴻溝的第一次嘗試便是一個新部落格系列,即「eth2 快速更新」。這些是幫助您跟進 eth2 的小型資訊片段,但我意識到它們並沒有真正傳達出更大的 eth2 視圖。雖然確實可以在 Podcast、AMA 和會議上進行交流和討論,但即便如此,關於 eth2 的書面形式的表述仍將很有幫助。

所以這就是這篇文章的目的。這篇文章是針對社群的,目的是為使以太坊社群全面了解 eth2 的現狀:正在進行的工作,可能的未來發展以及對您的意義。我將嘗試提供適當數量的技術內容,以說明相關工作的動機和願景,項目的當前狀態以及即將開展的工作,而不會過多地使用數學或專業術語。

這篇文章對於那些至今對 eth2 有所迷惑的以太坊技術專家來說可能也很有用。不用擔心,我都了解。這個項目很大,很複雜,而且距離實現還有一些距離,您可以在解決眼前的緊迫問題時忽略它。希望這篇文章可以幫助您更好地了解即將發生的事情。

對於 eth2 工作者來說,您可能還會從這篇文章中學到一些東西——對我們現在的處境以及我如何思考未來的事情有更廣泛的了解。

免責聲明:本文中的內容是我個人(Danny Ryan)的看法。eth2 是不斷發展的,不斷演變的,存在著很多聲音和觀點。本文只是我自己對 eth2 的理解。

eth2 是什麼?

Eth2 是一種可擴展的權益證明(PoS)基礎架構

如果您在過去 6 個月內聽過我之前的講話,那麼您應該一次又一次地聽到我說過這句話。Eth2 是為以太坊構建的,最終會成為以太坊。它旨在為當前的以太坊主網提供一個更安全和可擴展的環境,並且對目前的工作方式的干擾最小。同時,它為我們提供了一種經過升級的環境。

在以太坊誕生之前,眾所周知,一種單個區塊鏈範式無法提供足夠的帶寬來充當新的去中心化網路的骨幹。以太坊相關的權益證明(PoS)和分片(Sharding)研究的歷史可以追溯到 2014 年。PoS 和分片的目的都是為了回答以下問題:給定一定數量的資本支持加密經濟體系,我們能否在提高安全性和吞吐量的同時仍允許消費類硬件參與共識?雖然我不會在本文中討論之前的歷史,但要說的是這項探索已經花了很多年,並且有許多錯誤的方向。最後,我們得到了一個肯定的答案,並已證明這個答案就是 eth2 項目。

Eth2 是一個雄心勃勃的多年實施項目,將分階段推出。對此已經進行了廣泛的記錄和討論,但我將向您快速介紹一下這些階段的含義。

階段 0

信標鏈(Beacon Chain)是 eth2 的階段 0,是新共識機制的核心。這是所有系統級活動和編排發生的地方。階段 0 就是要與遍布全球數千個節點的數十萬個共識實體(驗證器,validators)達成共識。

由於在階段 1+中有關將驗證器的子集分佈在各個分片上的技術要求,我們需要能夠處理大量的驗證器。許多工程複雜性便是源於這個要求。與其他非分片的權益證明機制具有 100 或 1000 個驗證器相比,但是eth2 的設計為至少具有約 1600 個驗證器,並期望在兩年內該數字將達到數十萬。

階段 1

階段 0 在於達成共識,而階段 1 在於在「很多事務」上達成共識。這些「事務」以許多分片鏈的形式出現。您可以將分片鏈視為其自己的區塊鏈,其複雜性與今天的以太坊大致相同,但存在於 eth2 共識下(即在信標鏈之下並由其構建/控制)。信標鏈的驗證者獲得隨機的短期任務,以構建和驗證分片鏈,對每個鏈的狀態,可用性和有效性做出加密經濟承諾,並返回到核心系統。

目前,我們預計將啟動 64 個分片,並且系統可用的總數據在 1 到 4 MB / s 的範圍內(是的,這是一個很大的數據量)。

階段 1.5

階段 1.5 是將以太坊目前主網作為一個分片(作為階段 1 創建的許多分片之一存在)集成到新的 eth2 共識機制中。它不是由工作量證明(PoW)挖礦算法構建的以太坊,而是由 eth2 驗證器構建的。對於現有的應用和用戶,共識機制的這種熱交換在很大程度上將是透明的。這些應用繼續發展,但是開發人員這時候將擁有一個功能更強大的系統(更好的安全性,適當的經濟最終性,更多的用於 rollups 的第 1 層數據和其他有趣的應用)。

階段 2

階段 2 將在更多分片上添加狀態和執行,而不僅僅是原始的以太坊分片。這可以採用多種形式。弄清楚哪種形式及其背後的細節,是當今研究和原型開發的熱點。我將在下面的部分中對此進行更多討論。

eth2 對社群的好處

我們已經大概介紹所有這些發展階段,而階段 0 實際上感覺就在我們眼前。但是該路線圖聽起來似乎還很長。在這些升級階段中,我實際上對 eth2 的期望是什麼?

好問題!總的來說,在每一步中,都會出現一波升級浪潮,越來越多地涉及以太坊網絡和社群。作為用戶,您可以儘早參與階段 0 的抵押(Staking),也可以等到以太坊在階段 1.5 完全遷移到 eth2 中(從 dapp 開發人員和用戶的角度來看,這種過渡應該是無縫的)。無論您選擇如何參與以及在哪個階段參與活動,都有重要的里程碑和好處值得關注,因為這一切都將開始出現。

首先,我知道你們中的很多人都是「頑固的」ETH 持有者,他們渴望參與到未來的 Staking。對於所有潛在的驗證者,尤其是愛好者,階段 0 就很適合您。階段 0 伴隨著自身的風險和時間跨度,因此對於某些參與者而言,它並不吸引人,因此我個人預計這個階段對於業餘愛好者和長期以太坊信徒來說都是福音。這是踏入 eth2 的一個獨特機會,有助於隨著時間的推移影響以太坊的願景,並作為早期採用者而獲得更高的 ETH 獎勵。

那階段 1 呢?在將現在的以太坊集成到 eth2 中之前,我們可以用所有這些數據做些有用的事情嗎?是的

即使沒有本地計算,1 層(Layer 1)數據也非常有用。實際上,過去 12 個月中最有前途的 2 層(Layer 2)擴展解決方案是這些所謂的「rollup」鏈(optimistic 和 ZK),它們隨著 Layer 1 數據的可用性而擴展。預計 eth2 數據層將為以太坊提供 1-4 MB / s 的數據可用性,這在與 rollup 技術結合使用時可轉化為巨大的可擴展性。但是由於以太坊最初的脫節性和一開始的新分片世界,因此很難明確 eth2 分片的數據。這就是 EIP 2537 對以太坊主網如此重要的原因之一。借助一種本機 BLS(新的 eth2 簽名算法)預編譯,我們可以編寫高效的 eth2 輕客戶端作為一種 solidity 合約,從而使以太坊應用能夠在階段 1.5 集成之前對 eth2 中的數據進行聲明所有權。

如上所述,階段 1.5 非常龐大。Eth2 是為以太坊構建的,在這一點上,eth2 最終將成為以太坊。我們知道和喜愛的所有應用都將集成在升級的 eth2 共識機制中,並保留了我們慣用的功能集,同時打開了安全的權益證明共識的廣闊新局面,並可以通過本地訪問高度可擴展數據層。我認為這是過程的重點。這是我們取得巨大成功的時刻,我們將以太坊完全融入了其新現實。

除此之外,通過在其他分片鏈上啟用狀態/執行,隨著時間的推移,可能還會獲得更多的可擴展性。這可能以 EVM 或稱為 eWASM 的新虛擬機(VM)形式出現。無論選擇哪種 VM,現有的以太坊 EVM 分片和新分片鏈都將能夠通過信標鏈進行本地交互和通信,從而完成多執行分片的願景。

看到了嗎?這是一場旅行,但是在此過程中會有很多收穫。

這種方法的困難,以及為什麼值得

這麼多驗證器

分片的關鍵部分取決於共識參與者(驗證者)進入委員會的隨機抽樣,以驗證協議的一部分(例如,分片)。假如協議中足夠的驗證者,並且假定攻擊者的大小達到最大(例如控制驗證者的 1/3),從數學上講,這是不可能的(概率為 1/2 ^ 40 左右)接管任何一個委員會並破壞系統。這使我們可以對系統進行設計,以使擁有消費類計算機的任何人(例如筆記本電腦甚至舊手機)都可以成為驗證器(因為驗證器被分配給系統的各個子部分,並且一台機器的計算資源就可以驗證任何子部分)。

這就是使分片變得不可思議且同時又困難的原因。首先,我們必須有足夠的驗證器以確保此隨機抽樣的安全:這意味著 eth2 預計比大多數(我認為是)其他權益證明協議具有更多的驗證器。這在流程的每個階段都帶來了挑戰——從研究到共識機制規範,網絡,資源消耗和客戶端的優化。每個附加的驗證器都會在系統的每個步驟中引起系統負載,必須對此加以考慮。Eth2 客戶端團隊已經完成了艱鉅的任務,即管理成千上萬驗證者的共識,以便我們可以安全地集成階段 1 中的許多分片。

這麼多分片

使我們難以構建的另一個基本設計決策是,在以太坊中,我們選擇獲得可擴展性的同時又不影響去中心化。

如果我們不在乎用戶實際上是否能夠自行驗證鏈,也不保證網絡實際上可用的數據多少,那麼將區塊鏈擴展到每秒處理成千上萬的交易並不難。分片共識機制的複雜性是必須的,以便可以將系統分解為字節大小的可驗證塊。制定和實施這樣的共識機制非常困難。

這麼多客戶端

以太坊的核心宗旨是以太坊是協議優先。以太坊是組成協議的抽象規則集,而不是這些規則集的任何特定實現。為此,以太坊社群從第 0 天開始就鼓勵開發許多客戶端實施。今天在以太坊主網上,已經有了 besu,ethereumJS,geth,nethermind,nimbus,open-ethereum,trinity 和 turbo-geth 等很多客戶端實施。在 eth2 中,客戶端有 cortex, lighthouse, lodestar, nimbus, prysm, teku, 和 trinity。

多客戶端範例具有許多重要的優點:

  • 允許存在許多客戶端,這可以對想法,算法和體系結構進行更廣泛的探索(每個客戶端都有自己的方法和觀點)。由於我們都構建了更強大的系統,因此在此過程中存在良好的相互借鑒。
  • 各個客戶端通常有不同的設計目標。隨著時間的推移,這將促使用戶和應用更加多樣化。客戶端可能或多或少地專注於以下任何方面:性能,安全性,水平擴展,UI / UX,輕客戶端,瀏覽器,資源受限的設備等。
  • 在主網上有許多產品級客戶端時,對於一種可以擊倒任何一個客戶端的重大攻擊(例如 DoS 攻擊)將具有一定的彈性,因為由於其餘客戶端仍然強大。這是在以太坊早期歷史中出現的「上海 DoS 攻擊」中看到的,當時很多 DoS 攻擊癱瘓 Geth 和 Parity 客戶端,但並未出現過同時攻破兩個客戶端的情況。
  • 每個客戶端都充當通往編程語言社群的門戶。一種特定語言的客戶端的基礎開放和邀請使用這種語言的實驗和創新。圍繞客戶端的基礎工具通常會不斷壯大該語言的強大工具和貢獻者生態系統。多客戶端範例增強了以太坊的引力。

這些明顯的優勢帶來了一些困難:

  • 這些規範和測試必須是隔離進行的,以避免在主網上發生意外分叉。如果該協議只有一種實現,則該實現將成為該協議。在單客戶端的情況下,如果在主網上碰到任何形式的共識「錯誤」,那麼它將變成協議的現實。從純度的角度來看,這不是很好,但是它消除了意外叉的風險。為了解決這一難題,如果我們在主網上合理分配客戶端(例如,沒有一個客戶端的節點/驗證器總數超過 1/3),即使單個客戶端出現共識問題,網絡也可以保持正常運行。
  • N 個客戶端的協調充其量僅會導致單個客戶端發生線性開銷(overhead),但在某些情況下可能會導致一種二次開銷(N ^ 2)。我們採用了一些技術來減少這種開銷——例如共識(和快速網絡)測試套件——但它總是會以某種形式存在。

eth2 客戶端和測試網的目前情況

客戶端

在過去的兩年中,階段 0 eth2 客戶端已經成為非常複雜的軟件,它能夠處理數千個節點中成千上萬個驗證器的分佈式共識。我們目前正處於測試網階段,並且每天都會逐漸接近啟動。我預計最後的一英里會很長。事實證明是這樣。

我請求您在發布之前的這段時間內,去嘗試多客戶端。這些客戶端之間存在著很多權衡取捨,因此您必須動手以找出最適合您的客戶端。如上所述,以太坊以多客戶端範式運行。為了獲得這種範式的好處,我們需要用戶運行各種各樣的客戶端(以在所有類型的客戶端上創建合理的分配)。

除此之外,該協議還內置了反相關激勵措施。在極端情況下,如果一種主要的客戶端無意中導致驗證器掉線或驗證器犯下嚴重罪行,如果您的驗證器的行為與該客戶端有關,那麼與您做錯了事卻與他人無關的情況相比,您將受到更多的懲罰。換句話說,在這種情況下,運行一種少數客戶端而不是擁有大量網絡份額的客戶端會更好。

絕對要明確——如果存在不止一個可行且安全的客戶端,那麼你有責任運行少數客戶端軟件以促進客戶端軟件在網絡上的健康分佈。

另外,不要害羞。如果您在文檔方面遇到問題,請告知他人。如果看到錯字,請提交 PR。如果崩潰或彈出錯誤,請在 github 或客戶端 discord 中報告。您是 Beta 版用戶,在您的幫助下,我們可以為所有人提供更好的體驗。

測試網

我們目前正在運行小型公共開發網絡(devnet),大約每隔一到兩週就會重新啟動一次。我之所以說「devnet」,是因為它們首先是客戶端團隊開發人員研究錯誤,優化等工作的方式。它們是公開的,歡迎您加入,但是要注意,它們還沒有像 Goerli 或 Rinkeby 存在很長時間。由 Afri Schoedon 領導的最新發布版本是運行 v0.11 規範的 Witti 測試網(如果要運行某些節點,請在此處查看README)。

客戶端團隊正在積極升級到 v0.12 規範,該規範集成了最新版本的 IETF BLS 標準。從那裡開始,隨著我們繼續擴大網絡規模,在客戶端上增加越來越多的負載,我們將把 devnet 過渡到 v0.12。在有 2-3 個客戶端可靠地啟動成功的 v0.12 網絡並在高負載下運行之後,我們將進行更公開的測試網,在其中您將運行大多數節點和驗證程序。這裡的目的是創建一個長期存在的多客戶端測試網,它盡可能地模仿主網(用戶可以在其中可靠地練習運行節點並測試他們想要的其他任何東西)。理想的做法是將啟動運轉起來,並在維護網絡的同時對所有故障進行分類。但是,根據故障的存在和嚴重程度,我們可能需要運行幾次才能到達我們想要的地方。

除了普通的測試網之外,我們還將提供激勵性的「攻擊網」,客戶端團隊可以在其中運行穩定的測試網,並邀請您嘗試以多種不同方式對其進行破壞。對於成功的攻擊,以太坊基金會將提供 ETH 獎勵。很快會發布更多資訊——請繼續關注!

eth2 工具的當前情況

雖然 eth2 工具(tooling)尚處於起步階段,但這是一項令人興奮且不斷發展的努力。如上所述,工具(tooling)通常來自客戶端代碼庫和客戶端團隊的努力,但是每天都有越來越多的人參與其中。為了更好地與 eth2 進行交互,理解,保護和增強 eth2,我們作為一個社群需要擴展並建立在基本 eth2 工具上。我想對已經為其 eth2 工具提供了巨大價值的團隊和個人大聲疾呼,並希望歡迎其他所有人開發新工具並擴展和增強現有工具。

Eth2 工具是一個全新的機會。這是一個難以置信的機會,可以挖掘,提供真正的價值並取得成功。

以下是進行中的工作的示例,但還有很多工作要做!

  • 資源管理器:Beaconcha.in,Etherscan,Eth2stats
  • 網絡工具:Prrkl,Rumor,Pyrum,Stethoscope
  • 密鑰庫和錢包:ethdo,deposit cli,EIP 2335 和其他新標準
  • API 設計和原型綁定
  • Slashing 檢測:Prysm「哈希 slinging slasher」

以下是一些開放式工具創意的示例:

  • Eth2 驗證程序警報:提供一項服務,可在節點驗證程序未達到最佳性能時向節點運營者報警
  • 驗證器存款跟踪:通過跟踪驗證器存款過程,幫助在當前的以太坊和 eth2 瀏覽器之間架起橋樑
  • 通過代理保護驗證者:使用代理跟踪驗證器消息,以確保您的客戶端不會發送不安全的消息

不僅如此,這是一種類型的貢獻,不僅僅局限於規範。創造力很重要。如果您想做出貢獻,請與 eth2 客戶端團隊聯繫以開始使用。

eth1 + eth2 集成的當前情況

在當前的以太坊客戶端(例如 geth 等)中,幾乎所有復雜性都在於處理用戶級別的活動——事務池,區塊創建,虛擬機計算以及狀態存儲/檢索。實際的核心共識(工作量證明 PoW)在協議中相當簡單。大多數複雜性由核心協議之外的複雜硬件處理。

另一方面,eth2 客戶端完全就是共識。在權益證明(PoS)和分片中,許多複雜性被引入協議中,以實現可擴展共識的目標。

這些問題的分離使 eth1 和 eth2 客戶可以完美地配對。

目前,geth(以太坊基金會)和 TXRX(ConsenSys)團隊的成員正在將兩者合併。這項工作包括(1)定義 eth1 和 eth2 客戶端之間的通信協議,(2)向 eth1 客戶端添加可以通過通信協議控制的共識引擎,以及(3)原型化和模擬 eth2 階段 1 的行為以測試耦合。我們希望今年夏天在這些方面能看到一些具體結果。

您可以在此處閱讀更多關於高級 eth1 + eth2 客戶端關係以及合併技術範圍的資訊。

分片之間的執行和通信情況

如前所述,實現跨多個分片執行的確切路徑是一個受到廣泛研究和爭論的領域。有很多問題要回答。例如:

  • 執行應啟用多少個分片?
  • 對於其他分片,我們是否將 EVM 或 eWASM 用作虛擬機?
  • 我們如何有效地組織和處理跨分片交易?
  • 我們需要對現有 EVM 進行哪些更改以支持跨分片交易?
  • 一般而言,執行和帳戶結構是否可以擴展?

在過去的 12 個月中,eWASM(EF)和 Quilt(ConsenSys)團隊在這些領域進行了大量研究。事實證明,解決方案領域非常龐大,儘管我們現在可以很好地處理該領域的廣度,但最近的重點是挖掘簡單,切實的解決方案,以便能夠測試,建立原型並真正建立對話。由此產生了 eWASM 的 Eth1x64 計劃(了解該項目的高級視圖,並查看正在討論的一些最新規範)。

在將抽象的交叉分片思想引入具體規範以進行討論並最終成為原型方面,已經取得了迅速的進步。密切注意這方面的進展,特別是如果您是 dapp 開發人員。在接下來的幾個月中,我們打算提供一些您可以理解,使用並提供反饋的資訊。

無狀態以太坊與 eth2 的關係

與 eth2 並行進行的另一項重大研發工作是「無狀態以太坊」。無狀態以太坊致力於解決狀態規模增長問題。它允許參與者驗證區塊,而不必在本地存儲整個狀態。現在,以太坊狀態轉換函數中有一個隱式輸入:整個狀態。使用無狀態以太坊,將在區塊內部提供有關必要狀態的證明(見證,witnesses)。這允許將區塊作為僅該區塊的純函數進行轉換/驗證。

對於用戶而言,這意味著一個世界,您可以跟著區塊鏈,甚至可以關注自己關心的狀態部分,而無需存儲所有狀態。一些網絡參與者可能會存儲所有狀態(區塊生產者,區塊瀏覽器,按需收費的狀態提供者),但是絕大多數參與者將只需要一部分狀態。

對於 eth2,這是一種重要的技術機制,可確保節點和驗證器可以驗證並保護協議,而無需負擔存儲每個分片的完整用戶狀態的負擔。取而代之的是,驗證器可能選擇加入某些分片的區塊生產者,而基線驗證器可能僅驗證無狀態塊。無狀態的以太坊是 eth2 願景的一個非常寶貴的補充,使分片協議的基礎層非常薄。儘管我們計劃在 eth2 上實現無狀態運行,但如果無狀態路徑最終無法證明是可行的,我們確實有一些其他選擇(儘管我本人對無狀態很有信心)。

對於這篇文章,我將不做任何深入的研究。只知道這是確保以太坊長期可持續發展的令人興奮的並行研發路徑。如果您想了解更多資訊,請查看 Griffin 的 1.x 部落格系列。

結語

Eth2 是一項艱鉅的任務,旨在為以太坊提供升級的,下一代的,高度可擴展的和安全的,去中心化的共識。每天都有數十個團隊和數百名個人在工作,以實現這一目標。我們選擇的道路是艱難的,但是已經取得併繼續取得巨大進步。

這種新機制的核心部分指日可待。

如果您是一個有抱負的驗證器(Validator),那麼現在就該進行探究了。通過嘗試多個客戶端來支持多客戶端範式,並從 eth2 的起源中幫助澆灌一個強大的豐富客戶端多樣性基礎。

如果您是用戶或 dapp 開發人員,請立即繼續使用以太坊,同時我們將繼續為您準備這種更安全和可擴展的環境。當那一時刻到來時,向 eth2 的轉換將盡可能地無縫實施。

(以上內容獲合作夥伴 火星財經 授權節錄及轉載,原文鏈接 

聲明:文章僅代表作者個人觀點意見,不代表區塊客觀點和立場,所有內容及觀點僅供參考,不構成投資建議。投資者應自行決策與交易,對投資者交易形成的直接間接損失作者及區塊客將不承擔任何責任。

 


出處:https://blockcast.it/2020/06/05/the-state-of-eth2-june-update/

關注我們

NOTICE US