區塊鏈如何知道它被篡改了?
我知道交易保留在塊中並與其他一些東西一起散列,並且散列儲存在下一個塊中。而且我知道,如果你試圖篡改其中一項交易,雜湊值將會改變,並且會影響到它之後的所有區塊。
然而,一個區塊如何知道它的交易一開始就被篡改了呢?
假設區塊#1000 有 10 筆交易。現在,雜湊值已計算並儲存在 #1001 塊中
所以,如果我回到塊 #1000 並添加一筆交易,這將改變雜湊值,它不會與 #1001 中儲存的相同。但是,如果塊#1000 的雜湊值已經被計算出來,它是如何變化的呢?這是否意味著定期重新計算每個塊的雜湊?
雜湊實際上並沒有“改變”。當您將交易添加到一個區塊時,您正在創建另一個區塊。
這就像一個作者出版了一本書,然後明年在第 36 頁列印了一個新版本,並在第 36 頁添加了一個逗號,粉絲們說他出版了一本“新”書。這對書籍沒有意義,但對於區塊鏈來說,每一點都很重要。
如果我回到塊#1000 並添加一筆交易,這將改變雜湊值,它不會與#1001 中儲存的相同。但是,如果塊#1000 的雜湊值已經被計算出來,它是如何變化的呢?
一旦一個區塊被探勘並作為最長有效鏈的一部分被接受(即多次確認深度),它就永遠不會改變(這意味著區塊的內容,因此雜湊,不會改變)。
為了改變它,你還必須改變它之後的每個塊,一直到目前鏈的末端。這需要大量的計算能力才能完成,你基本上需要 51% 的攻擊網路,以重寫區塊鏈歷史。這種攻擊非常昂貴,並且忽略了誠實挖礦的激勵措施,您可以在此處閱讀更多資訊。
否則,如果您剛剛更改了區塊#1000,然後嘗試將更改的區塊廣播給您的對等方,他們都會拒絕該區塊,因為它不是最長有效鏈的一部分(假設他們已經聽說過原始區塊# 1000,以及它之後的所有塊)。
這是否意味著定期重新計算每個塊的雜湊?
將計算一個塊的雜湊以確定其有效性,但我們永遠不會期望雜湊會改變一個在網路上具有足夠數量的確認的塊。