Proof-of-Stake

如果每個插槽只允許一個驗證者提議一個塊,怎麼會有分叉?

  • March 17, 2022

據我了解,只有一個驗證者被選中來提議信標鏈上的下一個區塊。這意味著另一個驗證者證明只能證明一個塊,對嗎?(因為沒有選擇其他驗證者來提議區塊)

所以我在想,也許證明過程只是在添加提議的塊之前達到“有效性”的門檻值?

但是閱讀Validated, Staking on eth2: #2 - 兩個穿風衣的幽靈

但我記得瀏覽這裡的文章https://blog.ethereum.org/2015/08/01/introducing-casper-friendly-ghost/

它在對共識的描述中有一部分是這樣說的:

Eth2 使用 Greedy Heaviest Observed Subtree (GHOST) 作為其分叉選擇規則。GHOST 通過選擇投票數最多的分叉來選擇鏈的頭部(它通過考慮每個分叉塊及其各自子塊的所有投票來做到這一點)。

如果在一個槽中只選擇一個驗證器來提議一個塊,我看不出怎麼會有一個分叉。有人願意解釋這是如何工作的以及我缺少什麼嗎?

謝謝!

如果在一個槽中只選擇一個驗證器來提議一個塊,我看不出怎麼會有一個分叉。

忽略可罰沒的攻擊(即,在同一個槽產生兩個衝突的塊),每個槽可以有零個或一個塊。

在乙太坊信標鏈(又名“eth2”)上,我們將任何沒有區塊的槽稱為“跳過槽”。如果當選的區塊提議者出於任何原因(離線、黯然失色等)未能傳播有效區塊,則會發生跳槽。

當區塊生產者為某個 slot 生成區塊時s,他們可以選擇block.parent_root. 一般情況下,提議者會在 處選擇區塊s - 1。但是,如果s - 1是跳過槽,則提議者將選擇最新的未跳過槽。

所以,讓我們想像一下下面的場景:

  • 插槽中有一個塊1
  • slot2上的塊僅發佈到網路的一小部分。
  • slot 的塊生產者3沒有看到 slot 處的塊2,因此它使用 slot 處的1block.parent_root

網路上觀察所有區塊的節點將具有以下區塊樹:

 1
/ \
2   |
   3

插槽處的塊23兩者都將插槽處的塊引用1為它們的父級,因此是衝突的。有一個叉子。

引用自:https://ethereum.stackexchange.com/questions/116738