BTC
ETH
HTX
SOL
BNB
查看行情
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

以太坊Phase 2 進展(2019-12)

以太坊爱好者
特邀专栏作者
本文約8647字,閱讀全文需要約13分鐘
以太坊2.0 Phase 2 的工作在不斷推進。本文所講的是截至當前的最新進展。
AI總結
以太坊2.0 Phase 2 的工作在不斷推進。本文所講的是截至當前的最新進展。

編者按:本文來自以太坊愛好者(ID:ethfans)編者按:本文來自

以太坊愛好者(ID:ethfans)

以太坊愛好者(ID:ethfans)

編者按:本文來自

以太坊愛好者(ID:ethfans)

以太坊愛好者(ID:ethfans)

編者按:本文來自

以太坊愛好者(ID:ethfans)

,作者:Will Villanueva,翻譯& 校對: 阿劍& 曾汨,Odaily經授權轉載。

本文不同部分所講的內容往往指向不同領域,交集甚少,因此,就請挑自己喜歡的部分閱讀吧。在閱讀本文之前,我非常推薦大家通過下列材料先了解一下Phase2 以及執行環境提議(EE)的背景知識:

一級標題

通往Eth 2 Phase 2 以及Phase 2 測試網之路(這是Devcon 5 上的演講,還有演講所用的幻燈片)

一級標題

一級標題

一級標題

Scout

一級標題

二級標題

一級標題

二級標題

二級標題

我們已經在搭建執行環境的原型和早期實現上取得了重大進展。首先,我們需要驗證一種執行環境是否能在無狀態模式下運作。這種執行環境所要求的證明/見證的數據量會太大嗎?使用證據來執行狀態轉換的時間會太長嗎?為了回答這些問題,我們做了很多種執行環境、用它們來研究這些問題,不過,首先我們需要一個搭建原型的引擎:Scout。

二級標題

二級標題

Scout 是一款以太坊2.0 Phase 2 執行過程原型搭建引擎(由Alex Beregszaszi 原創開發),它開發了一個對Ewasm API 的封裝器,所以開發者可以用它搭建出執行環境的原型並開展基準測試( benchmarking)。而且它還有assembly script 和C++ 端口。

二級標題

Turbo Token

與Eth1 相關的諸EE

為了支持Eth1 能切換到Eth2 中,我們要把Eth1 的狀態轉換規則做成Eth2 中的一個執行環境。這一切換的主要挑戰在於,將Eth1 轉換成無狀態模型,然後將EVM 和交易/賬戶模式轉成一個執行環境。下面要談到的EE 都是Eth1 EE 的前身。最近有一個工作組成立,專門圍繞Eth1 EE 大力開發。他們匯總出了一份初始工作計劃,並且很友善地在eth research 論壇介紹自己。

無狀態默克爾帕特里夏樹(SMPT)token

主要資料:Github、Sina Mahmoodi 在Devcon 5 上的演講

無狀態token EE 的第一個原型旨在模仿Eth 1.0 的架構。它使用parity 的代碼庫來實現Eth1 狀態樹(Hexary Merkle-Patricia Trie)以及RLP 編碼規則。它也納入了一個基本的中繼者實現,讓中繼者為一組交易生成多種證明。

基準測試:70 筆交易以及5000 個賬戶/葉子節點

用時:5 秒

證據大小:235 kb

主要資料:Turboproof 概覽(編者註:中譯本見文末超鏈接)、Turboproof Rust Github、Turbo Token Github、Guillaume Ballet 的Devcon 5 演講、Sina Mahmoodi 的Devcon 5 演講

總結

用時:140 毫秒

總結

EVM 解釋器EE

C Merkle Token

二級標題

總結

我們需要在一個執行引擎中開發出一個(web assembly 可用的) EVM 解釋器,好支持Eth1 EE。 Hugo 做了一個原型,而且圍繞一個add and mul256 合約做了測試。未來還需要引入更多合約和基準測試來改進這個原型。

二級標題

總結

上述所有的實驗性工作都是為了做出Eth1 執行環境的一種實現。我們已經開始製作構造原型了,但還是有很多性能問題需要審議。如上文所述,近期有一個工作組開始一門心思開發Eth1 EE 並打造Eth1 無狀態模式。

ZK Rollup

二級標題

以Eth2 為中心的諸EE

Shard Ether (Sheth)

這一部分要向大家介紹那些不完全是為實現Eth1 -> Eth2 遷徙而開發的EE。 Eth2 要使用一種新的基於賬戶的執行環境,不同於Eth1 的賬戶和交易模型,因為Eth1 所用的交易、賬戶和累加器模型都不是最優的。此外,諸如optimistic rollups、ZK rollups 之類的模型也要研究。 Eth2 EE 的設計空間是完全開放的,而下列就是早期的想法和原型。

主要資料:Github、Devcon 5 Presentation

Paul Dworzanski 對無狀態Merkle token 的C 語言實現,他使用了二叉默克爾樹(而不是稀疏默克爾樹)。數據樹的驗證和更新都用到了最優內存分佈,而且安排了獨特的multiproof 格式。該模型的驗證、更新數據樹操作都是一次完成的(single pass)(因此避免了內存複製操作(memcopy and duplication)),而且很有可能可以用在Eth1 的十六叉數據樹上。但是,尚不清楚數據樹更新算法能不能用在Eth1 的數據樹上(因為基於Eth1 的模型一般都用到了多步操作(multiple passes))。

