【區塊鏈整理】四、區塊鏈數據結構


哈希指針

對前一個區塊做哈希計算得到的哈希值,包含在當前區塊當中作為引用。

Merkle Tree 和 Merkle Patricia Tree 

Merkle Tree 中,葉子節點為保存的數據值。形成過程如下:

  1. 葉子節點經過哈希計算得到哈希值。
  2. 將哈希值兩兩結合計算哈希值。
  3. 重復步驟2,直到得到 Root 節點。

了解 Merkle Patricia Tree 之前,除了了解 Merkle Tree 以外,還需要知道 Trie (字典樹、前綴樹)以及 Patricia Tree 相關知識。

Merkle Patricia Tree 中包含三種節點:擴展節點、分支節點、葉節點。官方示意圖如下:

Merkle Tree 應用場景

Merkle Tree 應用最多的地方是數據的比對和完整性校驗。如 TX4 值發生了改變:

1. 首先對根節點 Root 進行對比,不一致即表示數據發生篡改行為。

2. 分別對 H12、H34 進行比較,此時 H34 不一致。

3. 分別對 H3、H4 進行對比,最終發現 H4 哈希值不一致。

簡略的區塊鏈結構示意圖

區塊頭包含的內容及意義

Previous Hash:前一區塊頭哈希值。

Version:當前區塊版本。

Target:挖礦難度。

Nounce:比特幣中為隨機數,用來不斷嘗試進而得到滿足挖礦難度的哈希值;以太坊中存在不同的結構上,包含 nounce 含義不同。狀態數中外部賬戶情況下代表為此賬戶地址發送的交易序號,合約賬戶表示為此賬戶創建的合約序號;交易樹中代表交易者發送交易數的計數;

以太坊中包含的三種 MPT 結構樹

1. 狀態樹

存儲整個區塊鏈當前所有賬戶的狀態數據

2. 交易樹

存儲在本區塊中發生的所有交易的數據。

3. 收據樹

存儲在本區塊中發生的所有收據的信息。包括:區塊序號、區塊哈希值、交易哈希值、當前交易使用的 Gas、當前交易執行完當前區塊使用的累計 Gas、執行交易創建的日志等。

以太坊賬戶狀態包括哪些內容

nounce:外部賬戶情況下代表為此賬戶地址發送的交易序號,合約賬戶表示為此賬戶創建的合約序號。

balance:此地址擁有的以太幣數量。

storageRoot:Merkle Tree 根節點哈希值。默認值為空。

codeHash:此賬戶以太坊虛擬機代碼的哈希值。對於合約賬戶,就是被哈希的代碼作為 codeHash 保存。外部賬戶來說,是空字符串的哈希值。

比特幣交易過程

參考 【區塊鏈整理】二、比特幣交易腳本 中 腳本執行步驟 內容。

 

參考資料:

《區塊鏈原理及技術應用》——趙其剛


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM