区块链的基础数据结构

简介: 区块链的基础数据结构

我们应该都对普通链表比较熟悉。链表中有许多个节点,节点之间通过指针保持连接。


指针指的是一个节点对象在内存中的首地址

image.png

顾名思义,区块链也是一种链表结构,不过它与普通链表不同的地方在于,连接节点的指针是哈希指针,哈希指针包含两个部分,一是其指向节点所占用内存的首地址,二是其指向节点所有内容的哈希值

image.png

如果其指向的节点内容发生了任何变化,那么哈希指针的哈希值也会发生变化。这样,我们就可以轻松感知到节点中的内容是否被修改。


可以用下图表达一个区块链

image.png

如图所示,哈希指针中的哈希值,是对应节点的全部内容算出来的哈希值。这里的全部内容自然也包括指向下一个节点的哈希指针,因此,当其中一个节点内容发生变化时,会导致上一个节点的哈希指针发生变化,也就意味着,上一个节点内容也发生了变化。


这样的影响是持续不断的,直到根节点。

image.png

任何节点的变化,最终都会导致根节点的哈希指针发生变化。因此,我们只需要在系统中记录根节点的变化,就可以感知并找到具体是哪一个节点发生了变化。


我们可以分析出这样的链表结构的一些特性。


任何一次变动都会牵一发而动全身,因此效率是非常低下的。但是他能够准确的记录每一次改动。因此这样的结构对于需要记录变动和防止篡改的场景非常有用


也正是由于这个特性,我们只需要在每个节点上保存好根节点的哈希值到底是多少,那么对于个人节点而言,就不需要完整的保存链上的所有的节点内容,只需要保存常用的附近几千个节点即可。


接下来一章,我们进一步介绍基于这种数据结构,如何做到分布式,以及会面临什么样的问题

相关文章
|
2月前
|
消息中间件 存储 Java
数据结构之 - 深入探析队列数据结构: 助你理解其原理与应用
数据结构之 - 深入探析队列数据结构: 助你理解其原理与应用
40 4
|
7月前
|
搜索推荐 算法 测试技术
数据结构:一篇拿捏十大排序(超详细版)
数据结构:一篇拿捏十大排序(超详细版)
56 0
|
7月前
|
算法 程序员 C语言
速学数据结构 | (超级干货)业界程序员公认的实现栈最简单的方法!太简单了
速学数据结构 | (超级干货)业界程序员公认的实现栈最简单的方法!太简单了
42 0
|
算法
408王道数据结构强化——算法题(一)
408王道数据结构强化——算法题
384 1
408王道数据结构强化——算法题(一)
|
算法
410王道数据结构强化——算法题(三)
410王道数据结构强化——算法题
165 1
410王道数据结构强化——算法题(三)
|
算法
409王道数据结构强化——算法题(二)
409王道数据结构强化——算法题
136 1
409王道数据结构强化——算法题(二)
|
存储 算法 搜索推荐
408王道数据结构强化——应用题(三)
408王道数据结构强化——应用题
315 1
408王道数据结构强化——应用题(三)
|
存储 缓存 算法
夯实基础,常见的数据结构
数据结构内容很多,早在 1968 年就被作为一门独立的课程在大学中设立。我们引入数据结构的基本介绍,不求面面俱到,旦求要点尽有,可作初学构建印象、或温习梳理体系的用处。