更新時間:2023-05-11 16:36:31瀏覽:
區塊鏈有一些功能可以防止篡改——散列法(Hashing)或哈希法。
自1950年代和60年代以來,散列是一種加密技術,對各種計算都必不可少,區塊鏈使用它來防止篡改。在區塊鏈中,散列基本上充當唯一標簽,防止某人更改塊中的數據,甚至交換假塊。
散列可讓你從任何數據中創建一串字符,你將一堆數據放入(整個區塊)中,然后得到一個更小、唯一的數據。為了確認沒有被篡改,每個塊都存儲了它之前的塊的哈希值。這樣,如果哈希存儲的兩個位置之間存在差異,您就會知道出了什么問題。
哈希有幾個重要的屬性:
1、給定相同的數據,它們將始終相同。
2、如果數據的任何部分發生變化,即使是最輕微的變化,它們也會完全改變。
3、很容易再次檢查給定的散列是否來自給定的數據,但很難判斷僅從散列中給出了什么數據。
舉一個簡單的例子。假設當我們通過哈希算法運行“區塊鏈”這個詞時,我們得到了“ef7797”(實際上,哈希要長得多)。如果我們運行“區塊鏈”,只有一個字母不同,我們會得到“8e809e”。
如果我們想確保我們正在查看最初經過哈希處理的相同數據,只要我們使用相同的程序來創建我們的哈希值就很容易了,通過散列程序運行“區塊鏈”,無論是誰在做總是會產生“8e809e”。但是反過來需要很長時間:如果我想知道有人為了得到“9ed142”而在散列程序中放入了什么,我只需要猜測,直到找到產生那個的特定單詞哈希。
鏈中的每個區塊都包含前一個區塊的哈希值,這正是哈希算法在給定區塊數據時所吐出的內容。如果有關該塊的任何內容發生更改(例如,其中的交易,甚至整個塊本身),則該塊的哈希值都會更改,從而破壞鏈,包含前一個區塊的哈希值的下一個區塊會說“我已改變,有事!”
所有這些加起來構成了一個系統,在該系統中,任何查看提交給鏈的新塊的人都可以知道在任何時候都沒有任何更改。如果有,則更改后每個塊的哈希值必須與當時的分類賬不同。