1. 首頁
    2. 以太坊區塊鏈高度(詳解以太坊 2.0 信標鏈)

    以太坊區塊鏈高度(詳解以太坊 2.0 信標鏈)

    免責聲明:本文旨在傳遞更多市場信息,不構成任何投資建議。文章僅代表作者觀點,不代表火星財經官方立場。

    小編:記得關注哦

    來源:ETH中文網

    原文標題:詳解以太坊 2.0 信標鏈

    原文標題:《詳解以太坊 2.0 信標鏈》 撰文:JosephC

    諸位看官翹盼已久的 eth2.0 即將到來,大家是否想要一探究竟卻又無從下手呢?Eth2.0 引入了信標鏈和分片等眾多新概念,其相關報道和闡釋不勝枚舉,能同時顧及到廣度和深度的文章卻無一二。為了讓大家對此等看似深奧的名詞不再望而卻步,本文系統地講解了何為信標鏈、分片鏈及該系統上的其他機制,如驗證者角色、驗證者獎懲制度和共識機制等基本概念。

    還記得你剛窺探到區塊鏈奧秘時的那份喜悅嗎?你對信標鏈有同樣的求知欲嗎?

    信標鏈是以太坊 2.0 系統的核心,然而針對該系統的大部分描述都過于技術化、針對性過強或者不夠深入。

    但是從這篇文章中,讀者可以充分了解到信標鏈中的各個元素和運行機制。為了使讀者在理解信標鏈時事半功倍,文章將通過一些例子,用通俗的語言解釋其中的關鍵細節。

    閱讀本文之前,我們假設讀者對以太坊和比特幣有不錯的基礎知識,并對權益證明 (Proof of Stake) 這一共識機制有一定了解。

    現在進入正題,讓我們一起深入探討信標鏈的各個部分,諸如分片 (shards)、質押驗證者 (staking validators) 、證明 (attestations)、委員會 (committees)、檢驗點 (checkpoints) 和最終確定性 (finality)。

    分片:未來藍圖

    要想進入信標鏈的世界,首先我們需要打開分片的大門。在擴容性方面,包括以太坊在內的區塊鏈現在面臨的主要問題是:每個節點必須驗證和執行每一筆交易。

    在計算機科學中,主要有兩種擴容方式:

    縱向擴容:即增強節點能力

    橫向擴容:即增加節點數量

    為了保證去中心化,區塊鏈需要采取橫向擴容方式。以太坊 2.0 (也即 Eth2 或 Serenity) 其中一個目標就是讓節點可以在消費級硬件中運行。總體來說,Eth2 采用的分片機制指的就是對數據庫進行橫向分割。

    總的來說,每條分片鏈都擁有一個節點子集,在該鏈上進行工作。虛擬礦工和驗證者被分配到不同的分片中,并且只處理和驗證自己所在分片鏈上的交易。

    以太坊分片上的節點子集是動態的,按照區塊順序處理分片。

    區塊鏈實行分片機制的主要挑戰在于如何確保分片安全性。由于驗證者分散在不同的分片中,有的節點可能會惡意控制某個分片。

    解決該問題的關鍵在于:

    隨機分配 (shuffling) 驗證者,每個分片區塊都有一個委員會,其中的驗證者都經由隨機挑選。這種做法的目的是,經數學計算,如果攻擊者控制的驗證者少于總數的三分之一,其想要攻擊單個分片是難以實現的。

    此外,錯誤性證明(fraud proofs)、數據托管證明 (custody proofs) 和數據可用性檢查 (data availability checks) 都是確保安全的重要因素,不過需要單獨的講解才能說清楚。

    Eth2 目前的計劃是啟用64 個分片。盡管分片和信標鏈是獨立運作的,我們還是會針對整個系統的關鍵部分進行闡述。

    分片向我們揭示了以太坊信標鏈能做什么,需要什么。我們也能從中了解到為什么在傳統的區塊鏈基礎上需要增添這些新元素。分片式區塊鏈作為一片新大陸,始終等待著創新者的開墾。

    以太坊 2.0 的各個階段

    簡單來說,以太坊 2.0 有三個階段:

    Phase 0 – 信標鏈

    Phase 1 – 分片

    Phase 2 – 執行

    可以和人體進行類比:

    Phase 0 – 心臟

    Phase 1 – 四肢

    Phase 2 – 大腦

    也可以和一支強大的管弦樂隊進行類比:

    Phase 0 – 指揮

    Phase 1 – 樂器

    Phase 2 – 樂手

    每個階段都是系統里的重要組成部分,有著不同的特性。階段 0 是以太坊 2020 年的目標之一。與其他階段相比,階段 1 要更加穩定,而階段 2 側重于執行與代理。

    時隙 (slots) 和時段 (epochs)

    信標鏈是以太坊 2.0 的心臟,它令以太坊系統在和諧與共識中有序運行。每個 slot 為 12 秒,每個 epoch 由 32 個 slots 組成,即 6.4 分鐘。

    Epoch 0 中的前 32 個 slots,創世區塊在 slot 0 中產生,本文參考了信標鏈規范 v0.10.1 相關內容

    在每個 slot 中,在信標鏈和分片中都可能新增一個區塊。我們可以想象,信標鏈和分片鏈有序且緊密地排列在一起,當系統在理想情況下運轉時,每 12 秒就有一個信標(鏈)區塊和 64 個分片區塊產生。驗證者大致按照這個時間同步。

    我們可以將一個 slot 看作是區塊生成時間,不同的是 slots 內可以沒有區塊。

    信標鏈和分片的創世區塊都在 slot 0 中產生。分片將在信標鏈 epoch 0 的下一個 epoch 中開始運作,但無論是分片鏈還是信標鏈,都有自己的 epoch 0,且包含其創世區塊。

    驗證者、證明和信標鏈

    工作量證明(PoW)與礦工密不可分,而在以太坊 2.0 中,驗證者 (validators) 便是權益證明 (PoS) 共識機制中的「虛擬礦工」。

    驗證者這一概念在 Eth2 共識協議中應用率極高。相關激勵機制稍后將在「信標鏈驗證者獎懲制度」這一部分加以討論。

    區塊提議者(block proposer)是被(偽)隨機挑選出來生產區塊的驗證者。

    大多數時候,驗證者則充當證明人(attesters)的角色,對信標區塊和分片區塊進行投票。這些投票會記錄在信標鏈上,用以決定信標鏈和分片鏈的頭部 (heads)。

    (圖中文字:隨機驗證者在每個 slot 中提議一個區塊,如果其他驗證者投票贊成該區塊,那么提議驗證者將會獲得獎勵)

    某 epoch 中第 28 個 slot 無區塊提議 (圖中文字:slots 可能會丟失區塊,當被選中的驗證者因為掉線、同步失敗等原因而沒有提議區塊時,就會丟失區塊,那么驗證者也無法得到獎勵)

    在每一個 epoch 中,一個驗證者被(偽)隨機分配到一個 slot 和分片中。該驗證者參與到他所被分配的分片的共識中,從而他可以對該分片的分片頭進行投票。然后驗證者將該 slot 上的分片頭和信標區塊連接起來。

    一份證明(attestation)則是驗證者的一記投票,投票通過驗證者的余額進行加權。除區塊之外,證明也會由驗證者在系統中進行廣播。

    驗證者之間也會互相監督,通過舉報其他驗證者自相矛盾的投票或提議多個區塊的行為,從而獲得獎勵。

    信標鏈里主要記錄了驗證者的地址、每個驗證者的狀態、證明和分片的鏈接。驗證者需經由信標鏈激活,也可以轉變在線狀態,稍后在「信標鏈驗證者激活和生命周期」中有簡單的介紹。

    質押驗證者:含義

    驗證者是虛擬的,并由質押者激活。在工作量證明 (PoW) 共識機制中,成為礦工需要購買挖礦硬件。而在以太坊 2.0 階段,用戶通過質押 ETH 來激活和管理驗證者。

    為了更清楚地理解質押驗證者的含義,我們可以將質押者(stakers)和質押金 (stake),驗證者 (validators) 和余額 (balance) 聯系起來。每個驗證者擁有的余額最多為 32 個 ETH,不過,質押者可以質押他們所有的 ETH。每質押 32 個 ETH,一個驗證者就會被激活。

    驗證者通過驗證者客戶端進行工作,而客戶端借助信標(鏈)節點來運行。每個信標節點都有跟蹤和讀取信標鏈的功能。而每個驗證客戶端都可以執行信標節點的功能,或者調用信標節點。一個客戶端允許一個或以上驗證者執行驗證職能。

    交聯:分片扎根信標鏈

    交聯 (crosslinks) 是指將一個信標區塊和一個分片區塊連接起來,在一個交聯中,信標鏈緊跟分片鏈頭。由于一個信標區塊中有 64 個分片,因此至多可以容納 64 個交聯。如果在某個 slot 中,沒有驗證者為其他 63 個分片提議區塊的話,在這個信標區塊上可能只有一個交聯。

    交聯計劃于 eth2 的階段 1 實現,為的是將分片扎根在信標鏈中,為分片分叉選擇、分片鏈最終確定性和跨分片通信打好基礎。所有分片鏈全程都與信標鏈緊密相連。

    委員會 (committees):介紹

    一個委員會由一組驗證者組成。為加強安全保障,每個 slot (在信標鏈和每個分片里)的委員會至少由 128 位驗證者組成。而一個惡意攻擊者能夠控制 2/3 委員會成員的可能性低于萬億分之一。

    以太坊信標鏈這一名詞,來源于隨機信標(randomness beacon, 向公眾提供隨機數字)這一概念。信標鏈在一個偽隨機的過程(RANDAO)中執行共識。

    每個 epoch 中,RANDAO 為每個 slot 挑選區塊提議者,并將驗證者打亂,分配至委員會中

    RANDAO 根據驗證者余額的權重,選擇出區塊提議者。在同一個 slot 中,一個驗證者可以同時是區塊提議者和委員會成員,但這并不是常態。出現這種情況的概率為 1/32,因此我們大概會在每個 epoch 碰到一次。上圖情景中的驗證者不到 8192 個,不然每個 slot 就得至少包含兩個委員會。

    關于委員會,本文重點講解信標鏈委員會:為信標鏈服務的驗證者。一個(信標鏈)委員會將會被偽隨機分配到一個分片上,將其交聯到信標區塊中。委員會成員不是固定不變的,負責交聯的委員會都是逐塊更替的。

    分片委員會僅進行生產分片區塊的工作,此話題留待日后討論。

    許多分片區塊由分片鏈驗證者生產,且不需要與信標鏈聯系。然而,如果某個分片想要和其他分片通信,則需要借助信標委員會將其與信標區塊進行交聯。

    委員會里的驗證者應該要投票選出區塊鏈頭

    上圖綜合描述了三個 slot 中發生的情況。在 slot 1 中,有驗證者提議出一個區塊,該區塊得到兩個驗證者的證明;而委員會 A 里的一個驗證者離線了。slot 1 中的證明和區塊被廣播到網絡上,許多驗證者也收到了該信息。

    在 slot 2 中,又一個區塊被提議出來,而委員會 B 的一個驗證者錯過了該信息,于是該驗證者認為信標鏈頭是 slot 1 中的區塊。

    請注意,這個驗證者跟 slot 1 的離線驗證者有所不同。投票證明信標鏈頭的這個過程被稱為」LMD GHOST 投票」。在 slot 3 中,委員會 C 上所有的驗證者都遵循 LMD GHOST 分叉選擇規則,并獨立地投票選出同一個信標頭。

    一名驗證者在每個 epoch 中只參與一個委員會。

    一般來說,系統中的驗證者會超過 8192 個,所以每個 slot 中會有一個以上委員會。所有委員會的規模都一樣大,至少由 128 個驗證者組成。當系統中的驗證者少于 4096 個時,安全性就會打折扣,因為這意味著單個委員會的驗證者將少于 128 個。

    委員會 (committees):關鍵

    在每個 epoch 中,驗證者們被均勻地分配到各個 slot 中,然后進一步分配到規模相當的各委員會中。所有驗證者都要在自己所在的 slot 中投票選出信標鏈頭。每個委員會都要在自己所在的 slot 中嘗試交聯某個特定的分片。

    混洗 (shuffling) 算法會適時調整每個 slot 中委員會的數量,以保證每個委員會都至少有 128 名驗證者。

    舉個例子,假定有 16384 名驗證者,其中 512 名驗證者被偽隨機分配到 slot 1 中,另外 512 名被分配到 slot 2 中,以此類推。slot 1 中的 512 名驗證者被進一步分成 4 個委員會,并被偽隨機分配到分片中。

    假設分片 33、55、22、11 是這四個委員會所分配到的分片。所有 512 名驗證者都要在 slot 1 中發起 LMD GHOST 投票;其中一個委員會的 128 名驗證者試圖和分片 33 產生交聯;另一個委員會的 128 名驗證者試圖與分片 55 產生交聯;剩余兩個委員會則試圖與分片 22 和分片 11 產生交聯。

    在 slot 2 中,這個過程會重復一遍,512 名驗證者同樣分成 4 個委員會,然后被偽隨機分配到分片中。假定他們被分配到分片 41、20、17、15 中。所有的 512 名驗證者都要在 slot 2 中投票選出信標鏈頭;同時這幾個委員會也試圖與分片 41、20、17、15 產生交聯。

    這個過程也會在該 epoch 剩下的 slot 中再三重復。每個驗證者在自己所處的 slot 中,可以進行投票、證明以及交聯。在該 epoch 結束之后,所有 16384 名驗證者都已發出過投票并且和分片進行過交聯。

    但是,前面所提到的驗證者投票都是針對 slot 的,而并非針對 epoch。打個比方,其區別類似在地方選舉和全國大選中進行投票。到目前為止,全體驗證者還并未就同一個事物進行投票。

    以下部分將進一步闡釋檢查點 (checkpoints) 和最終確定性 (finality),描述了各驗證者處于分配的 slot 時,針對 epoch 發起的投票。也就是說,全體驗證者在自己所處的 slot 中,還要為 epoch 的檢查點投票。

    信標鏈檢查點(Beacon Chain Checkpoints)

    檢查點 (checkpoints) 是位于 epoch 第一個 slot 里的區塊。

    如果這個 slot 內沒有產生區塊,則最近的前一個區塊即為檢查點。每個 epoch 都會有一個檢查點區塊;一個區塊可能同時是多個 epoch 的檢查點。

    包含 64 個 slots 的 epoch 檢查點

    值得注意的是,從 slot 65 到 slot 128 之間是沒有區塊的。Epoch 2 的檢查點本來應該是位于 slot 128 處產生的區塊,但因為該 slot 丟失了,所以 epoch 2 的檢查點還是 slot 64 處產生的區塊。Epoch 3 同理,slot 192 處是空塊,因此 epoch 3 的檢查點為 slot 180 處產生的區塊。

    時段邊界區塊 (epoch boundary block, EBB) 是一些文獻 (比如 Gasper 論文,也是上圖的來源) 中用到的術語,可以理解為「檢查點」(checkpoint) 的同義詞。

    在發起一次 LMD GHOST 投票時,驗證者也要為最近一個 epoch 的檢查點投票,該檢查點叫做 「目標檢查點」 ( target) 。該投票叫做Casper FFG 投票,而且還包括對前一個檢查點的投票,叫做「來源檢查點「 (source)。

    上圖中,epoch 1 中的一個驗證者進行投票,將創世區塊選為來源檢查點,然后推舉 slot 64 處產生的區塊為目標檢查點。在 epoch 2 中,同一個驗證者又為相同的檢查點投票了。

    驗證者只需為自己所分配到的 slot 發起 LMD GHOST 投票,但是每一個 epoch 上的所有驗證者都要為 epoch 的檢查點發起 FFG 投票。

    絕對多數(supermajority)

    絕對多數(supermajority)是指某個投票獲得了所有活躍驗證者總余額 2/3 的支持。

    簡單來說,假設有 3 個活躍驗證者,其中兩個的余額是 8 ETH,另一個驗證者的余額為 32 ETH。那么,那個擁有最多余額的驗證者所進行的投票才是絕對多數;盡管另外兩個驗證者的投票可能不一樣,但是他們的余額不足以形成絕對多數。

    最終確定性 Finality

    當一個 epoch 結束之后,如果其檢查點得到了 2/3 余額票數,也就是形成了絕對多數,那么該檢查點就被證明 (justified) 了。

    如果檢查點 B 已經被證明,且其下一個 epoch 的檢查點也被證明了,那么 B 就被最終確定了 (finalized)。一般來說,一個檢查點會在兩個 epoch 內得以最終確定,即 12.8 分鐘。

    通常來說,用戶交易發生在一個 epoch 的中間部分;那么距下一個檢查點就還有半個 epoch 的時間,也就是說,一筆交易經過 2.5 個 epoch (16 分鐘)便可得以最終確定 (finality)。

    在理想情況下,超過 2/3 的證明 (attestations) 將會被打包進某個 epoch 的第 22 個 slot 中。因此,交易得以最終確定的平均時長為 14 分鐘(16+32+22 個 slot)。

    區塊確認過程則經由區塊證明 (attestations),到被證明 (justification),再到最終確定 (finality)。用戶可以自己決定是否等到交易最終確定,還是說稍低一點的安全性也足夠了。

    slot 64 處的檢查點被證明,slot 32 處產生的一個區塊得以最終確定

    為簡要敘述,下文將假設所有驗證者的余額相同。

    信標鏈頭發生了什么

    在 slot 96 處,一個時段邊界區塊 (EBB) 被提議,且該區塊還包含了對 epoch 2 中檢查點的證明。

    Epoch 2 檢查點的證明投票現達到了 2/3 的絕對多數,意味著 epoch 2 的檢查點被證明了。因此,上一個被證明的檢查點,即 epoch 1 檢查點,也獲得了最終確定性。slot 32 處的區塊一旦被最終確定,此前所有區塊都會被最終確定。

    在對檢查點進行最終確定時,對同時可以得到最終確定的區塊在數量上并沒有限制。所以,雖然最終確定性僅在 epoch 邊界的時候產生,但證明 (attestations) 是逐塊累加的,下文的「從創世區塊到區塊鏈頭會發生什么」提供了另一種解釋。

    從 slot 1 到 slot 32 的信標鏈區塊所包含的所有交聯,也會使分片鏈獲得最終確定性。換句話說,當一個信標區塊被最終確定時,與該塊所交聯的分片區塊也能被最終確定。

    交聯本身不足以使一個分片區塊被最終確定,但是對分片鏈的分叉選擇有所幫助。

    從創世區塊到區塊鏈頭會發生什么

    采取同樣的辦法,我們可以觀察到從創世區塊開始的一條故事線:

    從 slot 1 到 slot 36,所有的提議者都提議了一個區塊,且所有區塊都被添加到鏈上。

    對于 epoch 1 的所有區塊來說,其檢查點 (slot 32 處的區塊) 累積了 55% 的驗證者證明。驗證者在 slot 64 處提議區塊時,同時也對 epoch 1 處的檢查點發起投票。現在,有 70% 的驗證者都證明了 epoch 1 的檢查點,因此 epoch 1 檢查點被證明 (justified)。

    Epoch 2 結束后,epoch 2 的檢查點 (slot 64 處的區塊) 累積了投票證明但還達不到 2/3 的多數要求。驗證者在 slot 96 處提議區塊時,同時也對 epoch 2 處的檢查點發起投票,所以這時候,epoch 2 檢查點的投票達到了 2/3 的多數要求,也就是被證明了(justification)。

    Epoch 2 的檢查點被證明的同時,epoch 1 的檢查點以及所有此前的區塊被最終確定了。

    還有一種可能性,我們只考慮到 epoch1。Epoch 2 的檢查點被提議出來之前,epoch 1 的檢查點可能已經獲得了絕對多數投票。

    譬如說,當 slot 32 和 slot 54 的區塊被提議出來時,slot 32 的檢查點的證明投票可能已經達到多數要求了。因而在這種情況下,檢查點可能在 epoch 2 之前就已經被證明了。

    最后一點,檢查點可以在離其最近的 epoch 中被證明,但是至少隔一個 epoch 才能被最終確認。

    有時,一個區塊被證明意味著兩個甚至多個 epoch 以前的區塊被最終確定。Gasper 論文里討論了這種情況,只有在網絡高延遲、網絡隔離或遭遇強大攻擊等個別情況下,才會出現這種狀況。

    最終確定性對于分片及以太坊區塊上的用戶來說是無比重要的,保證用戶們的交易安全進行,不被篡改,并且降低了跨分片通信的復雜性。如果沒有最終確定性,分片內部和分片之間的交易回滾會具有破壞性,或讓分片的利好不復存在。

    深入了解證明 (attestations)

    一則證明包含一個 LMD GHOST 投票和一個 FFG 投票。

    理想情況下,每個 epoch 中所有驗證者提交一份證明。每一個證明有 32 個 slot 的機會被打包進鏈,這意味著在單個 epoch,一名驗證者可能有兩份證明被打包上鏈。

    如果驗證者在其所分配的 slot 里發送證明,且該證明被打包上鏈,那么驗證者獲得的獎勵為最大值;隨后打包上鏈所獲得的獎勵就會不斷減少。

    為了留給驗證者準備的時間,他們被提前一個 epoch 分配到委員會中。一旦 epoch 開始,提議者只會被分配到各 slot 中。盡管如此,秘密領導人選舉旨在降低攻擊和賄賂提議者的風險。

    委員會使得聯合簽名的技術達到最優化狀態,將每一名證明者的簽名聚合成一個簽名。當驗證者在同一個委員會中,并做出了同樣的 LMD GHOST 和 FFG 投票時,他們的簽名就可以被聚合。

    信標鏈驗證者獎懲機制

    證明者獎勵(attester rewards)

    證明者懲罰(attester penalties)

    質押者特有風險(typical downside risk for stakers)

    罰沒和吹哨者獎勵(slashings and whistleblower rewards)

    提議者獎勵(proposer rewards)

    「不作為」懲罰(inactivity penalty)

    當驗證者所給出的證明 (LMD GHOST 或 FFG 投票) 為其他大部分驗證者所同意時,會獲得獎勵。在 eth2 的階段 1 中,驗證者也可以通過與分片產生交聯而獲取獎勵。當區塊被最終確定,獎勵也隨之確定。

    相反,如果驗證者沒有提交證明,或者其投票選出的區塊最終沒有被確定,那么驗證者就會受到懲罰。

    在描述相對來說不那么常見的獎懲制度之前,你可能想知道成為一名質押者所面臨的風險。

    作為一名質押者,損失 ETH 的風險與回報并存。如果一名驗證者在一年中能賺取 10% 的報酬,那么一名工作表現差強人意的 (誠實) 驗證者則面臨 10% 的損失。

    比如說,一名驗證者總是不在線,或者其投票的區塊總是無法被最終確定,他將會受到懲罰,而罰款數額等于一名驗證者投出有效區塊所獲得的獎勵數額。

    罰沒的數額最少為 0.5 個 ETH,最多則是一名驗證者的所有質押金額。

    一名驗證者如果受到了罰沒 (slashing) 懲罰,其將至少損失余額的 1/32,且會被停止繼續參與工作。該名驗證者所受懲罰的程度,與連續 8192 個 epoch 都離線的驗證者所受的懲罰相當。

    基于同時受到罰沒懲罰的驗證者的數量,協議還會對驗證者做出額外的懲罰。施以額外懲罰的基本公式是:「validator_balance3fraction_of_validators_slashed」。

    也就是說,如果 1/3 的驗證者同時受到了罰沒,他們會損失所有余額。而對罰沒行為舉報成功的驗證者,則可以獲取吹哨者獎勵。

    區塊一旦得以最終確定,區塊提議者便可以獲得相當可觀的獎勵。一直在線且妥善完成工作的驗證者,他們提議區塊所能獲得的獎勵將提高 1/8。如果發生罰沒行為,提議者還可以將罰沒證據打包進區塊,從而獲得少量報酬。在 eth2 階段 0,所有吹哨者的獎勵實際上都歸于提議者。

    以太坊 2.0 這個系統里有許多機制,通過了解其作用,便可以更好地了解這些機制。這套獎懲制度里,最后一項便是「不作為」懲罰。

    簡單來說,如果有超過 4 個 epoch 沒有獲得最終確定性,那么所有驗證者都要受到翻倍的「不作為」懲罰,直到下一個檢查點被最終確定。

    「不作為」懲罰的作用在于:如果 50% 的驗證者掉線了,在 21 天后會再次重新對區塊進行最終確定。

    罰沒 Slashing

    如果出現以下這三種情況,要對驗證者進行罰沒懲罰:雙重提議、FFG 雙重投票和 FFG 環繞投票。LMD GHOST 投票不會受到罰沒懲罰。

    雙重提議 (double proposal)

    指一名區塊提議者在他所分配到的 slot 里提議一個以上的區塊。

    雙重投票 (double vote)

    指一名驗證者針對同一個目標檢查點 (target),不同的源檢查點 (source) 發起的兩次 FFG 投票。

    環繞投票 (surround vote)

    指一名驗證者發起的 FFG 投票環繞之前的 FFG 投票,或是被之前的 FFG 投票所環繞。

    下面有兩個例子,背景是一名驗證者在 epoch 5 內,為 slot 32 處的源檢查點和 slot 128 處的目標檢查點發起了一次 FFG 投票:

    在 epoch 6 內,為 slot 64 處的源檢查點和 slot 96 處的目標檢查點發起的 FFG 投票,被其在 epoch 5 中的投票環繞。

    在 epoch 6 內,為 slot 0 處的源檢查點和 slot 160 處的目標檢查點發起的 FFG 投票,則環繞了其在 epoch 5 中的 FFG 投票。

    在 epoch 6 內,針對 slot 128 目標檢查點的 FFG 投票是雙重投票,除非 slot 32 為源檢查點,否則要受到罰沒。相同的 FFG 投票不會遭到罰沒。

    針對同一個源檢查點的兩次 FFG 投票,不用受到罰沒。這對系統的活性很重要。

    比如說,如果有兩個分叉,每個分叉占有驗證者 50% 的余額,那么協議需要鼓勵 (而非懲罰) 驗證者通過對同一個源檢查點和一個不同的目標檢查點發起投票,從而在分叉間轉換。驗證者可以在分叉之間安全地來回轉換,并嘗試達到 2/3 的絕對多數,以避免陷入僵局。

    一名吹哨驗證者提出舉報時,需要打包沖突投票的相關信息來證明該驗證者應受到罰沒。

    要在一個龐大的記錄系統里,有效地找出沖突投票,是對算法和數據結構的一項巨大挑戰。目前「罰沒檢測工程挑戰」正在尋求參與者。

    驗證者完全有能力使自己避免被罰沒:只需要記住其對哪些證明和提議進行了簽名。一名誠實的驗證者不會因為其他驗證者的行為而受到罰沒。只要驗證者沒有對沖突的證明或提議進行投票,就不會受到罰沒。

    一個驗證者客戶端可以運行多個信標節點,從而延長系統的正常運行時間、增強信任和 DoS 攻擊抵御。在運行節點或是運行備份驗證者客戶端時,用戶需要注意,驗證者有無對沖突的信息進行簽名。

    信標鏈驗證者激活和生命周期

    每一位驗證者需要 32 個 ETH 才能激活。一個用戶在以太坊主網的存款合約 (deposit contract) 里質押 32 個 ETH,就會激活一位驗證者。

    當驗證者的余額低于 16 個 ETH 時,信標鏈就會停止這些驗證者的工作。質押者可以將剩余的驗證者余額提出來,但目前無法在 eth2 的階段中實現。

    在 2048 個 epoch,將近 9 天時間的工作之后,驗證者還可以自愿選擇退出。退出時,質押者需要等待 4 個 epoch 才能撤出其質押金在這 4 個 epoch 之內,驗證者仍然有可能面臨舉報和罰沒。

    一名誠實驗證者大概 27 小時之后便可以提出其余額。然而,如果一名驗證者受到了罰沒懲罰,則必須等 8192 個 epoch (大約 36 天) 之后才能夠提出余額。

    「以太坊 2.0 階段 0 驗證者生命周期」中有更詳細的技術說明,內含以下示意圖:

    為了避免短時間內對驗證者造成巨大的變動,存在一些機制對單位 epoch 上驗證者激活和退出的數量進行限制。其作用之一在于使得很難在短時間內激活大量驗證者對系統進行攻擊。

    信標鏈深度應用了有效余額 (effective balances) 的概念,這就使得驗證者的余額變動范圍更加小,以達到技術的最優化。

    總結

    在每個 epoch,驗證者們被均勻地分配到各個 slot 中,然后進一步分配到規模相當的各委員會中。各個驗證者同時只能位于一個 slot 和一個委員會中。

    下面總結幾點:

    同一個 epoch 里的所有驗證者嘗試最終確定同一個檢查點:這是 FFG 投票;

    所有驗證者被分配到一個 slot 中,嘗試投票選出同一個信標鏈頭:這是 LMD GHOST 投票;

    所有驗證者被分配到一個委員會中,嘗試交聯某個分片;

    采取最優行為的驗證者獲得的獎勵最多。

    激活信標鏈至少需要 16,384 個創世驗證者。驗證者的數量可能會因為罰沒或者自動退出而減少,也會隨質押者的激活而增加。

    當系統升級到 eth2 階段 1 或以上時,將需要更多的驗證者工作。信標鏈需要至少 262,144 個驗證者 (質押金額將超過 800 萬 ETH) 來生產區塊,每個區塊包含 64 條交聯。

    歷史上從來沒有過為去中心化系統和應用搭建的擴容平臺。如果你受到了啟發,想要更深入地參與,「ETH2.0 規范」里有權威的參考,其中包含信標鏈規范,還有其他關鍵資源以及賞金的相關問題。

    目前來說,點對點網絡層最亟待完善。來和我們一起參與這項挑戰吧!更多技術細節請訪問 ethresear.ch 或者 Ethereum Magician’s forum,和我們一起創造歷史吧!

    感謝 Danny Ryan 對多個部分的審校和反饋,感謝 Momo Araki 的圖表以及提供咨詢的各位。標題圖由 Hsiao-Wei Wang 的原作修改而來。如果讀者朋友覺得本文對你有所幫助,請不吝分享!

    相關文章
    草莓视频