一文說透以太坊 2.0 升級過程及參與方式。

撰文:李畫

對於以太坊,2019 年會是重要的一年,因爲按照計劃,以太坊 2.0 將要在今年起航,從 PoW 的舊大陸出發前往 PoS 的新大陸。

與此同時,以太坊 1.0 還會繼續存在並保持進化。以太坊 1.0 運行在原主鏈上,以太坊 2.0 運行在 Beacon 鏈上。

計劃中的航程估計要有兩年,直到 2021 年,在分片鏈能夠實現完整的功能後,1.0 纔會把以太坊的實際運行權交給 2.0,自己則會退出歷史的主舞臺,作爲 2.0 的一個分片或一個主存儲合約而存在。

以太坊 2.0 的 Beacon 鏈是如何運行的?ETH (Ether)持有人如何從 PoW 鏈「跨」到 Beacon 鏈?以及,跨還是不跨?我們將在本文試着去探討。

以太坊 2.0 將起航,你願意花 32 ETH 上船駛向 PoS 新大陸?

讀懂 Beacon 鏈

先做個簡單的科普:Beacon 鏈是一條全新的 PoS 區塊鏈,它是以太坊 2.0 的核心組件,卻不是以太坊 2.0 的全部。以下幾點可能是理解 Beacon 鏈的關鍵:

1、Beacon 鏈是一條 PoS 鏈,運行以太坊的 PoS 協議 Casper。
2、以太坊 1.0 就是指 PoW 的主鏈,但以太坊 2.0 包括 Beacon 鏈、分片鏈、虛擬機層三部分,其結構如下圖所示:

以太坊 2.0 將起航,你願意花 32 ETH 上船駛向 PoS 新大陸?

3、Beacon 鏈是以太坊 2.0 的中樞,也是 2.0 的第一個和最重要的一個組件。如下圖所示,所有分片都會連接它並與它通信,Beacon
鏈爲分片鏈提供安全性和最終確認性。

以太坊 2.0 將起航,你願意花 32 ETH 上船駛向 PoS 新大陸?

Beacon 鏈主要完成兩個功能:一是執行 PoS 共識,包括維護驗證者集合、選擇驗證者組成委員會、分配驗證者對分片塊進行提議或證明、對驗證者實施獎勵和處罰等等。它是驗證者參與質押系統並根據所押權益獲得收益的渠道,也是整個系統安全性的保障。

第二個功能是實現分片的通信。各分片都會將自己最新狀態的哈希存到 Beacon 鏈的區塊上,當 Beacon 鏈區塊完成時,相應的分片區塊就被認爲是最終確定的,其它分片就可確信它們並與之跨分片交易。分片鏈與 Beacon 鏈通過「交聯」實現跨分片通信,從而將整個系統連接在一起。

4、Beacon 鏈上沒有虛擬機,沒有智能合約,也無法處理交易;Beacon 鏈不存儲現行以太坊區塊鏈上存儲的信息,它只存儲驗證者列表和 Attestation。所謂的「Attestation」,是指經過確認並由驗證者簽名的哈希值,它們實時記錄着一個特定分片的狀態。

5、Beacon 鏈與以太坊 1.0 的 PoW 鏈會彼此獨立地運行大約兩年。在以太坊 2.0 能夠實現完整的功能前(目前預計在 2021 年),以太坊都運行在 1.0 上,Beacon 鏈上的區塊沒有什麼實際意義。

以上即是 Beacon 鏈的基本情況。爲什麼說 Beacon 鏈要到 2021 年才能正式運行以太坊?因爲從以太坊的發展路線圖可知,到這一年以太坊 2.0 才能支持智能合約和資產轉移,實現可用性。

2021 年前的以太坊 2.0 長什麼樣?

在瞭解了 Beacon 鏈之後,讓我們簡要介紹一下從現在到 2021 年的以太坊 2.0,會經歷的三個階段:階段 0、階段、階段 2。

以太坊 2.0 將起航,你願意花 32 ETH 上船駛向 PoS 新大陸?

階段 0 (2019 年):啓動 Beacon 鏈

階段 0 專注於讓 Beacon 鏈上的驗證者運行起來。用戶可以在鏈上存入 32 個 BETH (Beacon ETH)成爲驗證者,不過在該階段驗證者只管理 Beacon 鏈,此時沒有分片鏈。

Beacon 鏈在早期會盡可能保持簡單的迭代設計,該階段不支持賬戶、資產轉移和智能合約。BETH 僅能被驗證者使用,不能在鏈上轉移,也無法轉入交易所交易。

