肖臻老师区块链视频笔记(BTC-p3比特币的数据结构)

哈希指针(hash pointers)

通过哈希指针不只能找出结构体的位置,同时可以检测结构体出有没有被篡改。

肖臻老师区块链视频笔记(BTC-p3比特币的数据结构)

Merkle tree

Merkle tree用哈希指针代替了binary tree中普通指针

肖臻老师区块链视频笔记(BTC-p3比特币的数据结构)

1)每个区块分为两部分:块头(block header)和块身(block body)

block header:这个区块所包含的所有交易组成的Merkle tree跟哈希值存在block header里的,但是没有具体的交易内容,只有哈希值

block body:有交易列表

2)Merkle tree 的作用:提供Merkle proof,比特币中结点有两类,一类是轻结点(只保存block header),还有一类是全节点(block header,block body里面的交易信息)

轻节点查交易:用到Merkle proof,假设某个轻节点想知道黄色部分的交易是不是被包含在了这棵Merkle tree里面,这个轻节点没有保存交易列表,没有这棵Merkle tree的具体内容,只有一个根哈希值,根哈希值是保存在block header里面的。全节点收到Merkle proof之后,只要把图中三个红色的哈希值发给轻节点,有了这三个哈希值之后,轻节点可以计算出图中绿色节点的哈希值,首先算出黄色交易的哈希值,然后把旁边红色的哈希值拼接起来,可以算出上面的绿色的哈希值(上面也是这么计算),最后算出根哈希值比对。

肖臻老师区块链视频笔记(BTC-p3比特币的数据结构)

3)除此以外,无环的都可以用哈希指针。