区块链基础知识笔记(2) -- 哈希指针及数据结构

哈希指针
哈希指针是一种数据结构,是一个指向数据存储位置及其位置数据的哈希值的指针。一个普通指针只能告诉你数据的位置,哈希指针除了告诉你数据位置,还提供一种方法让你验证数据是否被篡改过。

区块链
通过哈希指针构建的链表,就称为区块链。区块链中的区块中包含了上一个区块的哈希指针,即可以指向上一区块的位置,也可以验证上一个区块有没有被修改
区块链基础知识笔记(2) -- 哈希指针及数据结构

区块链的一大特性就是防篡改。以上图为例,最左边的区块数据如果被篡改,那么它右边区块存储的哈希指针就可以检测出最左边区块的数据被修改了,为了掩饰修改,篡改者不得不修改中间那个区块,以保证中间区块的哈希指针不能检测到左边区块的修改。但问题又来了,最右边的区块保存了中间区块的哈希值,此时篡改者会碰到障碍,第一个区块,也称为创世块,没有比创世块更早的区块了,只要创世块保证不被修改,那么篡改者最终无法篡改区块链数据,任何篡改都会被发现。创世块通常会写死在代码里,攻击者无法修改创世块内容。如果修改代码来达到改变创世块的目的,那么,这个区块链本身与修改之前那个已经完全没有关系了,成为了单独的另一个链,篡改者并没有达到目的。

梅克尔树
梅克尔树是利用哈希指针创建的二叉树。假设我们有很多包含数据的区块,将这些区块两两分组,然后为每一组建立一个有两个哈希指针的数据结构,每个指针都指向一个区块,再将两个哈希指针的数据结构两两分组,重复这个过程,直到我们得到一个单节点,这就是树的根节点。
区块链基础知识笔记(2) -- 哈希指针及数据结构

与区块链相同,我们只需要记住根节点,便可以回溯整个梅克尔树,并可以检测数据是否被修改过。而二叉树的搜索效率约为log(n),查询一笔交易并不需要检测整个树,只需要检测与被检测对象相关的数据块即可。

简单介绍了一下哈希指针和梅克尔树,希望对大家能有帮助
有兴趣的朋友可以加群讨论,一起学习 701477586

参考资料
《区块链技术驱动金融》