階段 1 (2020 年):啓動分片鏈

階段 1 將加入分片鏈組件,實現 Beacon 鏈+分片鏈。但該階段只是試運行分片結構,並不是真正的用分片實現擴展,Beacon 鏈將分片鏈區塊視爲沒有結構或含義的簡單比特集合。分片鏈此時依然沒有賬戶、資產和智能合約。

Beacon 鏈將支持 1024 條分片鏈,每條鏈都有一組 128 個驗證者組成委員會來驗證。Beacon 鏈爲每個分片在每個週期隨機選擇分片驗證者,分片驗證者通過「交聯」證明分片的內容和狀態。

需要指出,在階段 0 和階段 1,以太坊 1.0 和以太坊 2.0 之間沒有數據流通,以太坊依然運行在 PoW 鏈。

階段 2 (2021 年):啓動虛擬機層

階段 2 將加入虛擬機層,它是以太坊 2.0 的最後一個重要組件。實現 Beacon 鏈+分片鏈+虛擬機層的以太坊纔是一個我們熟悉的完整的公鏈系統,以太坊 2.0 的可用性將在這個階段正式實現。

此時,智能合約被引入系統,資產也能夠在鏈上自由轉移;分片鏈從單純的數據標記器變成功能完整的區塊鏈,交聯操作支持跨分片的通信;一些最常用的開發工具也可能被移植到以太坊 2.0,以支持 EVM2。EVM2 是以太坊新的虛擬機 eWASM,基於 Web Assembly,支持多種編程語言實現智能合約。

雖然以太坊的分片技術路線圖總共包括七個階段,但在進入到階段 2 後,以太坊就將從 PoW 鏈遷移到 PoS 鏈,從 1.0 時代真正進入到 2.0 時代。

32 ETH 的船票貴不貴

以太坊 2.0 中的新資產叫 BETH,它有兩種生成途徑,一是由以太坊 1.0 中的 ETH 轉化而成,1ETH 生成 1 BETH;二是在以太坊 2.0
中質押 BETH 參與 Staking,作爲驗證獎勵生成。

由於在階段 0,用戶可以在 Beacon 鏈存入 32 個 BETH 成爲驗證者,姑且可以理解爲花 32ETH 買張船票,跟隨以太坊前往以太坊 2.0
新大陸。問題是,你願意上船嗎?

鑑於在階段 2 之前 BETH 是不能在賬戶間轉移和交易的,以太坊及其各種應用也依然運行在 PoW 鏈上,所以當 Beacon 鏈上線後,用戶會把 ETH 轉化爲 BETH 的唯一原因是用 BETH 參與 Staking,以獲得更多的 BETH。

根據之前的資料,ETH 與 BETH 之間的轉換是單向的,即只能通過合約用 ETH 生成 BETH,而不能把 BETH 重新換爲 ETH。

這帶來的一個問題就是 1 枚 BETH 的價格上限爲 1 ETH,BETH 永遠不會比 ETH 更值錢,因爲 1ETH 還包含了一個從 ETH 轉爲
BETH 的權利;同時,轉爲 BETH 還意味着爲期兩年的鎖倉期。

不過以太坊創始人 Vitalik Buterin 最近在一次討論中提到了 ETH 與 BETH 雙向兌換的可能性,以太坊聯合創始人 Joe Lubin 近日在接受採訪時也表示可能存在雙向機制。但雙向機制可能帶來一個新的問題:BETH 通過 Staking 增發,但 ETH 不能參與這種增發,雙向兌換對以太坊 1.0 鏈上的資產是不利的。

以上兩種不同的方案會影響用戶把資產從 ETH 轉爲 BETH 的動力,進而可能影響以太坊從 1.0 過渡到 2.0 的平穩性。用戶是否願意把資產轉移到 Beacon 鏈這個問題會在階段 2 到來後變得嚴峻,以太坊採用的解決方案也許會在這兩年內根據情況不斷地調整和變化。

既然轉換方案未定,我們不妨先看看用戶遷移資產的另一種決定性的動力:抵押 BETH 參與 Staking 的收益。

至少在目前階段,用戶並不能通過加入權益池以任意數量的 BETH 參與進以太坊 2.0 的 Staking,用戶只有在 Beacon 鏈上質押 32 BETH (2^5)纔可以獲得驗證者資格:用戶在當前的以太坊 PoW 主鏈上發送 32ETH 至一個註冊合約,合約會生成一個「驗證者委員會成員名片」,讓用戶成爲以太坊 2.0 的驗證者。

