BTC的数据结构Merkle Tree和Hash pointer

比特币是一种基于区块链技术的加密数字货币,其底层数据结构被设计为分布式,去中心化的。它的核心数据结构是一个链式的区块,每个区块都包含了多笔交易记录和一个散列值。

比特币的底层数据结构使用了两个关键概念:hash pointer和 Merkle Tree

  • Hash pointer

在介绍hash pointer之前,先回顾下普通的指针。

在程序运行过程中,需要用到数据。最简单的是直接获取数据,但当数据本身较大,需要占用较大空间时,明显会造成一定麻烦。因此,可以引入指针这一概念。当需要获取数据时,只需要按照指针所给的地址,去对应的位置读取数据即可,这样大大节省了内存空间。

这个很好理解。

哈希指针是用于链接数据块并保证其数据的完整性。每个数据块的哈希值包含其上一个数据块的哈希值,因此如果对数据块进行修改,哈希值也会发生变化,其他节点就可以检测到不匹配并防止任何对历史数据的篡改。

图片

例如,我篡改了第一个区块中的数据,那么第二个区块的H()的值就会变,像多米诺骨牌一样,最终会传导到最后一个区块,所以你只需要记住最后一个区块的hash值,就可以知道前面的区块是否被篡改过。

从这里也不难看出,区块链和普通的单向链表最大区别是,区块链使用的是hash pointer来链接两个区块。

  • Merkle Tree

Merkle Tree翻译为默克尔树,是一种树形数据结构,和普通的tree相比,就是使用了哈希指针来代替普通的指针。

如下:为一个简单的Merkle Tree,其中A、B、C、D为数据块。A和B各有一个哈希值,将其合并放在一个节点中,C和D同样操作,而后,针对得到的两个节点分别取哈希,又可以得到两个新的哈希值,即为图中根节点。实际中,在区块块头中存储的是根节点的哈希值(对其再取一次哈希)。

图片

该数据结构的优点在于:

只需要记住Root Hash(根哈希值),便可以检测出对树中任何部位的修改。

  • 总结

比特币中网络节点是分为全节点轻节点的,绝大多数的节点都是轻节点,轻节点只需要保存块头的数据,也就是上图中的Root Hash,而不需要存储ABCD节点的数据。轻节点的数据验证就很简单了。

当需要向轻节点证明某条交易是否被写入区块链,便需要用到Merkle proof。我们将交易到根节点这一条路径称为Merkle proof,全节点将整个Merkle proof发送给轻节点(如下图所示),轻节点即可根据其算出根哈希值,和自己保存的对比,从而验证该交易是否被写入区块链。只要沿着该路径,所有哈希值都正确,说明内容没有被修改过。

图片

总之,哈希指针和 Merkle 树是比特币块链数据结构的两个重要组成部分,它们为比特币提供了安全可靠的数据管理方式,极大地提高了比特币的可靠性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/354010.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

01 Redis的特性+下载安装启动+Redis自动启动+客户端连接

1.1 NoSQL NoSQL(“non-relational”, “Not Only SQL”),泛指非关系型的数据库。 键值存储数据库 : 就像 Map 一样的 key-value 对。如Redis文档数据库 : NoSQL 与关系型数据的结合,最像关系…

AP3464 车充 适配器IC 4-30V 2.4A 同步降压驱动器

AP3464 是一款支持宽电压输入的同步降压电源管理芯片,输入电压 4-30V 范围内可实现2.4A 的连续电流输出。通过调节 FB 端口的分压电阻,设定输出 1.8V 到 28V 的稳定电压。AP3464 具有优秀的恒压/恒流(CC/CV)特性。AP3464 采用电流模式的环路控制原理&…

Spring5深入浅出篇:Spring中ioc(控制反转)与DI(依赖注入)

Spring5深入浅出篇:Spring中ioc(控制反转)与DI(依赖注入) 反转(转移)控制(IOC Inverse of Control) 控制:对于成员变量赋值的控制权 反转控制:把对于成员变量赋值的控制权,从代码中反转(转移)到Spring⼯⼚和配置⽂件中完成好处:…

基于YOLOv8的摄像头吸烟行为检测系统(Python源码+Pyqt6界面+数据集)

💡💡💡本文主要内容:详细介绍了摄像头下吸烟行为检测系统,在介绍算法原理的同时,给出Pytorch的源码、训练数据集以及PyQt6的UI界面。在界面中可以选择各种图片、视频进行检测识别,可进行置信度、Iou阈值设定…

Pandas.Series.mode() 众数 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本: 本文基于 pandas2.2.0 编写。 关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。 传送门: Pandas API参考目录 传送门: Pandas 版本更新及新特性 传送门&…

LeetCode---122双周赛

