Eth2 信標鏈:你首先該知道的事(上)

科普 | Eth2 信標鏈:你首先該知道的事(上)


還記得自己第一次對區塊鏈世界發出 “原來如此” 感嘆時候的喜悅嗎?想不想對信標鏈(Beacon Chain)也有這麼透徹的理解?


科普 | Eth2 信標鏈:你首先該知道的事(上)


還記得自己第一次對區塊鏈世界發出 “原來如此” 感嘆時候的喜悅嗎?


想不想對信標鏈(Beacon Chain)也有這麼透徹的理解?


信標鏈是整個 Eth2 系統的核心;但關於信標鏈的內容,大多都僅僅是在搬弄技術詞彙,很瑣碎,也不夠深刻。


在這裡,我們會提供對信標鏈諸要素和機制的透徹解讀。我們也會提供例子,恰如其分地點出關鍵細節,使你能事半功倍。


我們假定,你已經擁有對以太坊區塊鏈或者比特幣區塊鏈的堅實理解,也熟悉權益證明(Proof of Stake)。


先來看看分片(shard)、驗證者(staking validator)、見證消息(attestation)、委員會(committee)、檢查點和最終確定性(finality)所組成的全景。


分片:遠大理想


要理解信標鏈,先了解一下分片的概念會有所幫助。區塊鏈(包括以太坊)當前在提高可擴展性(scalability)上面臨的主要難題是:每個節點都必須驗證和執行所有交易。


而從計算機科學的角度來看,要擴展吞吐量,主要有兩種辦法:


A. 垂直擴展:大意是加強節點,讓節點變得越來越強大。


B. 水平擴展:大意是,加入更多節點。


為了去中心化,區塊鏈系統只能水平擴展。以太坊 2.0(也叫 Eth2 或者 Serenity)的其中一個目標是,讓普通的消費級硬件就能運行節點。分片這個術語的本意,就是對數據庫進行水平分區(horizontally partitioning)


基本上,一條分片鏈會由一部分節點(即全網節點的一個子集)來處理。而系統中的虛擬礦工,驗證者(validator),會被分配到不同的分片上,僅僅處理和驗證自己所在分片鏈上的的交易。


在這個系統中,按塊處理某個分片的節點群是會不斷更換的。


要對一個區塊鏈系統做分片,主要的挑戰就是分片的安全性。因為驗證者分散在各個分片上,惡意驗證者攻陷單個分片的難度會降低。


因此,分片解決方案的關鍵是:隨機混洗驗證者,讓每個分片區塊都由一組(偽)隨機選出的驗證者所組成的委員會來處理,使得一個所控制權益少於全體驗證者權益 1/3 的攻擊者的成功概率為 0(mathematically improbable)。


錯誤性證明(fraud proof),數據託管證明(custody proof)和數據可用性檢查(data availability check)同樣也是重要的安全組件,但要專門寫文章才能解釋清楚。


Eth2 現在的計劃是啟用 64 個分片。雖然分片跟信標鏈在概念上是相互獨立的,我們還是準備講講整個系統的一些關鍵元素。


分片概念反映出了信標鏈的功能和需要;通過分片這個概念,我們可以理解為什麼需要在傳統的區塊鏈系統中加入這些額外的部分。這個全新的領域也歡迎有所感悟的讀者提出創新。


科普 | Eth2 信標鏈:你首先該知道的事(上)


以太坊 2.0 各階段

以太坊 2.0 會分三個階段部署:

  • Phase 0:信標鏈
  • Phase 1:分片
  • Phase 2:執行

可以類比為人體的三個部分:

  • Phase 0:心臟
  • Phase 1:四肢
  • Phase 2:大腦

也可以類比為一支氣勢磅礴的管弦樂團:

  • Phase 0:指揮家
  • Phase 1:樂器
  • Phase 2:樂手

每個階段都會整合到系統中,分別擔任不同的角色。比起其它階段,Phase 1 所引入的功能會更加波瀾不驚,而 Phase 2 會更關乎執行。


時隙和時段(Slot and Epoch)
信標鏈就是以太坊 2.0 的心跳,是整個系統的和諧及共識中的主旋律。


一個時隙(slodt)是 12 秒,一個時段(epoch)由 32 個時隙組成,因此是 6.4 分鐘。


科普 | Eth2 信標鏈:你首先該知道的事(上)

- 時段 0 的 32 個時隙。創世塊就在時段 0 產生 -


(本文中所用的參數數據都來自信標鏈技術規範 v0.10.1)