BETH 的質押回報率如下表所示,這是 Vitalik Buterin 今年 4 月發佈在 Github 上的一份提案,並且已經被添加到以太坊 2.0
的規範中:

以太坊 2.0 將起航,你願意花 32 ETH 上船駛向 PoS 新大陸?

如果總共質押了 100 萬個 BETH (2^20),系統每年最多可增發約 18 萬個 BETH,質押最大年回報率爲 18.1%;如果質押 1000 萬個 BETH,每年最多可增發約 57 萬個 BETH,最大年回報率爲 5.72%;質押上限爲 1.34 億個 BETH (2^27),此時每年最多可增發約 209 萬個 BETH,通脹率維持在 2% 以下,回報率爲 1.56%。

以太坊基金會研究員 Justin Drake 認爲 3000 萬個 BETH (2^25)的質押是最有利於系統健康的,此時通脹率維持在 1%,回報率爲
3.3%,假設每個分片每年平均消耗 1000 BETH 的 Gas,通脹率將降至 0.5%,質押者的回報率將達到約 5%(鏈聞注:Drake
預估的是以太坊正式運行在 2.0 上時的最優質押率)。

這裏有兩個指標可以用來做比較:一是如今以太坊上通過金融產品存入以太的回報率,二是 Tezos 與 Cosmos 等 Staking 項目的回報率。

驗證者需要投入的另一個成本是運營成本,但它似乎在可接受的範圍內。

Ethhub 創始人 Eric Conner 在深挖以太坊 2.0 相關規範並同相關研究人員對話後,對驗證者年度運營成本的估計是:每個 Beacon
節點需要 120 美元,每增加一個驗證器,即每多質押 32 BETH 時需增加 60 美元。

所以,從回報率的角度來看,用戶在階段 2 之前把 ETH 轉爲 BETH 的動力可能主要取決於三個因素:參與 Staking 的 BETH 數量、ETH 與 BETH 之間的轉換方式、32ETH 的門檻。(鏈聞注:本文未涉及幣價波動這一影響因素)

不過無論 32ETH 的「船票」貴不貴,有兩類用戶可能都會在第一時間參與進以太坊 2.0,他們爲以太坊 2.0 的運行提供支撐,即使 2.0 還沒有正式運行以太坊:

一類用戶是區塊鏈生態的參與者,尤其是以太坊生態的參與者,投入 32ETH 是有價值的;一類用戶是以太坊一直以來的支持者,他們手中 32ETH 的「成本價」可能並沒有那麼高,同時作爲在未來也會長期持幣的用戶,用 BETH 參與 Staking 可以讓他們獲得更多的 BETH。

如何保證 PoS 鏈的安全性?

Beacon 鏈是 PoS 共識,如果用戶缺乏動力把 ETH 轉爲 BETH 參與 Staking,會不會影響以太坊 2.0 的安全性?

實際上,以太坊 2.0 通過機制設計保證了自身較高的安全門檻。

首先是懲罰機制。如果驗證者有惡意行爲,比如同時給兩個區塊投票,其質押的代幣就會被罰沒。

如果以太坊 2.0 共識失敗,將意味着有 1/3 的活躍驗證者違反了消減條件,也就是說,一次成功的攻擊伴隨着的是質押代幣總量中的 1/3 被銷燬,這是攻擊者要付出的成本 —— 不同於 PoW,在 PoS 下「作案」是要把「作案工具」一併沒收的。

另一個,是 Beacon 鏈的「驗證者集-委員會-證明者」的區塊驗證方式:活躍的驗證者構成驗證者集,該集的一個隨機抽樣子集形成委員會,委員會中的證明者對區塊簽名驗證。

即使驗證者集中有超過 1/3 的驗證者是不誠實的,委員會被不誠實驗證者掌控(即不誠實驗證者超過 2/3)的概率也很低,並且隨着委員會驗證者數量的增加,委員會被掌控的概率迅速降低。

假設我們有 1000 位驗證者,其中 333 位是不誠實的,當一個委員會由 1 名成員組成時,該委員會被不誠實驗證者掌控的概率是 33.3 % ;當委員會由 13 名成員組成時,被掌控的概率則只有 10 %。

以太坊 2.0 在初始階段的委員會驗證者數量下限是 128 位,即使不誠實者控制了驗證者集中的 1/3,攻擊成功的概率也不到萬億分之一。

