区块链技术与应用【肖臻老师】笔记整理之------03-BTC-数据结构
作者:互联网
注:没有全部复原,抽取了主体知识,加入了一些自己的理解,强烈建议去学习肖臻老师的课程,
这绝对算得上是国内区块链讲解的顶级教程,纯学术和技术
Blockchain is a linked list using hash pointers.区块链就是一个使用哈希指针的链表。
哈希指针
理解一下哈希指针和普通指针的区别
指针我们都知道是指向存储数据的位置。
哈希指针,就是一个指向数据存储位置,以及该存储位置里面的数据的哈希值的指针,区别就在于多了一个数据的哈希值存储,
一个普通的指针可以告诉你数据存储的位置,而哈希指针不但可以告诉你数据存储的位置,还可以让你验证数据没有被篡改过[哈希函数的特性]
如上图,一个哈希指针包含了一段数据的位置和这段数据原始的哈希值
这样,区块整体形成一个链接,像洋葱一样,想要改某一层必须将其他层剥离。
Merkle Tree(默克尔树)
Merkle Tree本质是一颗二叉树,它没有搜索树,排序树等多余特性,就是将各个区块的Hash值进行一层一层的存储,最后到达顶层是一个root hash,根哈希。
Block header里面存储了root header
一个区块里所有的交易组成的Merkle Tree最后生成的root hash存在block header
Block header里面没有交易的具体内容,只有一个根哈希值
Block body里面是有交易的列表的
Merkle Tree的用途:
提供Mekle Proof;如果某一个交易出现问题或者轻节点有什么疑问,全节点不需要去遍历整棵树,而是沿着路径一点点排查就可以自上而下找到出问题的Hash值进而定位出有问题的区块。
标签:03,存储,肖臻,BTC,Tree,header,哈希,区块,指针 来源: https://blog.csdn.net/qq_38123961/article/details/116190848