基础概述

  默克尔树(Merkle Tree),可以被用于验证任何类型的数据的存储。通常被用作与其他节点的计算机之间进行数据转移的数据完整性以及正确性的校验。
  在比特币中。每个区块都有自己的 block header 其中包含了上一个区块的 hash 指针、难度 target 以及 nonce 等信息,最重要的是其中包含的 Merkle root hash。这个信息是当前区块中所有包含的交易信息组成的一颗 默克尔树 的根节点的值。有了这个值就可以保证当前区块包含的所有交易信息都不会被改变。

默克尔树的构成原理

  首先来看一张默克尔树的构造图。

  上图是维基百科的图片,从上图可以看到最底下的一层节点是数据块,对每两个相邻的数据块取hash并将它们的值再次进行hash得到一个新的节点。再向上将得到的两个相邻的新节点的值做一次hash得到一个上层节点。知道最终得到一个根节点。
  只需要保存这个根节点的值即可随时验证整个树的所有数据的正确性。因为 hash 的特点,这颗树只要有一个节点的值被更改都会导致最终根节点的值产生变化。
  因为这些特性,默克尔树的数据块顺序是不可更改的,一旦顺序更改那么所得到的根hash值都会不一样。即使两棵树的数据库一样。

比特币中默克尔树

  在比特币中,默克尔树主要负责做交易打包的校验,在 block header 中保存了该区块中打包的所有交易组成的一颗默克尔树的根hash值。默克尔树的特性保证了一旦这个区块被链上其他的节点接受,成为最长有效链的一部分之后。这个节点中的交易就不会再被改变,因为一旦改变其中的交易,就会导致整棵树的根hash值产生变化,最终当前区块的hash值也会改变。这个区块就不会被其他节点接受。

默克尔树 Merkle Tree相关推荐

  1. Solidity实现默克尔树 Merkle Tree

    ​​Merkle Tree​​​,也叫默克尔树或哈希树,是区块链的底层加密技术,被BTC和Ethereum区块链广泛采用.​​Merkle Tree​​​是一种自下而上构建的加密树,每个叶子是对应数据 ...

  2. golang 区块链:默克尔树(Merkle Tree)

    生成默克尔树 type MerkleTree struct {RootNode *MerkleNode }type MerkleNode struct {Left *MerkleNodeRight * ...

  3. 默克尔树 Merkle树之Go语言实现

    关于merkle树有很多实现.这里参考了一个纯内存实现,有助于理解. 项目地址 https://github.com/cbergoon/merkletree 核心分析 一.结构体 type Conte ...

  4. 常用的数据结构_三分钟了解区块链常用数据结构「默克尔树」

    免责声明:本文旨在传递更多市场信息,不构成任何投资建议.文章仅代表作者观点,不代表火星财经官方立场. 小编:记得关注哦 来源:万向区块链 原文标题:三分钟了解区块链常用数据结构「默克尔树」 默克尔树是 ...

  5. 默克尔树_默克尔树:正在使用中

    默克尔树 Ralph C. Merkle (not pictured above), born 1952, is one of the founding fathers of Public Key C ...

  6. 稀疏默克尔树(Sparse Merkle Tree)

    1. 默克尔树 1.1. 默克尔树的存在证明 1.2. 默克尔树的不存在证明 2. 稀疏默克尔树 2.1. 稀疏默克尔树的存在证明 2.2. 稀疏默克尔树的不存在证明 3. Ref 博客链接:http ...

  7. Merkle Tree(默克尔树)原理解析

    Merkle Tree(默克尔树)原理解析 一.Merkle Tree 1.1 Merkle Tree的特点 二.Hash list 三.Merkle tree VS Hash list 四.Merk ...

  8. 默克尔树(Merkle Tree)总结

    目录 为什么要有默克尔树 简介 Merkle Tree的特点 图解 创建树 检索-文件夹比较 检索-防伪 更新 插入删除 应用 数字签名 P2P网络 可信计算 区块链-简单验证支付 为什么要有默克尔树 ...

  9. 区块链--默克尔树(Merkle Tree)

    Merkle Tree 默克尔树是一种二叉树,由一个根节点.一组中间节点和一些叶子节点组成.形状如下: D0.D1.D2和D3是叶子节点包含的数据,也就是叶子节点的value.继续往上看,N0.N1. ...

最新文章

  1. 《转》每天起床时,优秀创业者都会问自己这3个问题
  2. [动态库]动态库生成和使用以及Makefile编写
  3. matlab拟合函数,Matlab拟合自定义函数 - 计算模拟 - 小木虫 - 学术 科研 互动社区...
  4. 周长相等的正方形面积一定相等_万萍:画图研究图形与几何问题—怎样围面积更大(四下)...
  5. SAP 电商云 Spartacus UI 的 slot,position 和 Component
  6. Dynamic Data Web Application编译是报GetActionPath调用模糊解决办法
  7. 10恢复出厂设置_Mac系统如何恢复出厂设置
  8. Python3.7 Scrapy安装(Windows)
  9. 自动化神经网络理论进展缓慢,AutoML 算法的边界到底在哪?
  10. NPOI 设置合并后的单元格的边框的解决方法
  11. Linux入门基础命令(四)
  12. [2018.10.11 T2] 整除
  13. 【方向盘】蚂蚁金服上市了,我不想努力了
  14. vue3.0页面模板-示例
  15. Linux解压压缩包到同名目录,里面的文件会自动覆盖吗?
  16. 关于maven的创建简单的servlet
  17. 借CT阵营之力NFV让运营商网络变得更美
  18. 5-2 图书价格汇总
  19. 基于正点原子探索者使用STM32CubeMX+FreeRTOS+LWIP
  20. unity塔防游戏怪物转向_萌宠打怪物手游下载-萌宠打怪物官方版下载

热门文章

  1. cadence allegro原理图DRC,生成网表与导入PCB
  2. 笔记:处理token过期
  3. 删除Windows下samba保存的用户名和密码
  4. 剪贴板 Clipbardjs 的使用教程,Vue
  5. 第七届力学、数学与应用物理学国际会议(ICMMAP 2023)
  6. python爬虫入门:搜索和批量下载图片
  7. 香侬科技GNN-LM:基于全局信息的图神经网络语义理解模型笔记
  8. 计算机网络局域网仿真搭建,基于虚拟仿真技术的计算机网络实验室的构建.pdf...
  9. Apache MINA框架快速入门
  10. 修改pdf文件内容可以使用什么编辑工具