Hash

為什麼無法修改區塊鏈中的交易?

  • October 17, 2020

許多頁面(包括維基百科)說不可能修改已經包含在區塊鏈中的交易。

但為什麼這麼難?

區塊鏈中的每個塊都送出塊中的所有事務以及它們所在的順序。它通過在塊頭中包含所有事務的散列來做到這一點,然後是散列數據的一部分工作證明。

修改區塊中的交易將改變所有交易的雜湊,最終改變區塊頭的雜湊。這可能會使塊頭的雜湊具有無效的工作證明。因此,為了修改交易,您必須重做區塊的工作證明,即重新探勘區塊。

此外,塊頭包括前一個塊的雜湊值。因此,如果您想更改交易,您還需要重新探勘包含您修改的交易的塊之後的所有塊。最後,您的一組修改塊實際上是一個區塊鏈分叉。為了讓它被網路的其餘部分接受,你的分叉需要比目前區塊鏈有更多的累積工作,這實際上意味著你的分叉需要比目前區塊鏈更長。

總的來說,修改區塊鏈中已經存在的交易需要重新探勘區塊,並且在交易已經有一些確認之後,這樣做需要大量的計算能力。需要如此多的計算能力,以至於實際上不可能修改塊。

區塊鏈資料結構

為了回答你的問題,我想參考這個粗略的區塊鏈資料結構圖像。那麼,區塊鏈中每個區塊的內容是什麼?

每個區塊包括:-

  • 儲存在塊中的數據

  • 區塊雜湊

  • 前一個區塊的雜湊

假設,現在您想要篡改或修改Block3的數據/交易。一旦你改變了數據甚至一個位,相應塊的雜湊也會改變,但這就是問題所在。如您所見,Block4 將擁有 Block3 的舊雜湊,因此會產生衝突。這樣,下一個相應的塊將面臨複雜性,網路將踢出該惡意節點。

因此,不可能修改已經包含在區塊鏈中的事務,因為它是一個僅附加的數據庫。

希望我已經回答了你的問題:)

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