首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块链中的哈希指针及数据结构

哈希指针是一种数据结构,确切地说,是一个指向数据存储位置的指针,同时也是位置数据的哈希值。哈希指针除了包含通常的指针外,还包含一些数据信息以及与这些信息相关的密码哈希值,这就使得正常的指针可用于取回信息,哈希指针用于验证信息是否发生改变。哈希指针不但可以告诉你存储的位置,并且还可以验证数据没有被篡改过。

区块链可以看作一类使用哈希指针的链表(如下图所示)。 这个链表连接一系列的区块,每个区块包含数据和指向表中前一个区块的指针。区块链中,前一个区块指针由哈希指针所替换,因此每个区块不仅仅告知前一个区块的位置,也提供一个哈希值去验证这个区块所包含的数据是否发生改变。

使用区块链技术可以构造一个防篡改的日志系统,在系统中,日志节点链表用来储存数据,链表节点通过哈希指针来连接,新节点则追加在该日志链表的尾部。并且,日志链表的头部和哈希指针指向的头部的节点内容不可改变。如果日志中的某个数据被篡改,那么篡改后的数据与后一个区块的哈希指针不匹配,系统可以检测出。因此,只要我们保存好链表最后的那个哈希指针,就一定能发现是否有人篡改了区块数据。(如下图)

假定攻击者改变了节点k的数据,由于其后继节点k+1存储了节点k的哈希值,密码哈希函数的抗碰撞性,使其通过简单计算节点k数据的哈希值,就能发现计算结果与节点k+1的哈希指针值不一致,因此可断定节点k或节点k+1的信息被篡改。当然也存在一种可能性,攻击者连续改变前一个节点的哈希值来掩盖不同。但这个策略在处理日志链表的头节点时将会失败,尤其是一旦将链表头部的哈希指针存储在不能改变的地方,攻击者将不可能改变任何节点而不被发现。

因此,若攻击者想在日志链表中的任意位置改变数据,为保持一致性,他必须沿链表头部方向修改所有的哈希指针,最终会因无法改变链表头部而失败。因此,只需单个哈希指针,基本上就能保证整个链表的哈希值的一致性,从而达到防篡改的目的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190117A0K4CW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券