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

你可能感兴趣的:(【学习笔记】merkle树及设置意义)