题目列表 3010. 将数组分成最小总代价的子数组 I 3011. 判断一个数组是否可以变为有序 3012. 通过操作使数组长度最小 3013. 将数组分成最小总代价的子数组 II 一、将数组分成最小总代价的子数组I 这道题纯纯阅读理解题,关键在于理解题意。注意:第一…

Go语言基础之单元测试

1.go test工具 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具。 go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的源代码文件都是go …

【时间安排】

最近刚刚回到家,到家就是会有各种事情干扰,心里变乱人变懒的,而要做的事情也要继续,写论文,改简历,学习新技能。。 明天后天两天写论文改简历 周一(早上去城市书房,可能吵一点戴个耳…

Java 的反射学习总结

一、什么是反射? 反射是指在运行时动态地获取、检查和修改类或对象的信息的能力,不需要在编译时知道类的具体细节。 二、如何获取类对象? 三、如何通过类对象来创建类的对象? 四、类对象获取类构造器的方式 通过获取私有构造器创…

招聘网站简单爬虫_24.1.26

完整程序传送门 24.1.26 前些天接了一个大两届的师兄的小活,做了一下爬boss直聘岗位信息的程序,在这里记录一下 程序框架 定义一个名为paQu的接口函数,用于检查窗口的输入,它接受一个参数self,获取self对象的a属性&am…

vmware-VCSA6.0部署

下载vcsa的iso包,解压后首先安装VMware-ClientIntegrationPlugin-6.0.0-6823256.exe 如果不配置域名配置成ip地址也可以 https://172.16.51.202/

1948-2022年金融许可信息明细数据

1948-2022年金融许可信息明细数据 1、时间:1948-2022年 2、来源:银监会(银监会许可证发布系统) 3、指标:来源表、机构编码、机构名称、所属银行、机构类型、业务范围、机构住所、地理坐标、行政区划代码、所属区县、…

Cloudreve的部署、迁移与新增离线下载节点

如果你是一个万物皆想编译的大佬,那么可以参考这里的官方文档: 构建 - Cloudreve 我们以使用官方提供的已编译的二进制文件部署为例 首先需要购买一台服务器,推荐使用美国等境外服务器,配置1核1G即可,但推荐2核2G Cl…

C++this指针

我们由一个题目引入&#xff1a; class Date { public:void Init(int year2024, int month1, int day27){_year year;_month month;_day day;}void Print(){cout << _year << "-" << _month << "-" << _day << en…

阿里云推出第八代企业级实例 g8i:AI 推理性能最高提升 7 倍、可支持 72B 大语言模型

云布道师 1 月 11 日&#xff0c;全球领先的云计算厂商阿里云宣布推出第八代企业级通用计算实例 ECS g8i&#xff0c;这也是国内首款搭载第五代英特尔至强可扩展处理器&#xff08;代号 EMR&#xff09;的云计算产品。依托阿里云自研的「飞天CIPU」架构体系&#xff0c;ECS g8…

分布式事务入门,最终一致性方案

分布式事务 回顾分布式事务 上篇内容我们说到了分布式事务的基本内容&#xff0c;讲到了分布式事务的实现主要有事务协调以及最终一致性两件事情来完成整个逻辑。 那么上个文章我们说过了 2PC、3PC、XA 三种协调事务的协议&#xff0c;这次我们来说事务协调处理完成后&#x…

node.js 分布式锁看这篇就够用了

Redis SETNX 命令背后的原理探究 当然&#xff0c;让我们通过一个简单的例子&#xff0c;使用 Redis CLI&#xff08;命令行界面&#xff09;来模拟获取锁和释放锁的过程。 在此示例中 获取锁: # 首先&#xff0c;设置锁密钥的唯一值和过期时间(秒) 127.0.0.1:6379> SET …

小型商用机器人,如何做到小而强?

兼顾体型和性能。 体型和性能的矛盾 一直以来&#xff0c;商用清洁机器人的应用场景主要集中在大型商场、超市、写字楼等&#xff0c;为什么1000平米以下的小型商超等中小场景却很少涉足&#xff1f;原因可以说有很多&#xff0c;但核心为两方面&#xff0c;一方面&#xff0…

2024幻兽帕鲁服务器,阿里云配置

阿里云幻兽帕鲁服务器Palworld服务器推荐4核16G配置&#xff0c;可以选择通用型g7实例或通用算力型u1实例&#xff0c;ECS通用型g7实例4核16G配置价格是502.32元一个月&#xff0c;算力型u1实例4核16G是432.0元/月&#xff0c;经济型e实例是共享型云服务器&#xff0c;价格是32…

Metaphor(EXA) 基于大语言模型的搜索引擎

文章目录 关于 Metaphor使用示例 关于 Metaphor Metaphor是基于大语言模型的搜索引擎&#xff0c;允许用户使用完整的句子和自然语言搜索&#xff0c;还可以模拟人们在互联网上分享和谈论链接的方式进行查询内容。 Metaphor同时还能与LLMs结合使用&#xff0c;允许LLMs连接互联…