简介
本篇文章是对Merkle tree的解释。Merkle tree是一种应用在比特币中的技术。本文的目标是通过代码来理解它的实现过程。
环境
Jdk 1.8.0_66
Idea
Merkle树
Merkle tree(哈希树)是一种数据结构,用于验证任何类型的数据存储、处理和传输。
目前,Merkle树的主要用途是确保在对等网络中从其他对等网络接收到的数据块未被损坏和修改,甚至检查其他对等网络是否存在并发送假块。
Merkle树应用范围:git, Amazon的Dynamo, Cassandra和 比特币
比特币区块链中的每一个区块都包含了区块中所有交易的摘要,使用的是Merkle树。
Merkle树被用在比特币中,用来汇总一个区块的所有交易,生成整个交易集的整体数字指纹,提供一个非常有效的过程来验证一个交易是否被包含在一个块中。
重要的是检查是否包含块中的特定事务。为了这个,使用Merkle根。
Merkle树是通过递归的散列成对的节点来构建的,直到只有一个散列。这个创建的哈希被称为根,或merkle根。Merkle树可以通过log2(N)计算查看树中是否包含任何数据元素。
实现过程
准备交易数据