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

Merkle Tree 和 Merkle Patricia Tree
Merkle Tree 中,葉子節點為保存的數據值。形成過程如下:
- 葉子節點經過哈希計算得到哈希值。
- 將哈希值兩兩結合計算哈希值。
- 重復步驟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 保存。外部賬戶來說,是空字符串的哈希值。
比特幣交易過程
參考 【區塊鏈整理】二、比特幣交易腳本 中 腳本執行步驟 內容。
參考資料:
《區塊鏈原理及技術應用》——趙其剛
