区块链技术中的数据结构

简介: 比特币中的数据结构

比特币的数据结构
普通指针存储的是某个结构体在内存中的地址。假如P是指向一结构体的指针,那么P里面存放的就是该结构体在内存中的起始位置。而哈希指针除了要存地址之外,还要保存该结构体的哈希值H()。好处是:从哈希值这个哈希指针,不仅可以找到该结构体的位置,同时还能够检测出该结构体的内容有没有被篡改,因为我们保存了它的哈希值。

比特币中最基本的结构就是区块链,区块链就是一个一个区块组成的链表。区块链和普通的链表相比有什么区别:
①用哈希指针代替了普通指针(B block chain is a linked list using hash pointers)

区块链第一个区块叫作创世纪块(genesis block) 最后一个区块 是最近产生的区块(most recent block) 每一个区块都包含指向前一个区块的哈希指针
一个区块的哈希指针怎么算:是把前面整个区块的内容,包括里面的hash pointer ,合在一起取哈希值。通过这种结构,可以实现tamper-evident log。如果有人改变了一个区块的内容,后面一个区块的哈希指针就对不上,因为后一个区块哈希指针是根据前一个区块的内容算出来的,所以后一个哈希指针也得改,以此类推,我们保留的是最后一个哈希值也会变化
②普通链表可以改变任意一个元素,对链表中其他元素是没有影响的。而区块链是牵一发而动全身,因为只需要保存最后一个哈希值,就可以判断区块链有没有改变,在哪里改变了。
因此比特币没有要保存所有区块的内容,可以只保留最近的几千个区块。如果要用到以前的区块,可以向系统中其他节点要这个区块。有些节点是有恶意的,怎么判断?这里要用到哈希值一个性质,如下:
其他节点给你一个区块,如何判断它是正确的?算出它的哈希值,与保留的区块的哈希值对比,即可。

目录
相关文章
|
2月前
|
索引
数据结构界的幻神(First)----链表
数据结构界的幻神(First)----链表
156 37
|
9月前
|
存储 算法 Java
数据结构:八大常用数据结构
数据结构是计算机存储、组织数据的方式;通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构的优良将直接影响着我们程序的性能;常用的数据结构有:数组(Array)、栈(Stack)、队列(Queue)、链表(Linked List)、树(Tree)、图(Graph)、堆(Heap)、散列表(Hash)等;
18800 14
|
24天前
|
机器学习/深度学习 算法
数据结构小实践
【4月更文挑战第13天】数据结构小实践
32 1
|
28天前
|
存储 算法 搜索推荐
浙江大学数据结构陈越 第一讲 数据结构和算法
浙江大学数据结构陈越 第一讲 数据结构和算法
49 1
|
4月前
|
区块链
区块链的基础数据结构
区块链的基础数据结构
|
10月前
|
存储 安全 搜索推荐
集合框架及背后的数据结构
集合框架及背后的数据结构
134 1
|
存储 机器学习/深度学习 算法
大数据开发基础的数据结构和算法的数据结构的哈希
在大数据开发中,哈希表是一种经常用到的数据结构。哈希表可以有效地解决查找数据的效率问题,它是一种基于键值对存储数据的数据结构,其中键和值都可以是任意类型的数据。
47 0
|
存储 缓存 算法
夯实基础,常见的数据结构
数据结构内容很多,早在 1968 年就被作为一门独立的课程在大学中设立。我们引入数据结构的基本介绍,不求面面俱到,旦求要点尽有,可作初学构建印象、或温习梳理体系的用处。
|
存储 算法
410数据结构学习强化——常见数据结构定义和算法总结(三)
410数据结构学习强化——常见数据结构定义和算法总结
123 1
410数据结构学习强化——常见数据结构定义和算法总结(三)
|
算法
409数据结构学习强化——常见数据结构定义和算法总结(二)
409数据结构学习强化——常见数据结构定义和算法总结
112 1
409数据结构学习强化——常见数据结构定义和算法总结(二)