跳至主要内容
Change page

證明

頁面最後更新時間: 2025年10月21日

驗證者需要在每個時期建立、簽署和廣播證明。 本頁概述這些證明是什麼樣的,以及它們是如何處理和如何在共識用戶端之間交流的。

什麼是證明?

每個(6.4 分鐘),驗證者都會向網路提交一項證明。 這個證明針對時期內的一個特定時隙。 證明的目的是投票贊成驗證者對鏈的看法,特別是最近的合理區塊和當前時期內的第一個區塊(稱為來源目標檢查點)。 所有參與的驗證者的資訊都會合併,使得網路可以達成關於區塊鏈狀態的共識。

證明包含以下組成部分:

  • aggregation_bits:驗證者的位元列表,其位置對應於委員會中的驗證者索引;值 (0/1) 表示驗證者是否簽署了 data (亦即他們是否處於活躍狀態並同意區塊提議者)。
  • data:與證明相關的詳細資訊,定義如下
  • signature:彙總了個別驗證者簽章的 BLS 簽章。

證明驗證者的第一個任務是建置 datadata 包含以下資訊:

  • slot:證明所參考的時隙號碼
  • index:一個數字,用來識別驗證者在特定時隙中隸屬哪個委員會
  • beacon_block_root:驗證者在鏈首所見區塊的根雜湊 (套用分叉選擇演算法的結果)
  • source:最終性投票的一部分,指出驗證者所見最近的合理區塊
  • target:最終性投票的一部分,指出驗證者所見當前時期的第一個區塊

一旦 data 建置完成,驗證者就可以將 aggregation_bits 中對應於自身驗證者索引的位元從 0 翻轉為 1,以表示他們已參與。

最終,驗證者簽署證明並且在網路上進行廣播。

彙總證明

每個驗證者在網路上傳遞此資料時,都會產生大量的相關開銷。 因此,個人驗證者在更廣泛的廣播前,先會在子網內彙總。 這包括將簽章彙總在一起,讓廣播的證明包含共識 data 及由所有同意該 data 的驗證者簽章組合而成的單一簽章。 這可以透過 aggregation_bits 來檢查,因為它提供了每個驗證者在其委員會中的索引 (其 ID 在 data 中提供),可用於查詢個人簽章。

在每個時期,每個子網中會選出 16 個驗證者來擔任聚合者。 聚合者會從 gossip 網路上收集與其自身 data 等效的所有證明。 每個相符證明的發送者都會記錄在 aggregation_bits 中。 然後,聚合者將彙總證明廣播到更廣泛的網路。

當驗證者被選為區塊提議者時,它們會將最新時隙來自子網的彙總證明打包到新區塊中。

證明納入生命週期

  1. 產生
  2. 傳播
  3. 彙總
  4. 傳播
  5. 納入

證明的生命週期如下圖所示:

證明生命週期

獎勵

驗證者提交證明可以獲得獎勵。 證明的獎勵依參與標記(來源、目標和頭部)、基礎獎勵和參與率而定。

每個參與標記都可以為 true 或 false,視提交的證明及納入延遲而定。

最佳情況是所有 3 個標記皆為 true,在這種情況下,驗證者的每個正確標記可以賺取:

獎勵 += 基礎獎勵 * 標記加權 * 標記證明率 / 64

標記證明率是透過特定標記的「所有證明驗證者的有效餘額總和」與「總活躍有效餘額」的比較來計算的。

基本酬勞

基礎獎勵是根據參與證明的驗證者數量及其質押的有效以太幣餘額計算的:

基本酬勞 = 驗證者有效餘額 x 2^6 / SQRT(所有活躍驗證者的有效餘額)

納入延遲

當驗證者對鏈首 (block n) 投票時,block n+1 尚未提出。 因此,證明自然會晚一個區塊被納入,所有對 block n 為鏈首投票的證明都會被納入 block n+1,而納入延遲是 1。 若納入延遲加倍至 2 個時隙,則證明的獎勵會減半,這是因爲證明獎勵的計算方式爲基礎獎勵乘以納入延遲的倒數。

證明情境

投票驗證者缺席

驗證者最多有一個時期能夠提交他們的證明。 若錯過了在時期 0 時提交證明的機會,則它們可在時期 1 時提交(經過一個納入延遲)。

聚合者缺席

每個時期總共有 16 個聚合者。 此外,隨機的驗證者會訂閱兩個子網路長達 256 個時期,並在聚合者缺席時充當備援。

區塊提議者缺席

值得注意的是,在一些情況下幸運的聚合者可能同時被選為區塊提議者。 若因為區塊提議者消失而導致證明未被納入,則下個區塊提議者會取得已彙總的證明並納入下一個區塊。 然而,納入延遲將會增加 1。

延伸閱讀

知道一個曾經幫助你學習更多社區或社團資源? 歡迎在本頁自由編輯或添加內容!

這篇文章對你有幫助嗎?