以太坊 2.0 將起航,你願意花 32 ETH 上船駛向 PoS 新大陸?

以太坊 2.0 如何實現隨機性?

在有效的機制設計下,影響以太坊 2.0 安全運行的最重要的一個因素就是隨機性,Beacon 鏈諸多協議的執行都是基於「隨機數」來完成的。因此,我們簡單介紹一下以太坊 2.0 中隨機性的來源。

以太坊 2.0 是通過 RANDAO + VDF (Verifiable Delay Function,可驗證延遲函數)來解決隨機性問題的。

RANDAO 是一種生成隨機數的方式,它會內建在 Beacon 鏈的邏輯中,參與者(此處就是驗證者)各自獨立提供一個隨機數,RANDAO 將這些隨機數相加得到一個新的數字,並把該數字作爲隨機數輸出。

但 RANDAO 有一個缺點:最後一個公開隨機數的人是可以預測 / 操縱隨機數結果的。因爲他知道前面全部的值,所以能夠通過自己出隨機數還是不出來影響最終的輸出。因此,我們需要在 RANDAO 之上加入 VDF。

VDF 簡化來講是指在輸入一個值後,需要運算很長的一段時間才能得出結果,但這個結果是可以輕易被驗證的。VDF 把 RANDAO
產生出來的隨機數作爲種子去生成新的隨機數,而系統使用的是 VDF 提供的新隨機數。

因爲 VDF 隨機數的計算時間足夠長(以太坊 2.0 中, VDF 爲 102 分鐘),最後一個公開隨機數的人是無法在自己提供隨機數的時間內計算出結果的,也就無法通過自己的行爲來影響最終的隨機數(以太坊 2.0 中,RANDAO 每 6.4 分鐘就完成一個隨機數的輸出,這個時間 / 過程也被稱爲一個 epoch)。

以太坊 2.0 將起航,你願意花 32 ETH 上船駛向 PoS 新大陸?

RANDAO 的週期是 6.4 分鐘,VDF 的週期是 102.4 分鐘,因此以太坊 2.0 中會有 16 個 VDF 同時運行,爲系統每隔 6.4 分鐘生成一個隨機數,Beacon 鏈將以此爲基礎完成自己的工作。

需要注意的是,區塊鏈上的隨機數問題是個難題,RANDAO + VDF 同樣也需要被進一步驗證。

做個勇敢的探索者

以太坊 2.0 客戶端 Nimbus 的測試網已經上線,它被稱作 testnet0,運行了一條能夠在節點間同步信息的 Beacon 鏈,並且節點可以分佈在遠程的設備上。

此版本設置了 400 個驗證者節點來維護網絡的運行,其中有 50 個驗證節點是留給「勇敢的探索者」的,任何人都可以加入。這裏我們提供一條小貼士:如果遇到問題,可以在 Status 的 #status-nimbus 頻道進行詢問。

使用 Go 開發的以太坊 2.0 客戶端 Prysm 以及使用 Rust 開發的 Lighthouse 都即將發佈測試網。如果一切順利,Beacon 鏈,即階段 0 的以太坊 2.0,會在今年年底上線,就如路線圖中規劃的一樣。

幾乎所有人都尊重和喜愛以太坊,但人們也會談到它的「歷史包袱」。如果說以太坊是一艘船,它似乎是一艘笨重的船,難以協調、行動遲緩。

但笨重的船也有它自己的優勢,它有更完備、更安全的基礎設施、它有更堅持、更徹底的分佈式路線,如果把目光放長遠,這種船或許纔是能承載更多生態、承擔更長旅程,最後到達未知大陸的船。

現在這艘船即將起航,海員招募就要開啓。你,要一起來嗎?

特別提示:

以太坊 2.0 具體執行方案可能隨時會有調整,本文僅做參考,請不斷關注最新消息。
以下英文文章大多來源於 Medium,其中譯本大多出自「以太坊愛好者」。

參考文章:
1.《以太坊 2.0:信標鏈》,Bruno Škvorc
2.《ETH2.0 工程指南》,James Prestwich
3.《以太坊 2.0 協議核心 Beacon 鏈詳解》,Ben Edgington
4.《V 神提出的以太坊 POS 質押提案,到底合不合理?》,秦曉峯
5.《如何理解以太坊 2.0 的經濟激勵?》,Eric Conner
6.《以太坊 2.0 的設計目標》,Ben Edgington
7.《以太坊 2.0:隨機性》,Bruno Skvorc