時隙是用來標記產生信標鏈區塊及分片區塊的機會的:在信標鏈和各分片上,每一個時隙就有一次產生新區塊的機會。你可以想象信標鏈和各分片鏈是精心設計、緊密同步的。理想情況下,每 12 秒,就會產生 1 個信標鏈區塊,和分佈在不同分片鏈上的 64 個分片區塊。驗證者之間確實需要在時間上達成同步。


因此,時隙就像區塊時間一樣,只不過,時隙也有可能出空塊。信標鏈和分片鏈的創世塊是在時隙 0 時產生的;不過,各分片鏈會在信標鏈的時段 0 完成之後才開始運行,而且各有各的時段 0(產生創世塊的起點)。



驗證者、見證消息以及信標鏈


PoW 區塊鏈是靠礦工來維繫的,以太坊 2.0 的權益證明系統則是靠 “虛擬礦工” —— 驗證者。驗證者即是以太坊 2.0 協議共識過程的主動參與者。TA 們的經濟激勵會在後文的 “信標鏈驗證者獎懲措施” 部分討論。


區塊的提議者指的是一名被隨機選出來產生區塊的驗證者。


在大多數時候,驗證者都僅充當見證者,僅僅是對信標鏈區塊和分片鏈區塊投票。這些投票會被記錄在信標鏈上,也相應決定信標鏈的最新區塊,以及分片鏈的最新區塊。


科普 | Eth2 信標鏈:你首先該知道的事(上)

- 在某個時段的第 28 個時隙處,沒有出現相應的區塊提議(被分配為提議者的驗證者因為一些原因而沒有提出區塊)-


在一個時段中,一名驗證者會被偽隨機地分配到一個時隙和一個分片上。該驗證者會參與被分配到的分片的共識過程,以投票選擇出所在分片的最新區塊。驗證者也會在一個時隙內把最新區塊鏈接到信標鏈區塊上。


所謂見證消息(attestation),就是一名驗證者發起的投票,其權重由驗證者的餘額決定。見證消息會被驗證者附加到區塊內,隨著區塊一起傳播。


驗證者之間還會互相監督,可以報告其它驗證者做出互相沖突的投票或者提議多個區塊的不軌行為,如果報告屬實則可以得到獎勵。


信標鏈的主要內容就是一份驗證者地址的註冊表、每個驗證者的狀態、見證消息、以及鏈接到分片的信息。驗證者在參與前需經過信標鏈激活,也可以轉變自己的狀態,在下文的 “信標鏈驗證者激活及生命週期” 部分有述。



參與質押的驗證者:術語含義


在工作量證明區塊鏈上,用戶成為礦工的方式就是控制硬件參與共識。而在以太坊 2.0 中,用戶可以通過質押 ETH 獲得驗證者資格,並通過控制驗證者來參與網絡。所以說驗證者是虛擬的,是由質押者來主動激活的。


把質押者(staker)和權益(stake)、驗證者和餘額(balance)關聯起來會更容易理解。每個驗證者的餘額最大為 32 ETH,雖然質押者可以把自己全部的 ETH 都質押進去。每存入 32 個 ETH,就可以獲得 1 個驗證者資格。


驗證者的運行靠的是驗證者客戶端,這種客戶端會利用信標鏈節點來執行正常功能。信標鏈節點擁有追隨信標鏈運作及讀取信標鏈信息的功能。驗證者客戶端既可以自己運行信標鏈節點的功能,也可以連接到其他人的信標鏈節點。



交聯(crosslink):讓分片紮根到信標鏈上


所謂交聯,就是放在一個信標鏈區塊內、指向某個分片區塊的數據。信標鏈就是通過交聯來跟跟蹤分片鏈(的最新區塊)。因為有 64 個分片,每個信標鏈都能包含最多 64 個交聯。一個信標鏈區塊裡可能只有一個交聯,如果在該時隙,沒有驗證者為其它 63 個分片提議區塊的話。

交聯功能計劃在 Eth2 Phase 1 時引入,以使各分片鏈能紮根到信標鏈上,並讓信標鏈來充當分片鏈分叉選擇、分片鏈確定性以及跨分片通信的基礎。


所有的分片鏈都全程追蹤信標鏈。


委員會簡介


委員會就是一組驗證者。出於安全考慮,每一個時隙,在信標鏈和每一條分片鏈上,都會有一個委員會,由至少 128 位驗證者組成。攻擊者只有萬億分之一不到的幾率,能控制一個委員會中 2/3 的驗證者。


信標鏈這個名字,正是來源於其公開提供隨機數的功能(即 “隨機性信標”)。信標鏈會對一個叫做 “RANDAO” 的偽隨機過程達成共識。

