譯者前言:關於以太坊的升級路線,密碼貨幣社區的很多參與者所掌握的信息可能已經是過時了,例如以太坊的 Casper 協議將不會替代現有以太坊 PoW 機制,而是被轉移到了以太坊 2.0 系統的 Beacon 鏈當中,而現有的以太坊 PoW 鏈,將繼續按原來的規則運行,在這篇文章中,來自以太坊開發公司 ConsenSys 的區塊鏈協議工程師 Ben Edgington 將爲我們介紹關於以太坊 2.0 以及 Beacon 鏈的信息。

以太坊 2.0 協議核心:Beacon 鏈詳解

以太坊 2.0 並不是一個新主意,早在 2014 年,Vitalik 就提到了以太坊 2.0 的概念,他說:“我們要麼解決可擴展性和共識問題,要麼就死於嘗試,” 好吧,我們還活得不錯,而他幾周前發佈的最新觀點是:

“對於以太坊 2.0 來說,理論上已沒有明顯未解決的問題。”

現在正是實現這些理論的時候了,而 Beacon 鏈正是以太坊 2.0 交付計劃的第一個組成部分。在這篇文章當中,我們將討論它的作用、它爲什麼是這樣做的,以及開發者們是如何開發它的。

關於 Beacon 鏈的介紹

在之前的一篇文章當中,作者介紹了以太坊 2.0 的概念,在這裏我們通過 Hsiao-Wei Wang 提供的以太坊 2.0 系統 架構圖進行展示:

以太坊 2.0 協議核心:Beacon 鏈詳解

(以太坊 2.0 整體架構)

此圖還可作爲開發和交付以太坊 2.0 的分步路線圖,順序爲從上到下:

  1. PoW 主鏈是今天以太坊存在的部分:即當前的以太坊主網。在以太坊 2.0 系統當中,它會繼續像今天那樣運行。而下面的所有東西都是新的。

  2. Beacon 鏈目前正在開發當中,它也將成爲第一個被交付的組件;

  3. 分片鏈會是下一個交付組件,它也是可擴展性的來源。最初,分片鏈將簡單地聚合交易,並就其排序達成共識,而不會執行它們。這將是對系統基礎設施以及安全性的一個良好測試;

  4. VM 層是以太坊 2.0 系統的最後一個重要組成部分,它將提供合約以及交易的執行;

爲什麼我們需要一個“Beacon”鏈?

Beacon 鏈是一個全新的 PoS 區塊鏈。它是支撐整個新以太坊 2.0 系統的脊柱。它的存在,使得整個系統能夠保持活力,其負責指揮以太坊 2.0 系統所有的組成部分。

以太坊 2.0 協議核心:Beacon 鏈詳解

(Beacon 鏈指揮整個以太坊 2.0 系統)

Beacon 鏈的關鍵功能是管理 PoS 協議(Casper)以及所有的分片鏈。它有很多方面的工作要做:管理驗證者以及他們的權益(stakes);在每一步爲每個分片指定所選的區塊提議者;組織驗證者進入委員會,對擬議的區塊進行投票;應用共識規則;對驗證者實施獎勵和處罰;並且,作爲一個錨點,其中分片會註冊它們的狀態,以促進跨分片交易;

在我們更深入地研究這些功能之前,請先了解一下術語。Beacon 鏈的名字起源於“隨機 beacon”的概念,它爲系統的其他部分提供隨機性來源,而 Dfinity 項目在其區塊鏈環境中也採用了隨機 beacon 的概念。每個參與節點都會維護自己的本地 Beacon 鏈,努力與其它節點保持同步。也許上面帶有指揮的圖像是有誤導性的,雖然 Beacon 鏈確實指揮了系統的其餘部分,但其指揮者是去中心化的,這就像每個音樂家都有自己的節奏感一樣。

關於 Beacon 鏈的一些功能

讓我們來看看 Beacon 鏈的一些功能:

管理驗證者

Beacon 鏈的主要工作之一就是維護驗證者集合,這些驗證者節點需通過抵押以太幣申請加入,他們會負責運行以太坊 2.0 系統。驗證者可以具有多種狀態,但只有那些被標記爲“active”的節點纔可以參與運行以太坊 2.0 協議。

而想要加入驗證者集的參與者,可通過當前的以太坊 PoW 主鏈,向一個 Beacon 鏈合約發送 32 以太幣,在經歷一些有效性檢查之後,這些幣會被鎖定,而合約則會發出日誌條目(Solidity 中的“事件”),它們可被 Beacon 鏈客戶端所接收。然後被選中的節點就可以導入到 Beacon 鏈的驗證者集當中。

一旦激活之後,驗證者就可以提出區塊並參與以太坊 2.0 協議,當這些區塊被選中之後,它們就會同時出現在 Beacon 鏈以及分片鏈上(一旦它們被實現的情況下)。如下所述,這些驗證者還會加入對區塊進行投票的委員會。

驗證者也可以發出信號,表明他們希望退出系統,並停止參與協議的運行。經過一段時間(目前爲 97 天 ,但可能會更靈活),他們的押金(32 以太幣)加上獎勵再減去罰款,將被退回到一個分片鏈當中。解鎖 PoW 主網上的初始權益,是不太可能的,除非整個系統失敗,並且社區同意給退出者退款。

以上的所有工作,都是由 Beacon 鏈在負責管理的。

提供隨機性

在區塊鏈系統中很難產生良好的隨機性,而一個權益證明( proof-of-stake)協議的關鍵要求,就是隨機性的來源,它必須是分佈式的、可驗證的、不可預測的,並且是不可剝奪的。而 Beacon 鏈就是負責向系統的其餘部分提供這種隨機性:下面所描述的幾個協議功能就取決於這種隨機性。

以太坊 2.0 協議核心:Beacon 鏈詳解

區塊鏈上的隨機性是一個很棘手的問題

當前的隨機數生成是通過 RANDAO 結構完成的,驗證者會提供一個“哈希洋蔥”。 而 RANDAO 結構只是將很多參與者提供的貢獻(單個隨機數)組合成單個輸出數字的一種方式。爲了防止任何一個參與者顯着地操縱隨機性,開發者使用了一種提交泄露(commit–reveal)方案。當驗證者註冊時,它會提供一個承諾值,該值是其選擇的原始數字經多次哈希後產生的。每次選擇驗證者作爲提議者時,它通過提供最後一個揭示數字的原像來剝離“洋蔥”的一層或多層。其它人都可以檢查這是否是正確完成的,因此提出者不能通過改變其貢獻來欺騙系統。

雖然這種方案並不是不可替代的,如果提出者不喜歡這個隨機數,他可以選擇跳過它,但對於當前的協議設計來說,這已經是足夠健壯的。

區塊提出者

Beacon 鏈會管理它的 PoS 協議,以及每個分片鏈。在工作量證明系統當中,礦工節點會負責選出下一個區塊。而在 PoS 系統當中,是不存在挖礦這個過程的,因此區塊生產者是基於上述協議內的隨機性,隨機地選擇區塊提出者。

PoW 系統的另一個特性是,區塊時間是不規則的,儘管以太坊的區塊生成時間平均約爲 15 秒。相比之下,我們將 Beacon 鏈的區塊生成描述爲心跳(heartbeat)。以太坊 2.0 的區塊是每 16 秒定期生成一次的(如果測試可行,也可能減少到 8 秒)。這個 16 秒的週期被稱爲 “slot”(時隙); 在每個時隙(slot),Beacon 鏈所選擇的提出者,會收集來自先前區塊的 Beacon 鏈驗證者集的所有協議投票(證明),並將它們納入其發佈的區塊。

一旦分片鏈準備就緒,每個分片在每個時隙(slot)中都會有自己選擇的提出者,它們將收集該分片的交易,並將它們納入一個由分片委員會投票得出的區塊當中。

委員會

以太坊 2.0 協議核心:Beacon 鏈詳解

驗證者委員會的投票活動,在確保以太坊 2.0 系統安全性方面起到了關鍵作用

