區塊鏈里的區塊是什么(Web3知識120問第4篇:區塊鏈里的“區塊”指什么?)
Web3知識120問第4篇
區塊鏈里的“區塊”指什么?
眾所周知,區塊鏈是一個按照時間順序,將數據區塊以順序相連的方式組合成的鏈式結構。鏈式結構很好理解,就是鏈條的樣式。但是很多人不知道的是,這個“區塊”到底是什么?這個所謂的“區塊”里,包括哪些東西呢?
今天,識鏈大學就給大家剖析一下區塊鏈的數據結構,以及區塊內部所包含的信息資料。
一、區塊頭與區塊體
區塊本身是由兩個結構組成,分別是:區塊頭和區塊體。上半部分是區塊頭,包括版本號、時間戳、難度目標、隨機數、前一個區塊的哈希值、默克爾根等信息。而下半部分就是區塊體,囊括了這個區塊內的所有交易信息和相關的哈希值。如果不太明白,可以看下面的圖:
二、區塊主體與默克爾樹
現在,我們先從區塊體說起,這個比較簡單。在區塊鏈上,大概每幾分鐘就會誕生一個新區塊,例如比特幣網絡是 10分鐘左右。那么,這10分鐘內產生的所有轉賬、交易信息(轉賬人、接收人、轉賬金額等),都會被打包到一個區塊主體里,這就構成了一個區塊體。
但是還沒結束,這些交易信息,實際上是以哈希值的形式存在,就是圖中的hash。所謂哈希值,就是一串數字和字母的組合。這個組合,是將一段文字或者信息,通過哈希算法的形式加密而成的。
舉例來說,識別大學內部有一個秘密是“識鏈大學的校長是老王”。這個信息,老王并不希望別人知道,于是通過SHA-256這個哈希算法,將這段信息進行加密之后,就變成了
“64ded2e5d6a6f1e08af96de4c4292cf9eab7ca85fd2921f671f4105b4b2fedf8”,這串字符就是哈希值了。
同理,在區塊鏈里,某個時間段內所有人的轉賬信息都會通過哈希算法被計算出哈希值。因為如果不計算的話,資料太多,區塊裝不下。但是就算是變成哈希值,依然還是很多。那就再繼續算,哈希值兩兩組合,得出下一個哈希值。再兩兩組合計算,最后得到一個終極哈希值,這個哈希值就叫默克爾根(Merkle)。這種兩兩計算的方式,組成了一種結構,就是默克爾樹(Merkle)的結構。
三、區塊頭的結構
和區塊體相比的話,區塊頭包含的內容就復雜的多了,畢竟是頭嘛。就區塊頭里面的結構,識鏈大學給大家一一介紹。
1、版本號:就是這個區塊的版本,也叫“區塊高度”。創世區塊的版本號是0,下一個區塊的版本號就是1,以此類推,多一個區塊就加個1。例如ETH2.0是在區塊高度15537393的時候完成合并。這個“15537393”就是該區塊的版本號。
2、時間戳:前面說過,區塊鏈是按照時間順序排序的。所以,每個區塊生成的時候,都會在里面標注好時間,會精確到秒。有了這個時間戳,才能確定好順序。這個時間,也是鏈上時間,以供用戶查詢。
3、難度目標:區塊鏈系統自動調整的挖礦難度。以比特幣網絡為例,剛開始挖礦的時候,大家用電腦都能挖礦。后來隨著挖礦的人越來越多,難度也越拉越大。為什么難度大?因為比特幣網絡設定了一種機制:大約每10分鐘要生成一個區塊。如果難度不變,挖礦的人越來越多,那么區塊生成時間就會變少,這就亂套了。所以,比特幣網絡會在2周左右,根據全網的算力情況調整一次難度。
4、隨機數:區塊鏈網絡隨機生成的一串字符,但是沒人知道是什么,只能靠猜。誰猜出來,誰就能獲得獎勵。所謂的“猜”,就是利用挖礦設備去進行哈希碰撞,簡單來說就是一串串字符去試。試出來了,就成功了。現在有的挖礦設備,大概每秒可以試14萬億次,也就是每秒進行14萬億次的哈希碰撞。理論上,你試的次數越多,成功的幾率越大。
5、前一區塊的哈希值:前一個區塊,對當前這個區塊來說就是“父區塊”。為什么區塊鏈不可篡改?就是因為每一個區塊都包含前一個區塊的哈希值。如果有一個信息改了,那么此后每個區塊的哈希值都要重新計算,這幾乎是不可能實現的。
6、默克爾根:這個就是剛才提到的,由區塊主體計算得出的哈希值。
至此,區塊頭和區塊體的信息就介紹完全。當所有的信息都明確之后,整個區塊會再進行一次哈希計算,得到一個哈希值,放到下一個區塊里,這個哈希值就是所謂的“父區塊哈希值”了。
從設計角度來,區塊體和區塊頭的緊密連接,區塊頭和父子區塊的前后配合,各個節點環環相扣,實現了一個堅不可摧的鏈條。對區塊鏈研究的越深,越能體會到它的強大之處,各種巧妙的思想讓人嘆為觀止。
如果你想學習更多的區塊鏈知識,可以持續關注我們。
《Web3知識120問》是由識鏈大學出品的Web3科普系列文章,致力用108篇輕松易懂的文章解釋抽象的Web3概念,幫助大家清楚理解Web3,辯析Web3。
國內領先的Web3.0倡導者