区块链大学区块链研习社区块链

『学概念找员外』哈希指针

2018-12-21  本文已影响1人  刘员外__

在了解了哈希函数的三个特性极其用途之后,我们就该开始学习实际中的使用了。提到区块链就不得不说这个防篡改技术,也就是某个已经生成的区块,里面的数据在后期有没有被人更改过。具体如何识别,就需要用到哈希指针技术了。

概念

哈希指针就是一个指向数据存储位置,以及该存储位置里面的数据的哈希值的指针。

在普通计算机数据库里面,一个普通的指针只可以告诉开发者这个数据的位置。但是哈希指针就厉害了,不仅可以告诉你数据存储的位置,还可以给你一种方式,让你自己去验证已经存储好的数据有没有被篡改过。

应用过程

我们熟知的区块链,其实就是一个个的哈希指针构建而成的链表结构,如图所示:

链表.png

从图中可以看到,这个数据链表就是由一个个的区块相连而成的,连接部分就是一个个的哈希指针。每一个区块里面有属于自己的数据,同时还有一个指向上一个区块的指针,这就是哈希指针了。就好像把编好号的珠子一个个的按照顺序串起来一样,按照珠子的排序,我们就可以依次找出这个珠子所在位置的上一个珠子的编号是多少。在区块链中也是这样,我们可以根据这个区块上面的哈希指针找到上一个区块的值在哪里,还有上一个区块中的哈希值是多少,然后依据这个哈希值来检验区块里面存储的内容有没有被篡改。

创世区块

如果真的有人想要去篡改区块中的数据呢?有什么方法能不被发现吗?我们先假设这个人有极非常雄厚人力物力财力,如果他想要篡改的话,那么他肯定是不想让其他人发现且被验证出来的。假设他改了一个区块 A 里面的数据,那么这个 A 区块的下一个区块的哈希值将不会再与这个 A 区块相匹配,这就可以让他人发现数据发生变化了。然后这个人为了不被发现,就会去继续改动下一个区块的哈希值来掩盖这次篡改。然后他就必须这么一直改下去。最后当他改到这个区块链表的头部时,这个策略就会失败。因为只要我们将链表头部的哈希指针存储在对无法改动的地方,对手将不能做到在不被检测到的前提下,篡改任何区块。

所以,我们可以只通过记住一个哈希指针,就基本记了整个链表的防篡改哈希值。因此,我们可以搭建一个包含很多区块的区块链网络,链头部的哈希指针就被称作创世区块 (genesis block)。

上一篇下一篇

猜你喜欢

热点阅读