区块链技术与应用——学习笔记(二)

比特币的数据结构

Hash pointers:除了存储指针所指结构体的地址外,还要保存这个结构体的hash值。

       好处:通过这个hash指针,不仅可以找到这个结构体的位置,同时还可以检测该结构体的内容是否被篡改。

1.区块链

比特币中一个最基本的数据结构就是区块链。

区块链:一个一个区块组成的链表。

与普通链表的区别:

              用hash指针代替了普通的指针。(改变前面的任一区块,都会影响到系统保存的最后一个区块的hash值,从而可以检测整个区块链是否被篡改;有些结点就可以不必保存所有区块的信息)

2.Merkle tree

比特币中的另一个数据结构是merkle tree。

  • Merkle tree与binary tree的区别:

       用hash指针代替了普通指针

  • Merkle tree好处:

只要记住root hash就可以检测出对树中任何部位的修改。

Notes:

比特币当中各个区块之间用hash指针连接在一起,每个区块所包含的交易组织成一个merkle tree的形式。

每个块分为两部分,分为块头和块身。这个区块所包含的所有交易组成的merkle tree的root hash存在块头里,但块头里没有交易的具体内容,块身里有交易列表。

  • Merkle tree用途:

       提供merkle proof。

       以下图为例说明过程:

假设一个轻结点想要知道黄色这个交易是否被包含在其merkle tree里,这个轻结点向某个全结点发出请求,请求一个能够证明黄色这个交易被包含在merkle tree里的merkle proof,全结点收到这个请求后,只需把标为红色的三个hash值发给轻结点即可,有了这三个红色的hash值,轻结点就可以在本地计算出绿色的hash值,最终可以算出root hash,与块头里的root hash比较一下,就可以知道黄色交易是否包含在merkle tree里。

(比特币中的结点分为两类:全结点:保存整个区块的内容;轻结点:只保存块头)

区块链技术与应用——学习笔记(二)_第1张图片

(图片来源于学习视频)

学习视频:https://www.bilibili.com/video/av37065233?p=3

 

你可能感兴趣的:(区块链技术与应用——学习笔记(二))