科普 | Eth2 信標鏈:你首先該知道的事(上)

- 在每一個時段,偽隨機過程 RANDAO 都會選出所有時隙的提議者,並且混洗驗證者到不同的委員會去 -


驗證者是由 RANDAO 以驗證者的餘額為權重選擇出來的。一個驗證者可能在一個時隙中同時又是提議者,又是委員會成員,但這並非常態。發生這種事情的概率是 1/32,所以我們估計每個時段會看到一次。上面這個示意圖描繪的是驗證者數量少於 8192 個時的情形,不然一個時隙至少會有兩個委員會。


本文著重考察的信標鏈委員會:為信標鏈服務的驗證者。一個信標鏈委員會會被隨機分配到一個分片上,在一個信標鏈區塊鏈上產生交聯。而且委員會成員不是長期不變的,負責產生交聯的委員會都是逐塊逐塊替換的。


僅僅為分片鏈產生區塊的委員會留待日後解釋。分片鏈驗證者可能在不與信標鏈交互的情況下產生許多信標鏈區塊,但是,如果一個分片要跟其它分片通信,它就需要信標鏈委員會把分片區塊交聯到一個信標鏈區塊上。


科普 | Eth2 信標鏈:你首先該知道的事(上)

- 協議假設驗證者總是給自己認為是區塊鏈頂端的區塊投票 -


上面這個圖片綜合了三個時隙內產生的情況。在時隙 1,有驗證者提議了一個區塊,並且該塊得到了兩個驗證者的見證;委員會 A 中的一個驗證者離線了。在時隙 2,又有人提議了一個區塊,而委員會 B 裡面的一個驗證者沒有看到,所以其見證消息表示 TA 認為信標鏈的頂端(最新區塊)仍然是時隙 1 處產生的區塊。注意,這個驗證者跟時隙 1 時的離線驗證者不是同一個。對信標鏈頂端區塊的投票稱作 “LMD GHOST 投票”。

在時隙 3,委員會 C 中的所有驗證者都運行 LMD GHOST 分叉選擇規則,並獨立地投票同一個區塊為信標鏈頂端。


一個驗證者在一個時段中只會參加一個委員會。一般來說,系統中的驗證者會超過 8192 個,所以每個時隙會有多於一個委員會。委員會的規模都是一樣大的,都至少有 128 個驗證者。當系統中的驗證者少於 4096 個時,安全性就會下降,因為委員會的規模將少於 128 個驗證者。


委員會:關鍵


在每個時段,驗證者們被均勻地分配到時隙中,然後進一步分配到同等規模的各委員會中。所有驗證者都要在自己所在的時隙出發出見證消息,指出信標鏈的頂端。每個委員會都要在自己所在的時隙嘗試交聯到特定的某個分片。混洗算法會增減委員會的數量,以保證每個委員會都至少有 128 名驗證者。


舉個例子,假設有 16384 名驗證者。其中 512 名驗證者被偽隨機地分配到時隙 1,另外 512 個被分配到時隙 2,等等。時隙 1 的 512 個驗證者被進一步切分成 4 個委員會。所有 512 個驗證者都要在時隙 1 處發起 LMD GHOST 投票;其中一個委員會的 128 名驗證者嘗試交聯到分片 33;另一個委員會的 128 名驗證者嘗試交聯到分配 55;另外兩個委員會則嘗試交聯到分片 22 和分片 11。


在時隙 2,這個過程會重複一遍。512 名驗證者一樣被劃分成 4 個委員會。假定他們被分配到的分片為 41、20、17、15。所有的 512 個驗證者都要在時隙 2 處為信標鏈的頂端投票;這幾個委員會也會嘗試為分片 41、20、17、15 提出交聯。


這個過程也會在該時段剩下的時隙中一一重複。每個驗證者都會有所在的時隙,在那個時隙 TA 就可以發聲、提出見證消息、產生交聯。等到時段結束之時,所有 16384 名驗證者都已享受過發起投票和交聯的機會。


但是,在上述過程中,驗證者的投票都是基於時隙的,而不是基於時段的。有點像在給地方政府投票,而不是在搞全國大選。全體驗證者未曾為同一個東西投票過。下面這個部分就要討論檢查點和確定性,解釋各驗證者需要在所在的時隙發起的、針對時段發起的投票。也就是說,在自己所在的時段,他們還要為時段的檢查點投票。

科普 | Eth2 信標鏈:你首先該知道的事(上)


---------------------------------------------------------------------

翻譯 | 阿劍

作者 | ethos.dev

來源 | 以太坊愛好者



分享到:


相關文章: