跳到主要内容
uencoder

Use Merkle trees 为数据验证

Merkle trees hash 数据为 树结构, enabling 高效验证的 individual elements 无 downloading 整个数据集.

  1. 1

    Merkle 树 hashes 数据 blocks 在 leaves, 然后 pairs 和 hashes 上到 单个根. 到验证阻止, 你 need 阻止和 其 Merkle 证明 (sibling hashes along 路径到 根). Verification 是 O(记录 n) 而非 O(n) — 你 don't need 所有数据, 仅证明. Used 在 Bitcoin, Git, ZFS, 和 certificate transparency logs.

  2. 2
    哈希计算器 →

    Hash 每个数据阻止到 创建叶 nodes. Use SHA-256 (Bitcoin) 或 SHA-3. Pair leaves 和 hash 其 concatenation 到创建父 nodes. Repeat 直到 one 节点 remains — Merkle 根. 根 commits 到所有数据: 任何改变在 叶 changes 根.

  3. 3
    SHA-3 / Keccak 哈希计算器 →

    Use SHA-3-256 为 Merkle 树哈希. SHA-3 是 resistant 到长度扩展 attacks (unlike SHA-2), making 它 safer 为 Merkle trees where hash concatenation 是 used. Alternatively, use SHA-256 具有域 separator (e.g., hash(0x00 || 左 || 右) 为内部 nodes, hash(0x01 || 数据) 为 leaves).

常见问题

什么是 Merkle 证明?
Merkle 证明为 叶 consists 的 sibling hashes along 路径从 叶到 根. 为树 具有 n leaves, 证明有 log2(n) hashes. 到验证: hash 叶, 组合具有证明 hashes 在正确 order, 和检查如果结果 equals 根. 此 proves 叶是 在树 无 downloading 所有数据.
Where 是 Merkle trees used?
Bitcoin (事务验证在 blocks), Git (内容-addressable storage), ZFS (数据完整性), Apache Cassandra (anti-entropy repair), Certificate Transparency (记录验证), 和 IPFS (内容 addressing). 任何系统该 needs 高效验证的 大 datasets benefits 从 Merkle trees.

解决此任务的工作流

相关工具