權益證明(proof-of-stake)區塊鏈的一個重要安全來源是委員會,它們負責對構成區塊鏈真實歷史的區塊進行投票。而 Beacon 鏈就依賴於計算來自其委員會的投票,我們將其稱爲“證明”,以便同意並最終確定其歷史。在理想的情況下,如果能夠快速收集證明,則該委員會的成員,都可以成爲系統中的有效驗證者。

此外,Beacon 鏈將隨機爲每個分片指定較小的子委員會,這將在適當的時候負責確認分片的提出者行爲是正確的。

獎勵和懲罰

Beacon 鏈的另一個管理角色,是跟蹤和更新驗證者的存款。

如果驗證者表現良好,併發揮出了自己的作用,則他們會獲得獎勵:這是驗證者參與以太坊 2.0 系統的動力。但是,如果驗證者違反了規則。那麼他們的 32 個以太幣存款會減少(被削減),到達一定程度的情況下,這些驗證者會被系統剔除。如果驗證者出現缺席的狀況(不對區塊進行投票),系統也會有小小的懲罰,我們將其稱爲“二次泄漏”(quadratic leak)。其原因很微妙,即使在大量驗證器脫機時(例如在發生災難時),系統也能夠繼續處理區塊。

如果驗證者的存款低於 16 以太幣 ,則 Beacon 鏈會把驗證者從驗證者集當中剔除出去;

最後,Beacon 鏈會執行交聯的處理。交聯負責將整個分片系統連接在一起,其負責將每個分片錨定在 Beacon 鏈的脊柱當中。

週期性地,每個分片的當前狀態(“組合數據根”)會被記錄到 Beacon 鏈當中,並作爲交聯。當 Beacon 鏈區塊完成時,相應的分片區塊就被認爲是最終確定的,而其它分片則可確信它們可依賴它進行跨分片交易。

以太坊 2.0 協議核心:Beacon 鏈詳解

可視化的 Beacon 鏈(藍色部分),它有 8 個分片鏈(碧綠色部分)以及相關交聯(淺藍色線)。所有鏈上的完成區塊都是黃色的,時間從左到右增加。

構建 Beacon 鏈

很快,我們就要結束我們的 Beacon 鏈閃電之旅了!就其本身而言,Beacon 鏈可能看起來並不是特別有用。它無法處理任意交易:它沒有智能合約,它沒有 EVM 虛擬機。你沒法用它做任何事情。但是,它作爲以太坊 2.0 的第一個組成部分,它是整個系統的基礎。整個壯觀的以太坊 2.0 建築都將以此爲基礎。所以,它必須是堅實的。

如果你想深入瞭解細節,那麼目前有一份正在進行當中的 Beacon 鏈規範。這份規範的所有創建和維護過程都是公開進行的:歡迎有興趣的人加入。

以太坊 2.0 協議核心:Beacon 鏈詳解

(在開發 Beacon 鏈的團隊)

爲了運行 Beacon 鏈,你就需要用到一個 Beacon 鏈客戶端。而很多大家所熟知的以太坊客戶端(Geth,Parity,Pantheon 等)都在進行相關的開發。你可以在此處查看我所知道的列表,其中包含指向其 GitHub 代碼庫的鏈接。

Prysmatic 和 Lighthouse 正在定期更新它們的客戶端開發進度,也有一些團隊正在向貢獻者提供獎勵。

關於進度…… 在撰寫本文時,Beacon 鏈的技術規範完成度接近了 60%。儘管如此,開發者們預計會在今年年底前合理地完成這份規範,並且可能到 2019 年第一季度末運行多客戶端的 Beacon 鏈測試網絡。最近幾周,相關的開發非常迅速,關於以太坊 2.0 的真正討論正在拉開序幕!

原文:https://media.consensys.net/state-of-ethereum-protocol-2-the-beacon-chain-c6b6a9a69129
作者:Ben Edgington
翻譯:灑脫喜
稿源(譯):巴比特資訊(http://www.8btc.com/ethereum-beacon-chain)


FileCoin 指南

公衆號:ipfstech

微博:IPFS 挖礦指南_韓拾貳

讓部分人先讀懂 FileCoin 看到未來

以太坊 2.0 協議核心:Beacon 鏈詳解