區塊鏈入門筆記
區塊與雜湊的一一對應:
一個區塊分為兩大部分:
1.區塊頭
區塊頭裡面儲存著區塊的頭資訊,包含上一個區塊的雜湊值(PreHash),本區塊體的雜湊值(Hash)【也就是區塊體的Hash】,以及時間戳(TimeStamp)等等。
2.區塊體
區塊體儲存著這個區塊的詳細資料(Data),這個資料包含若干行記錄,可以是交易資訊,也可以是其他某種資訊。
區塊與Hash是一一對應的,Hash可以當做是區塊的唯一標識。只要原始內容不同,對應的雜湊一定是不同的。
區塊鏈的形成(為什麼要計算區塊的雜湊值呢?)【2】
既然區塊鏈是一個鏈狀結構,就必然存在鏈條的頭節點(第一個區塊)和尾節點(最後一個區塊)。一旦有人計算出區塊鏈最新資料資訊的雜湊值,相當於對最新的交易記錄進行打包,新的區塊會被創建出來,銜接在區塊鏈的末尾。
新區塊頭的Hash就是剛剛計算出的雜湊值,PreHash等於上一個區塊的Hash。區塊體的Data儲存的是打包前的交易記錄,這部分資料資訊已經變得不可修改。(不一定準確,需要考究)
為什麼區塊鏈是不可篡改的?【1】
- 區塊內防篡改的措施
區塊主體中是一顆默克爾樹,就是要將樹上的節點(樹的最下層稱為葉子節點,區塊鏈中葉子節點就是交易;其它節點都是為了計算默克爾樹根而形成的冗餘節點,沒有實際的資料)的雜湊值兩兩雜湊後形成新的節點,重複雜湊直到只存在一個雜湊值為止。這個最終的雜湊值就是默克爾樹根。由於雜湊值是全域性唯一的,可以相見,如果一個交易(樹的葉子節點)發生變化,就要修改一整條雜湊路徑,直到修改掉默克爾樹根為止。
- 區塊間防篡改的措施
關注下區塊頭,裡面有一項叫做“前一區塊的雜湊值”。這個值就是對前面的區塊進行雜湊得到的全域性唯一值。如果之前的區塊被修改了,那麼它對應的雜湊值就會變化,它的後繼區塊中“前一區塊的雜湊值”也會變化,導致後續區塊的雜湊值變化……通過的鏈的傳導,就需要將被修改區塊之後的所有區塊都做出相應的修改。
參考:
【1】https://www.solves.com.cn/hlw/qkl/2019-10-28/6824.html
【2】http://www.kepuchina.cn/wiki/ct/201803/t20180324_561012.shtml