【学习笔记】merkle树及设置意义

Merkle树(默克尔树)


默克尔树是一类基于哈希值的二叉树或多叉树,其叶子节点上的值通常为数据块的哈希值,而非叶子节点上的值,是将该节点的所有子节点的组合结果的哈希值。


图片发自简书App



默克尔树一般用来进行完整性验证处理,在处理完整性验证的应用场景中,默克尔树会大大减少数据的传输量及计算的复杂度。

通常,要确定一个数据块是默克尔树中的一员,只需要树根及这个区块和通向树根沿途的中间哈希值,可以暂时忽略树的其他部分,这些就已经足以让我们验证了。

由此可见,哈希加密算法的验证相比于正向求解要容易

1. 默克尔树的意义:(节约硬盘空间,每个节点都可以存储交易,每个节点都有权验证交易)

为了同时确保不损害区块的hash,交易被hash为一棵Merkle Tree,这个Merkel Tree只有root节点被包含进了这个区块的hash。老的区块能够被压缩通过将这个树的分支进行拔除(stubbing off branches of thetree)。而内部的hash是不必被保存的。个人并不需要这个区块,只需要这个区块的hash(索引)就可以,有ipfs,公共节点,高信任度节点帮忙存储。

一个剔除交易的区块头大概会是80byte大小。如果我们假设区块每10分钟就生成一个,那么80bytes * 6 * 25 * 365 = 4.2MB 每年。2008 年PC系统通常的内存容量为2GB,按照摩尔定理预言的每年增长1.2GB的大小,即使将全部的区块头存储在内存之中都不是问题。

2. 这里会有一个取舍,存储空间与安全,假设因为默克尔数,保留的节点(交易)太少,就可能造成安全问题,一个攻击者拥有超过全网的算力的成本是相对较低的,当然这主要针对小区块链系统。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载于:风之舞555 Merkle Tree学习 /最近在看Ethereum,其中一个重要的概念是Merkle T...
    Venture_Mark阅读 522评论 0 0
  • 一、快速术语检索 比特币地址:(例如:1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV)由一串...
    不如假如阅读 16,210评论 4 87
  • Merkle Tree概念 Merkle Tree,通常也被称作Hash Tree,顾名思义,就是存储hash值的...
    dtdh阅读 1,061评论 2 3
  • 一、前言 这里先说一下使用vue-cli之前的事情。 由于刚刚接触Vue不久,就接到了一个移动端项目,于是打算使用...
    wingsico阅读 2,524评论 3 11
  • 雨言 文/春儿 是什么?触碰了你的心 碎成点滴 随秋一起沉淀 积攒半夏的热度 储存,等凉 暖...
    幸福依然春儿阅读 114评论 2 1