- 浏览: 768089 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
Merkle哈希数是一类基于哈希值的二叉树或多叉树,其叶子节点上的值通常为交易数据块的哈希值,而非叶子节点上的值,则是将该节点的所有子节点的进行HASH后的结果
如果要判断一笔交易是否存在于一个区块中,则需要这笔交易的父HASH,及与它的父HASH平级的所有HASH进行构造Merkle树,这样构造出的MerkleRoot与区块头的MerkleRoot相同,则可确认该交易位于此区块,只需要较小的节点数而不用去析整个区块
1.Merkle Tree
1.1 区块结构中包含两个默克树根,一个是事务transactions的默克尔树根;另一个是操作action的默克树根.
1.2 默克尔树的演化路线是 Hash->Hash Tree->Merkle Tree,它们都是为解决数据一致性而存在的
Hash下载
1 下载一个文件,通常会在下载页面看到这个文件的Hash值及Hash算法.下载完毕之后,用户可在本地对整个文件使用同样的Hash算法计算得到Hash值,然后与下载页面的文件Hash值进行对比.
2 服务端
a.将大文件数据侵害为很多小块文件,Hash每一个小块文件得到对应的Hash值
b.拼接所有的小块Hash值作为源文件,Hash该源文件得到Root Hash
c.Root Hash与所有的小块Hash值组成Hash List,放置在下载网页上
3 客户端
a.先下载Hash List,打开得到源Root Hash,以及所有的小块Hash值
b.本地Hash所有的小块Hash值得到本地Root Hash,与源Root Hash对比.
c.Root Hash对比结果相关,Hash List验证通过
d.逐一下载小块文件,每次下载成功,立即本地验证小块的Hash值是否匹配
e.若不匹配,则重新下载当前小块文件,不必清空全部,重新下载整个大文件
f.重复以上两步,直到所有小块文件下载并验证完毕,本地会自动组成源大文件
Merkle Tree下载
1.Merkle Tree是Hash List的优化,它极大地提高了性能.树高为2的Hash List只有一个Root Hash,下载Hash List需要一次性验证所有小块Hash,当小块Hash数量很多时,计算量是提高性能的瓶颈
2.Merkle Tree提高性能的关键是其树高大于或等于2,树高越高,性能提高程度越大.Merkle Tree的每个节点最多只有两个子节点,只有叶节点是小块文件的Hash,Hash每两个相邻子节点的值得到父节点的值.如果叶节点的总数是单数,则会剩余一个,逐级往上,最终生成一个根节点,这个根节点就是Merkle Root.
a.下载Merkle Tree,得到Merkle Root,各级父节点Root及叶节点的小块Hash
b.从最左下叶节点和其相邻叶节点开始,逐级往上直到Merkle Root,校验完成.
c.校验过程中,如果最左下相邻的两个叶节点的Hash值与它们父节点的Hash值一致,则立即开始下载这两个叶节点对应的小文件块
d.并行地重复上一步,再校验其他叶节点,下载其他小文件块,直到全部下载
3.Merkle Tree的算法实现了不必校验通过完整的Merkle Tree之后再下载文件,而是分部分的,并行的,边校验边下载的方式,对比Hash List,大大提高了处理性能
如果要判断一笔交易是否存在于一个区块中,则需要这笔交易的父HASH,及与它的父HASH平级的所有HASH进行构造Merkle树,这样构造出的MerkleRoot与区块头的MerkleRoot相同,则可确认该交易位于此区块,只需要较小的节点数而不用去析整个区块
1.Merkle Tree
1.1 区块结构中包含两个默克树根,一个是事务transactions的默克尔树根;另一个是操作action的默克树根.
1.2 默克尔树的演化路线是 Hash->Hash Tree->Merkle Tree,它们都是为解决数据一致性而存在的
Hash下载
1 下载一个文件,通常会在下载页面看到这个文件的Hash值及Hash算法.下载完毕之后,用户可在本地对整个文件使用同样的Hash算法计算得到Hash值,然后与下载页面的文件Hash值进行对比.
2 服务端
a.将大文件数据侵害为很多小块文件,Hash每一个小块文件得到对应的Hash值
b.拼接所有的小块Hash值作为源文件,Hash该源文件得到Root Hash
c.Root Hash与所有的小块Hash值组成Hash List,放置在下载网页上
3 客户端
a.先下载Hash List,打开得到源Root Hash,以及所有的小块Hash值
b.本地Hash所有的小块Hash值得到本地Root Hash,与源Root Hash对比.
c.Root Hash对比结果相关,Hash List验证通过
d.逐一下载小块文件,每次下载成功,立即本地验证小块的Hash值是否匹配
e.若不匹配,则重新下载当前小块文件,不必清空全部,重新下载整个大文件
f.重复以上两步,直到所有小块文件下载并验证完毕,本地会自动组成源大文件
Merkle Tree下载
1.Merkle Tree是Hash List的优化,它极大地提高了性能.树高为2的Hash List只有一个Root Hash,下载Hash List需要一次性验证所有小块Hash,当小块Hash数量很多时,计算量是提高性能的瓶颈
2.Merkle Tree提高性能的关键是其树高大于或等于2,树高越高,性能提高程度越大.Merkle Tree的每个节点最多只有两个子节点,只有叶节点是小块文件的Hash,Hash每两个相邻子节点的值得到父节点的值.如果叶节点的总数是单数,则会剩余一个,逐级往上,最终生成一个根节点,这个根节点就是Merkle Root.
a.下载Merkle Tree,得到Merkle Root,各级父节点Root及叶节点的小块Hash
b.从最左下叶节点和其相邻叶节点开始,逐级往上直到Merkle Root,校验完成.
c.校验过程中,如果最左下相邻的两个叶节点的Hash值与它们父节点的Hash值一致,则立即开始下载这两个叶节点对应的小文件块
d.并行地重复上一步,再校验其他叶节点,下载其他小文件块,直到全部下载
3.Merkle Tree的算法实现了不必校验通过完整的Merkle Tree之后再下载文件,而是分部分的,并行的,边校验边下载的方式,对比Hash List,大大提高了处理性能
发表评论
-
公链_Solana
2022-02-24 20:44 242共识:PoS 1.Solana生态系统中有多个角色(领导者、验 ... -
公链_Avalanche
2022-02-21 20:03 169Avalanche:设计了一款基于 ... -
公链_Fantom
2022-02-21 19:53 182Fantom:总部位于韩国,基于 DAG(有向无环图)改进版本 ... -
ipld
2020-03-03 12:02 292ipld:是一个转换中间件,将现有的异构数据结构统一成一种格式 ... -
spv模式
2019-09-07 07:03 752SPV(Simplified Payment Verficat ... -
PoC贡献量证明
2019-09-06 07:29 318贡献量证明PoC:贡献量证明这个概念与工作量证明机制类似,即为 ... -
DAG区块链
2019-07-22 07:27 518DAG(有向无环图)区块链: 1.组成单元不是区块而是交易,可 ... -
匿名网络Tor
2019-07-21 09:36 4791.通信匿名保护:对交易主体的网络地址进行隐藏,以防止网络地址 ... -
chaintips
2019-07-02 09:07 3121.invalid 该分支包含至少一块无效区块。 2.head ... -
比特币RPC
2019-02-13 08:10 401代码详解:https://mistydew.github.io ... -
比特币命令行参数
2019-02-03 09:04 429-?:提示常用的命令行参数并退出 -version:打印版本然 ... -
比特币消息类型
2019-01-27 09:28 6311.VERSION:当主动连接上对方时,发送version消息 ... -
外带数据
2019-01-07 08:08 405外带数据:保存在区块链但不进行货币交易的信息,比如需要永久保存 ... -
watch-only 地址
2019-01-06 16:34 476watch-only 地址:监控某一个地址,只能看不能花,相当 ... -
签名模式
2019-01-05 09:24 737交易的签名方式可以通过SIGHASH符号来控制,该符号附加在签 ... -
重放攻击
2019-01-03 21:50 558一条链出现分叉,新链上发送的交易,同样会广播到旧链上,并且还能 ... -
Fabric
2019-01-01 09:14 291Fabric(纺织品)项目的目标是实现一个通用的权限区块链(P ... -
超级账本
2018-12-31 10:23 400超级账本项目根据发展程度可处于5种状态:提案,孵化,成熟,弃用 ... -
智能合约
2018-12-29 08:00 0智能合约是一种计算机协议,这类协议一旦制定和部署就能实现自我执 ... -
盲签(blind signature)
2018-12-28 08:10 5691.接收者先对签名消息通过盲化因子factor进行一次盲转变, ...
相关推荐
merkle, 实现Merkle树算法的node.js 模块 使用 sha512,sha256,ripemd160,漩涡,sha1,md5或者无算法构建Merkle树。用法构建Merkle树var merkle = require('merkle');var abcde
MERKLE树求根节点HASH值MERKLE树求根节点HASH值MERKLE树求根节点HASH值MERKLE树求根节点HASH值MERKLE树求根节点HASH值
数据区和扩展区分别构建Merkle树,将两棵Merkle树的根存入区块头中。对于需要修改的错误数据,在获得一定数量节点同意后,在扩展区中重写该数据,并重新构建扩展区的Merkle树。 本文的方法有以下几个关键点: 1. ...
【基于Merkle树的移动平台文件完整性校验】是一种针对移动设备下载业务的重要安全机制。在移动平台的下载业务中,确保用户接收到的数据完整无损是至关重要的,因为任何数据损坏都可能导致应用程序无法正常运行或者...
merkle树.pdf
**Merkle树,也称为哈希树,是一种数据结构,尤其在区块链、分布式系统和信息安全领域中广泛应用。它的核心思想是将数据分块,并为每个数据块计算哈希值,然后将相邻的哈希值两两组合再计算哈希,如此递归进行,直至...
Merkle树库是实现二进制[Merkle(hash)树]( )的C库。 该库最初是为与[安全块设备]( )一起使用而开发的。 因此,它具有以下属性: 使用SHA-256作为哈希算法的二进制哈希树 支持可变大小的数据存储 最大元素数和...
在本文中, 基于Michael Szydlo提出的方案,我们提出了一种有效的方法通过引入一个实现Merkle树遍历的方法堆栈结构以生成Merkle树并通过构造哈希Merkle树中每个节点的索引值,以加快搜索速度。 为了一棵有N个叶子的...
Python中的Merkle树密码学.zip
Merkle二进制索引树(Merkle-BIT)此树结构是具有通过拆分索引进行分支压缩的二进制merkle树。 该结构可以是Merkle二进制索引树(Merkle-BIT)。此树结构是具有通过拆分索引进行分支压缩的二进制merkle树。 此结构可...
虚拟树概述使用Merkle树来检测文件系统何时更改。 目的是创建一种确定文件系统何时更改的有效方法,特别是比较两个假定彼此相同的文件系统。 预期的用例是将大型文件系统结构同步到远程位置,您希望在该位置知道何时...
merklet, 在Erlang中数据复制的Merkle树 MerkletReimplementation的古老,树 MODULE,但是以更易读的方式显示( 根据我) 。 其他差异包括:重命名一些函数只是因为插入只需要二进制和值的二进制,但不考虑哈希值。...
在IT领域,Merkle树是一种重要的数据结构,尤其在区块链、分布式系统和网络安全中扮演着核心角色。Rust作为一种系统编程语言,以其强大的类型安全和内存管理特性,成为实现这些高级数据结构的理想选择。`merkle.rs`...
merkletree-具有SPV支持和不可知的merkle的轻型merkle树实现merkle merkle是Merkle树的轻量级Rust实现。 具有与外部依赖性无关的std :: hash ::: Hasher兼容性标准类型的哈希器实现#[derive(Hashable)]支持简单的...
Merkle树实现这是PHP的哈希树或Merkle树的实现。 安装通过Composer安装(确保路径或项目中有composer)。 放入以下Merkle Tree实现这是PHP的哈希树或Merkle Tree的实现。 安装通过Composer安装(确保路径或项目中有...
在IT行业中,Merkle树是一种重要的数据结构,尤其在区块链和数字证据管理等领域发挥着核心作用。"默克尔:PoC实施-基于Merkle树的数字证据管理"这个主题,旨在探讨如何利用Merkle树的概念来构建一个证明-of-concept...
Java区块链如果Merkle线程获得足够的单词,则它将创建一棵merkle树并生成一个merkle根字符串,并且如果它与用户输入的初始merkle根匹配,则用户获胜;如果不匹配,则用户输。
TypeScript中的稀疏Merkle树实现。 稀疏Merkle树(SMT)是一种用于存储键/值映射的数据结构,其中树的每个叶节点都包含键/值对的加密哈希,而每个非叶节点都包含其子节点的串联哈希。 SMT提供了对大型数据集的安全...