






















Merkle Tree 是一种 二叉哈希树(Binary Hash Tree),它的作用是把大量数据的哈希值组织成树状结构,用 一个根哈希(Merkle Root) 来代表全部数据的完整性。
你可以把它理解成:
"用一个短短的指纹(Merkle Root)证明整个数据库的内容没有被篡改。"
假设我们有 4 个数据块:A, B, C, D
对每个数据块做哈希:
hA = hash(A)
hB = hash(B)
hC = hash(C)
hD = hash(D)
两两合并再哈希:
hAB = hash(hA + hB)
hCD = hash(hC + hD)
最终合并得到根哈希:
root = hash(hAB + hCD)
结构像这样:
Merkle Root
/ \
hAB hCD
/ \ / \
hA hB hC hD
比特币 / 以太坊
airdrop白名单
如果一个airdrop活动有 100 万个地址,直接存到合约里会非常贵。
解决方法:
Merkle Root。Merkle Root 验证地址是否在白名单中。假设要验证 A 在树中:
hA + 需要的兄弟节点哈希(比如 hB 和 hCD)。Merkle Root。// Merkle树验证,调用MerkleProof库的verify()函数
function _verify(bytes32 leaf, bytes32[] memory proof)
internal view returns (bool)
{
return MerkleProof.verify(proof, root, leaf);
}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。