區塊鏈二:比特幣的區塊數據結構

比特幣的區塊數據結構

本文介紹區塊鏈的區塊數據結構。先看看區塊的結構示意圖:

區塊結構示意

在這裏插入圖片描述

區塊分Header 和 body,header是元數據,包含版本號,前一塊的hash值,隨機數,目標Hash。 Body是交易記錄,交易記錄都以merkel樹狀結構存儲,交易記錄在葉子節點,父子節點其子節點的hash值。

具體的字段與結構

數據項 描述 長度
Magic No(魔法數) 0xD9B4BEF9 (固定不變) 4字節
Blocksize (塊大小) 到區塊結束的字節長度 4字節
BlockHeader 塊頭 包含六個字段 80字節
TransactionCount 交易數量 正整數 1~9字節
Transaction 交易 交易列表 交易數量決定

表格1 區塊結構字段

數據項 描述 長度
Version 區塊版本號 4字節
HashPreBlock 前一區塊的Hash值256位 32字節
HashMerkleRoot 塊交易記錄的MerkleRoot節點的hash 256字節
Time 時間戳 4字節
Bits 壓縮格式當前 4字節
Nonce隨機數 從0開始的32位數 4字節

表格2 區塊Heaer結構字段

Header有幾個字段特別強調,
HashPreBlock:這個是這區塊上一個塊的hash值,這樣讓區塊組成鏈,若前面區塊值被修改,很容易通過hash值驗證出來,這保證歷史的區塊內容不可變。
Bits:控制挖礦的難度,要求計算出來的Hash值必須小於或等於這個目標Hash值,所以目標Hash值越低,計算匹配難度越高。
Nonce隨機數:挖礦就是通過修改隨機數,讓整個區塊的hash值能滿足目標hash值的要。

區塊的創建

程序取當前區塊鏈的最新一區塊作爲新建區塊的前一hash,時間戳組成header, 交易交易列表按優先級入塊以Merkeltree存放,最後的Merkle 節點Hash,最後通過隨機數,計算出來的滿足條件的Hash值

挖礦:
有了上面的結構和理解,就很容易理解挖礦做的是什麼了。挖礦就是不斷嘗試隨機數,讓區塊的hash值能小於或等於目標hash值的,而挖礦到現在變得越來越專業,私人完全沒機會,大礦主將隨機數任務拆分,多節點計算,原來每個節點獨自挖坑變成一個礦場的多個礦工協同,礦場則越來越集中。諷刺的是,比特幣希望是去中心化,但挖礦卻必須集中化才能勝出。 所以理想很豐滿,現實卻很骨感,能發揮生產力最大效率,獲得最大利益的的纔是王道。

區塊鏈一 :區塊鏈應用介紹和展望

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章