Attack

是什麼阻止了基於近乎有效的區塊時間戳的 DoS?

  • July 24, 2018

收到新挖出的區塊後,將在此處執行區塊時間戳驗證:

<https://github.com/bitcoin/bitcoin/blob/master/src/validation.cpp#L3263-L3270>

Q1:關於第二次檢查(區塊時間戳太遠),是什麼阻止了礦工在未來廣播一個接近限制的區塊並讓一些節點接受該區塊,而其他一些節點拒絕該區塊?

Q2:如果網路的一部分接受了一個塊,而網路的另一部分拒絕了一個塊(即由於時間戳無效而沒有將塊記錄在其塊樹中),網路可以以任何方式從中恢復嗎?

我同時回答這兩個問題。網路分裂的情況並不少見,即不同的節點接受不同的塊作為鏈尖。事實上,這種情況時有發生,因為不同的礦工同時發現了兩個或多個區塊。當在前一個塊的頂部找到下一個塊時,這將得到解決。最長的鍊是有效的。

並且礦工不能簡單地在廣播時設置時間戳。在找到有效的隨機數之前需要設置時間戳。因此,礦工被激勵以有效的時間戳進行探勘。如果該塊沒有被網路接受,則使用的雜湊率(和電力)不會得到補償。

確實,這種邊緣情況似乎存在問題,但是,塊時間戳將有效或無效,因為它是自嵌入到具有大多數 PoW 的最後一個有效塊中的時間以來的時間,而不是所討論的本地時間。

在所描述的情況下,情況並非如此,但如果可能以某種方式或其他情況出現,那麼一些節點可能會繼續在其他節點拒絕的塊上建構。這將如何解決將取決於網路拆分的百分比。如果 51% 或更多的算力拒絕投機區塊,那麼隨著有效鏈的擴展超過並擁有最多的 PoW,問題將及時自我解決。另一方面,如果 51% 或更多的算力接受投機區塊作為基礎,則需要進行干預以獲取仍然拒絕的節點或丟棄無效鏈。

本質上,如果一個區塊符合共識規則(參考客戶端的規則),那麼它就是有效的。

其他人已經表示,在採礦時推動時間範圍在經濟上是不明智的,因為必須提前決定,因此存在經濟抑制因素。

引用自:https://bitcoin.stackexchange.com/questions/77512