0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是默克尔树(Merkle Tree)?如何计算默克尔根?

jf_94171069 来源:jf_94171069 作者:jf_94171069 2024-09-30 18:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

01

默克尔树的概念

默克尔树(Merkle Tree)是一种特殊的二叉树,它的每个节点都存储了一个数据块的哈希值。哈希值是一种可以将任意长度的数据转换为固定长度的字符串的算法,它具有唯一性和不可逆性的特点,即不同的数据块会产生不同的哈希值,而相同的数据块会产生相同的哈希值,且无法从哈希值还原出原始数据。默克尔树的叶子节点存储了数据块本身的哈希值,而非叶子节点存储了其子节点哈希值的组合的哈希值。这样,默克尔树的根节点就包含了所有数据块的哈希信息,可以用来代表整棵树的唯一标识。

02

默克尔树的结构

默克尔树是一种完全二叉树,即每个非叶子节点都有两个子节点,如果数据块的数量不是2的整数次幂,那么就需要复制最后一个数据块来补齐。例如,如果有5个数据块,那么就需要复制第5个数据块来构成6个数据块,然后再复制第6个数据块来构成8个数据块。这样,就可以形成一个4层的完全二叉树.

如下图所示: 在这个例子中,A、B、C、D、E、F、G、H是8个数据块,它们经过哈希函数H得到8个哈希值H(A)、H(B)、H(C)、H(D)、H(E)、H(F)、H(G)、H(H),这些哈希值作为叶子节点。然后,叶子节点两两组合,得到4个中间节点H(H(A)+H(B))、H(H(C)+H(D))、H(H(E)+H(F))、H(H(G)+H(H)),其中+表示字符串连接。再然后,中间节点两两组合,得到2个中间节点H(H(H(A)+H(B))+H(H(C)+H(D)))和H(H(H(E)+H(F))+H(H(G)+H(H)))。最后,这两个中间节点组合得到根节点H(H(H(H(A)+H(B))+H(H(C)+H(D)))+H(H(H(E)+H(F))+H(H(G)+H(H))))。这个根节点就是默克尔根(Merkle Root),它包含了所有数据块的哈希信息。

wKgZomb5BIOAUyZlAABq4c1F4ng416.png

03

默克尔树的作用

默克尔树有以下几个作用: 1.数据完整性验证:通过比较两棵默克尔树的根节点是否相同,可以快速判断两份数据是否完全一致。如果根节点不同,则说明至少有一个数据块发生了变化;如果根节点相同,则说明所有数据块都没有变化。这样可以节省大量的比较时间和空间。 2.数据安全性保护:由于哈希函数的不可逆性,即使知道了默克尔根和部分数据块,也无法还原出其他数据块的内容。这样可以保护数据的隐私和安全。 3.数据有效性证明:通过提供某个数据块及其对应的默克尔路径(Merkle Path),即从该数据块到根节点经过的所有节点的哈希值,可以证明该数据块确实存在于某棵默克尔树中。这样可以避免传输整棵默克尔树,只需要传输默克尔根和默克尔路径即可。

04

默克尔树的应用

默克尔树广泛应用于文件系统和P2P网络中,例如:

1.Git:Git是一种分布式版本控制系统,它使用默克尔树来存储和管理文件的历史版本。每个文件都有一个哈希值,每个目录也有一个哈希值,这些哈希值构成了一棵默克尔树。每次提交(commit)都会生成一个新的默克尔根,作为该提交的唯一标识。这样,可以快速比较不同提交之间的差异,以及验证文件的完整性和有效性。

2.BitTorrent:BitTorrent是一种P2P文件共享协议,它使用默克尔树来分割和校验大文件。每个文件被切分成多个数据块,每个数据块有一个哈希值,这些哈希值构成了一棵默克尔树。每个文件的元数据(metadata)中包含了该文件的默克尔根和数据块的大小。这样,可以在下载过程中验证数据块的完整性和有效性,以及恢复损坏的数据块。

3.Bitcoin:Bitcoin是一种去中心化的数字货币系统,它使用默克尔树来存储和验证交易记录。每个交易都有一个哈希值,这些哈希值构成了一棵默克尔树。每个区块(block)中包含了该区块的默克尔根和交易数量。这样,可以在不传输整个区块的情况下,证明某个交易是否存在于某个区块中,以及验证区块的完整性和有效性。 默克尔树是一种特殊的二叉树,它的每个节点都存储了一个数据块的哈希值。