基準測試:證明中涉及到了222 個賬戶中的40 個

用時:20 毫秒(不包含簽名驗證)

證據大小:25 kb

當前,測試用到的這個實現已經是最高效率的了。基準測試中沒有包括驗籤的部分,但我們估計只需多花30 毫秒即可。而且還有很多進一步優化的方案,比如通過緩存哈希和證據來減低運算時間和大小。適應性哈希長度方案(哈希值的長度會隨著網絡的擴大而增加)也可以進一步降低證據的大小。最後,更好的哈希函數實現就能帶來更短的運算時間。

ZK rollups 是一種Layer-2 擴展方案,因為不會用到復雜的退出挑戰機制和鎖定機制,所以能夠避免現有的Layer-2 方案常見的用戶體驗問題。與這裡列出的其它token 轉移方案相比,ZK Rollup 大幅降級了對數據可用性(data availability)的要求。這裡列出的實現使用了web snark —— 一個用wasm 實現的生成器,可用於snark 驗證或其它配對函數。為了開發該EE,Jared 改編websnark、開發了一個驗證Groth16 證據的獨立wasm 庫。這個EE 還是個早期原型,還得繼續開發。

基準測試:50 個賬戶以及50 筆交易

一級標題

一級標題

二級標題

二級標題

二級標題

二級標題

二級標題

編譯器

二級標題

解釋器

二級標題

計算量度量

一級標題

在Lighthouse 客戶端或者Phase 2 模擬中的Phase 1 和2 原型

John Adler 針對這一主題寫了一份非常全面的概覽。他的文章也講述了Eth2 提案的有趣演化歷程。總結一下,Vitalik 最新的分片簡化提案消除了一開始我們在中繼者模型中遇到的許多問題。不過,關於狀態提供者如何向區塊生產者發送交易,以及區塊生產者如何將交易包合併到一個合適的multiproof 中,仍有不少問題懸而未決。其中一種建議是部署一個帶有證明合併腳本的新執行環境。

一級標題

跨分片交易

二級標題

  • 一級標題

  • 最終,中繼者或者狀態提供者將繼承web3.js 或者ethers.js 所連接的RPC 端點。為這些跨多個EE 的操作提出一系列標準是至關重要的。

  • 二級標題

  • 一級標題

二級標題

異步跨分片交易

簡單的異步調用(async await,callback,等等)

同步跨分片交易

鎖—— 讀/寫(Contract Yanking)

二級標題

如何在EE 或者在合約的底層中支持這些模式還需要進一步的研究。上文提到的模擬(以及下文提到的編排工具)應該能為我們對這些模型的實驗提供基礎,不過,我們真的要說,這是一個重要的研究領域,如果人們願意參與進來,我們會非常高興。像在此貼中描述的那樣,在更底層規定進程前和進程後的行為分別,可能會為在合約內暫停執行及後續繼續執行提供一個合理的框架。

二級標題

  • 一級標題

  • 之前,Vitalik 發表了一篇論述狀態方案的帖子。這些方案實質就是鏈上Layer-2 模式,而分片僅作為數據可用性層。這些模型(就是之前傳說的“延遲狀態執行” 模型、“懶惰執行” 模型或者“影子鏈”)其實都是現在所謂的optimistic rollups 的前身。將多分片用作一個optimistic rollup 方案的數據可用性層使同步跨分片交易成為可能。我們可能在不遠的將來根據這個概念開發出一款原型。

  • 二級標題

  • 一級標題

  • 另一種值得進一步研究的觀點是,Eth2 的主體應該要向狀態通道、optimistic rollups 以及zk rollups 傾斜(在這些方案都成熟之後)。在這種思路下,Eth2 本身就是一個數據可用性層,而跨分片調用只有在橋接這些方案或者在退出挑戰/錯誤性證明過程中才會用到。 Rollups 仍要在Eth1 或者Eth2 執行環境的邊界內定義好,不過,只有需要提交錯誤性證明的時候,才需要在鏈上執行計算。

一級標題

為推進我們的研究,我們提議了一套開發者需要用到的工具鏈。正如上文“Lighthouse 中的Phase 1 和Phase 2 原型” 章節中說的那樣,我們正在積極開發一套模擬來測試及運行跨分片的執行環境。不過,為使智能合約運行模式最優化,我們還得添加很多編排工具。這個帖子對這些工具做了更深入的說明。

  • Eth1 ->一級標題

  • Phase 1 & 2 模擬

  • 插入Phase 1 客戶端的運行時環境(runtime environment)

  • 一級標題

  • 可靠的muilti-proof 後端(讓客戶端可以生成、合併及管理multiproof)

  • 一級標題

Vitalik 對Phase2 的其他貢獻

Vitalik 最近還在其它帖子中討論了與Phase 2 相關的主題,但我在上文中沒有直接引用,特此指出:

形式化並提升Eth2 應對無效分片區塊確定性的方法

結論

在信標鏈上保存的合約

一級標題

ETH
歡迎加入Odaily官方社群