Blockchain

連結塊如何防止更改數據?

  • April 15, 2019

我對塊連結感到困惑,因為我知道塊頭包含對前一個塊頭散列的引用以及 merkle 根和其他欄位。此標頭雜湊與標頭相關(計算),不包括交易塊,因此如果標頭被篡改,則鏈將失敗。我理解,但是如果塊中的交易被編輯,只有重新計算默克爾根,它才不會改變頭雜湊。

我的問題是當一個節點收到一個塊時,它如何驗證它(只是重新散列頭部,或者先重新計算 merkle 根然後重新散列頭部)?

Merkle root 是區塊頭的一部分,是根據區塊中包含的交易計算得出的。如果塊中的交易發生變化,它會改變頭部中的默克爾根。如果更改 merkle 根,則區塊頭將發生變化,並且最初計算的頭雜湊將不再有效。

當一個節點收到一個塊時,它如何驗證它(只是重新散列頭部,或者重新計算 merkle 根然後重新散列頭部)?

當全節點收到一個區塊時,它會執行各種檢查以確保該區塊符合共識規則。這包括檢查區塊中的所有交易是否有效。如果任何特定交易無效,則整個區塊將被全節點拒絕。在驗證交易之後,全節點將驗證 merkle 雜湊。然後全節點會查看區塊頭並驗證時間戳規則、前一個區塊雜湊和其他組件,然後計算區塊頭雜湊並檢查它是否小於目標。如果其中一個驗證規則失敗,節點將拒絕該塊。您可以在此處找到完整的塊驗證規則列表

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