本文章源自奇迹物联开源的物联网应用知识库Cellular IoT Wiki,更多技术干货欢迎关注收藏Wiki:Cellular IoT Wiki 知识库(https://rckrv97mzx.feishu.cn/wiki/wikcnBvAC9WOkEYG5CLqGwm6PHf)

欢迎同学们走进AmazIOT知识库的世界!

这里是为物联网人构建的技术应用百科,以便帮助你更快更简单的开发物联网产品。

Cellular IoT Wiki初心:

在我们长期投身于蜂窝物联网 ODM/OEM 解决方案的实践过程中,一直被物联网技术碎片化与产业资源碎片化的问题所困扰。从产品定义、芯片选型,到软硬件研发和测试,物联网技术的碎片化以及产业资源的碎片化,始终对团队的产品开发交付质量和效率形成制约。为了减少因物联网碎片化而带来的重复开发工作,我们着手对物联网开发中高频应用的技术知识进行沉淀管理,并基于 Bloom OS 搭建了不同平台的 RTOS 应用生态。后来我们发现,很多物联网产品开发团队都面临着相似的困扰,于是,我们决定向全体物联网行业开发者开放奇迹物联内部沉淀的应用技术知识库 Wiki,期望能为更多物联网产品开发者减轻一些重复造轮子的负担。

Cellular IoT Wiki沉淀的技术内容方向如下:

wKgaombqoM2AYL2RAAQrZ8e-uz8392.jpg

奇迹物联的业务服务范围:基于自研的NB-IoT、Cat1、Cat4等物联网模组,为客户物联网ODM/OEM解决方案服务。我们的研发技术中心在石家庄,PCBA生产基地分布在深圳、石家庄、北京三个工厂,满足不同区域&不同量产规模&不同产品开发阶段的生产制造任务。跟传统PCBA工厂最大的区别是我们只服务物联网行业客户。

连接我们,和10000+物联网开发者一起 降低技术和成本门槛

让蜂窝物联网应用更简单~~

哈哈你终于滑到最重要的模块了,

千万不!要!划!走!忍住冲动!~

欢迎加入飞书“开源技术交流”,随时找到我们哦~

点击链接如何加入奇迹物联技术话题群(https://rckrv97mzx.feishu.cn/docx/Xskpd1cFQo7hu9x5EuicbsjTnTf)可以获取加入技术话题群攻略

Hey 物联网从业者,

你是否有了解过奇迹物联的官方公众号“eSIM物联工场”呢?

这里是奇迹物联的物联网应用技术开源wiki主阵地,欢迎关注公众号,不迷路~

及时获得最新物联网应用技术沉淀发布

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源
    +关注

    关注

    3

    文章

    4346

    浏览量

    46442
  • 数据校验
    +关注

    关注

    0

    文章

    8

    浏览量

    6936
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    伺服电机编码器14线、5线、4线的区别

    伺服电机编码器的接线方式根据线数不同(如14、5、4),其功能、应用场景及信号传输机制存在显著差异。
    的头像 发表于 03-25 16:32 684次阅读

    科技,IPO申请获受理

    电子发烧友网综合报道 3月20日,上交所网站显示,宇科技股份有限公司科创板IPO申请已受理,成为又一家科创板IPO“预先审阅”落地项目。此次IPO,宇科技拟募资42.02亿元。   招股书显示
    的头像 发表于 03-20 18:33 4223次阅读
    宇<b class='flag-5'>树</b>科技,IPO申请获受理

    网线4和8能对接吗

    网线中的4线和8线在特定条件下可以对接,但需根据应用场景和线序标准谨慎操作,且可能存在性能限制。以下是详细分析: 一、4线与8线的区别 4
    的头像 发表于 03-02 10:53 494次阅读

    安森美工业图像传感器电源的作用和特性要求

    为图像传感器系统选择合适的电源管理元器件时, 需借助一种称为电源( power tree) 的架构设计工具。 通过仔细研读各器件规格书,并按正确顺序推导公式, 可确保为电源选配恰当的稳压器件。
    的头像 发表于 02-27 15:08 550次阅读
    安森美工业图像传感器电源<b class='flag-5'>树</b>的作用和特性要求

    深入理解设备chosen节点:固件与内核的“配置桥梁”

    在嵌入式 Linux 开发中,设备(Device Tree)是连接硬件与内核的关键纽带。但有一个节点很特殊 —— 它不描述任何硬件模块,却直接决定内核能否正常启动,这就是chosen节点。
    的头像 发表于 02-09 16:36 285次阅读
    深入理解设备<b class='flag-5'>树</b>chosen节点:固件与内核的“配置桥梁”

    Linux 6.8 内核 - 错误:找不到 cmdline 扁平化设备怎么解决?

    找不到有效的设备 启动旧的 5.15 内核显示如下: 解压缩内核映像 从0x44000000到0x40200000的移动图像,end=419b6000 Flattened Device Tree
    发表于 02-09 07:13

    奥托立夫荣获2025年迈克尔亲王国际道路安全奖

    奥托立夫荣获2025年迈克尔亲王国际道路安全奖,这一全球殊荣,旨在表彰我们在推动道路安全领域所展现的领导力与创新实践。
    的头像 发表于 12-30 16:20 964次阅读

    Termux中调试圣诞Python代码

    Python文件(比如命名为christmas_tree.py): nano christmas_tree.py 粘贴下面的圣诞树立例代码(健康版): # 圣诞快乐 - 温馨圣诞打印 print
    发表于 12-09 09:02

    `lv_obj_tree.h` 在 **LVGL v9** 中的位置和作用

    对象); 对象的层级管理(例如调整对象堆叠顺序); 与对象相关的辅助函数(例如获取对象的节点、判断对象是否为某个父对象的后代等)。 关联的关键文件 对应的实现文件:lv_obj_tree.c(同目录
    发表于 11-13 15:49

    致真精密仪器自旋测试多功能克尔显微镜进行磁畴结构表征分析

    精密仪器自旋测试多功能克尔显微镜,对斯格明子的静态磁畴结构进行了精准成像,为理解其在磁隧道结中的行为提供了重要实验依据。
    的头像 发表于 11-05 14:38 894次阅读
    致真精密仪器自旋测试多功能<b class='flag-5'>克尔</b>显微镜进行磁畴结构表征分析

    Verilog实现使用Booth编码和Wallace的定点补码乘法器原理

    的“和”位继续在本列传播,这就构成了Wallace Tree乘法器。 Wallace充分利用全加器3-2压缩的特性,随时将可利用的所有输入和中间结果及时并行计算,大大节省了计算延时。
    发表于 10-23 08:01

    开疆智能Profinet转EtherCAT网关连接丹尼克尔伺服拧紧模组配置案例

    本案例是西门子PLC通过网关对伺服拧紧模组进行控制的配置案例,具体配置如下。 配置方法: PLC配置 打开PLC组态软件,新建项目并导入网关GSD文件 导入网关GSD文件后填写设备名称及IP地址 、 设置好数据的输入输出长度。 网关配置: 打开网关配置软件“EtherCAT Manager”新建项目选择PN2ECAT。 添加采集模块的ESI文件,将从站设备添加进网关配置。 设置网关在Profient一侧的设备名称以及IP地址。 添加从站设备进网关组态。选择对应设备后双击或拖拽即可。
    的头像 发表于 08-21 17:40 611次阅读
    开疆智能Profinet转EtherCAT网关连接丹尼<b class='flag-5'>克尔</b>伺服拧紧模组配置案例

    光学实验教具应用:迈克尔逊干涉仪实验

    1. 实验概述 迈克尔逊干涉仪是光学干涉仪中最常见的一种,其原理是一束入射光分为两束后各自被对应的平面镜反射回来,这两束光从而能够发生干涉。干涉中两束光的不同光程可以通过调节干涉臂长度来实现,从而
    发表于 05-08 08:51

    纯干货!可以替换RS485接口电路的设计攻略=两线上供电及通讯,无需加隔离

    二总线是一种通过两线同时实现供电和数据传输的通信技术 - 核心特点: - 两线完成供电+通信 - 低功耗、长距离传输 - 适用于分布式设备联网 二总线:一双绞线解决供电与通信,节省30%以上
    发表于 05-07 11:33

    FRED应用:天文光干涉仪

    好,相干光线追迹就会执行。在探测器平面上的辐照度和彩色图会得到计算并显示出来。为了模拟迈克尔逊恒星干涉仪的运行,额外的循环可以添加到脚本中,它会在每一步扫描反射镜间距并计算条纹可见度。条纹可见度的第一个
    发表于 04-29 08:52