Blockchain

對等點如何選擇信任哪個對等點?

  • May 31, 2021
  1. 所以我理解區塊鏈如何工作的方式是每個新塊都使用前一個塊的雜湊,這意味著如果我的block[100].hash != someone_elses_block[100].hash這意味著我違反了某些規則,或者其他人這樣做了;在這種情況下,我的客戶如何找到受信任的對等方?我的客戶從哪裡獲得最新的正確區塊鏈?有中央伺服器嗎?如果是這樣,它從哪裡來的伺服器?因為礦工將擁有最長的鏈,但如果他們沒有真正遵守規則怎麼辦?然後呢?
  2. 假設我停止了我的客戶端 100 天,在這 100 天內有 500 筆新交易,這意味著如果我要將我的最後一個區塊與其他人進行比較,那麼我的客戶端將過時,因此它需要下載額外的區塊,它在哪裡找到這些塊,它如何確定要同步和信任哪些對等點?
  3. 關於隨機數的問題,如果讓我們說沒有隨機數;如果客戶端 A 有一條遵循規則的鏈,並且客戶端 B 正在驗證交易而沒有實際進行所有適當的檢查,這意味著客戶端 A 在塊 [100].hash != 客戶端 B 在塊 [100] 因此客戶端 B 不是遵循規則,所以問題是隨機數的真正需要是什麼?因為在我看來,這似乎只是為了讓人們更難開採,對嗎?或者它是否增加了某種安全性?如果確實如此,如果假設 nonce 始終是 0 到 15 之間的任何數字,它是否具有相同的安全性?還是必須隨著採礦速度的加快而對其進行調整?

謝謝!

要麼我違反了某些規則,要麼其他人違反了;在這種情況下,我的客戶如何找到受信任的對等方

您的客戶不信任任何對等方。它完全驗證了區塊鏈。如果在給定的塊高度存在多個衝突塊,您的節點將選擇使用它聽到的第一個塊。然而,它仍然會保留並驗證它收到的所有其他塊高度。只有在探勘出更多區塊後,它才會真正選擇那些衝突區塊中的哪一個成為其主鏈的一部分。它根據哪個分支的累積工作量最多來選擇。

在這個過程中沒有信任;它最初使用首先聽到的,然後如果後面的塊屬於不同的分支,則會重新調整。這些重組是建議等待多個確認的原因,因為一個區塊重組並不少見。

此外,具有最多累積工作的區塊鏈(通常稱為最長的區塊鏈)並不是決定使用什麼區塊鏈的唯一決定因素。區塊鏈也必須是有效的,它不能只是做最多的工作。

2:假設我停止了我的客戶端 100 天,在這 100 天內有 500 筆新交易,這意味著如果我要將我的最後一個區塊與其他人進行比較,那麼我的客戶端將過時,因此需要下載額外的塊,它在哪裡找到這些塊,它如何確定要同步和信任哪些對等點?

您的節點每次上線時都會執行正常的對等發現過程。然後,您的節點將隨機選擇它已連接的對等節點之一作為“同步節點”。它實際上並沒有從這個節點同步太多,只是塊頭。它從該節點下載塊頭並驗證它們。然後它將從它連接到的其他節點下載這些標頭的塊。

一旦一個節點的標頭鏈被同步,它將請求其他節點的標頭了解他們最好的標頭鍊是什麼,以確定同步節點是否不誠實。

同樣,在這個過程中沒有信任,因為所有塊和標題仍然是完全驗證的。由於下載涉及檢查多個節點,因此您的節點不太可能擁有不正確的區塊鏈,因為不僅僅是一個節點決定了您下載的鏈。

所以問題是nonce的真正需求是什麼?

nonce 與有效性完全無關,除了它是散列的塊頭的一部分。nonce 的唯一目的是在探勘時有一些改變。它不提供安全特性,也不與共識規則相關(除了它必須存在的事實,它可能為零)。礦工很可能只是不對 nonce 做任何事情,而是更改其他東西以獲得不同的雜湊值。它只是為了方便而存在。

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