Consensus

合併中的致命缺陷?

  • January 3, 2022

也許我錯了並且誤解了某些東西,但是 PoS 鏈沒有進行驗證。

在合併期間……假設它發生在區塊 #151……PoW 鏈將區塊鏈傳遞給 PoS 鏈以開始處理交易。

由於信標鏈中沒有驗證 PoW 鏈的機制,因此 PoS 鏈無法知道它正在接收正確的鏈。

這意味著處理區塊 #151 的礦工可以在他們不知道的情況下修改交易並將其傳遞到 PoS 鏈。

我已經向一些觀看我的 youtube 頻道的人提出了這個問題,他們說“但如果發生這種情況,我們會知道並阻止合併的發生”

但是怎麼做?怎麼會有人知道?

假設礦工從一個多年未使用且沒有人積極關注的帳戶中重寫了一個塊。沒有人會注意到這一點。並且任何軟體中都沒有註意到這一點的機制。

我認為,解決方案是在 #151 區塊不發生任何交易。為了強制 geth 在塊高度將一個空塊傳遞給 PoS 鏈,合併發生。這樣我們就可以確定在合併時沒有發生塊操作。

有人可以告訴我我錯了,這不是問題,或者將其傳遞給開發人員查看並做一些事情嗎?

謝謝你。

這意味著處理區塊 #151 的礦工可以在他們不知道的情況下修改交易並將其傳遞到 PoS 鏈。

礦工唯一可以改變的交易是他們自己的(這與預期的行為沒有什麼不同)。所有在該塊中有交易的使用者都將預先簽署他們的交易,因此它們不能被更改 - 可能發生的最壞情況是交易被重新排序。

假設礦工從一個多年未使用且沒有人積極關注的帳戶中重寫了一個塊。沒有人會注意到這一點。並且任何軟體中都沒有註意到這一點的機制。

您如何建議礦工使用私鑰為多年未使用且礦工可能不知道的帳戶簽署交易?

這在一周左右之前在合併規範中得到了解決。他們使用難度級別而不是塊高度來確定合併何時發生。這使得礦工不太可能將不正確的鏈推送到 eth2,因為他們無法猜測何時會達到該難度級別。

michaelb 給出的答案是錯誤的,礦工可以更改鏈中的任何交易,而不僅僅是他們自己的。當那個礦工是驗證這些密鑰對的人而 eth2 鏈不是時,私鑰並不重要。如果只有一個人可以證明真相,那麼他們是不可信的。

編輯:我被要求編輯我對公然虛假資訊的評論。Michaelb 指出我不正確的原因是因為在合併時所有驗證器都需要與 eth1 客戶端同步(達成一致意見)。這是不正確的。eth1 客戶端是執行客戶端,它不進行驗證或共識。即使是預合併,這些程式碼或要求也沒有要求 geth 和類似的 eth1 客戶端就哪些塊是有效的(除了過去分叉的先前塊高度)達成共識。當然,您可以根據該要求更新 geth(並要求所有驗證器都在該客戶端上,否則他們將進行斜線和分叉),但這在我發帖時不在規範中(而且我不知道它在現在規範,雖然我不明白為什麼它不會被暗示)。我沒有公然傳播虛假資訊。

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