当前位置:首页 > 知识 >

区块链技术的哈希指针

Hello,大家好,我们第三期的区块链技术分享来啦,那么话不多说,我们开始吧。

提起区块链,大家可能都会提到:不可篡改。但是为什么区块链不可篡改呢?先给出答案,这与区块链的数据结构哈希指针和默克尔树有关。那么我们今天先分享哈希指针相关的内容。

01那些年学过的链表

区块链,顾名思义也是链,学过计算机数据结构的朋友都知道,数据结构里面有一种就是链表。那么区块链是什么链表?

结构体和链表属于计算机专业的基础课程。但是工作久了,提起来可能大家反应都是:要理解链表,我们用一个简单的例子来说明,假设你在北京、西安、上海、杭州分别有一套房。但是你只有北京房子的地址,剩下房子的地址分别在其他房间中放着。你根据北京房子的地址找到北京的房子,知道了北京房子的情况,而且里面有一张条,放着上海房子的地址;同样,你根据这个地址,找到上海的房子,也看到了上海房子的情况,并且还有一张条,放着西安房间的地址;以此类推,直到你找到了杭州的房子,是你的最后一套房子,那么存地址的那张条上就为空。上面的例子就是链表中单链表的例子。

链表通过指针在不连续的内存空间进行跳转,以此实现可动态扩展的特性。

在上面的例子里面,存储下一个房子地址的纸条就是指针,代表下一个房子所在的地址;

不连续的空间大家很好理解,就像你的房子在北京、上海、西安、杭州一样,地理位置是不连续的。

链表不可随机访问,只能顺序访问。

从上面的例子也能看到,你只能从北京的房间开始访问,因为你手里只有北京的地址。

普通的指针,指向的是结构体在内存中的地址。

那么区块链中用到的哈希指针是什么意思呢?既然是指针,肯定是地址,那么哈希指针除了要保存结构体的位置之外,还要保存结构体的哈希值。

02哈希指针和哈希链表

那么为什么要使用哈希指针呢?

最主要的作用,除了能找结构体,还能够防止被指向地址内的数据被篡改。

用哈希指针连接的链表,叫哈希链表(hashlist)。

还是用你的那四套房举例子。北京、上海、西安、杭州。比如一个正常的哈希链表就好比上面这张图,由四个节点组成。

节点4的地址可以是随便的,因为他后面已经没有节点了,

节点4也就是杭州房子的节点跟数据组合后,计算出哈希值,把这个哈希值就赋值给节点3即西安的房子,这样西安房子节点中的地址就指向了节点4杭州的房子;

同样节点3也就是西安房子的节点跟数据组合后,计算出哈希值,把这个哈希值就赋值给节点2即上海的房子,这样上海房子节点中的地址就指向了节点3西安的房子;

同理节点2也一样;

接着,节点1跟数据组合后,再计算出哈希值,把这个哈希值赋值给北京房子的地址,北京房子的地址就指向

猜你喜欢

关注我们

微信二维码

微信