如果每個插槽只允許一個驗證者提議一個塊,怎麼會有分叉?
據我了解,只有一個驗證者被選中來提議信標鏈上的下一個區塊。這意味著另一個驗證者證明只能證明一個塊,對嗎?(因為沒有選擇其他驗證者來提議區塊)
所以我在想,也許證明過程只是在添加提議的塊之前達到“有效性”的門檻值?
但是閱讀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
- slot
2
上的塊僅發佈到網路的一小部分。- slot 的塊生產者
3
沒有看到 slot 處的塊2
,因此它使用 slot 處的1
塊block.parent_root
。網路上觀察所有區塊的節點將具有以下區塊樹:
1 / \ 2 | 3
插槽處的塊
2
和3
兩者都將插槽處的塊引用1
為它們的父級,因此是衝突的。有一個叉子。