Sparse Merkle Tree

1. 引言

前序博客有:

2. Merkle tree

Merkle tree可看成是对一组数据的密码学承诺,类似:
在这里插入图片描述

2.1 Merkle tree包含证明

如需证明A包含在上述树中,仅需要发送A, H(B), H(H(H(C)+H(D))),验证root哈希能否匹配即可。

2.2 Merkle tree不包含证明

Merkle tree很容易进行包含证明,但不容易实现“不包含”证明,除非公开整棵树的内容,但这违背了使用Merkle tree的初衷。

3. Sparse Merkle tree

Sparse Merkle tree与标准Merkle tree类似,但是Sparse Merkle tree的data是带索引的,且每个datapoint会放入 datapoint索引 对应的叶子节点。

假设某Merkle tree有4个叶子节点,对该树填充(A, D)。由于A为字母笔的首字母,放于第一个叶子节点处,D放在第4个叶子节点处。而对于第2个和第3个叶子节点,将保持为空,实际实现时,会设置特殊值(如null):
在这里插入图片描述

3.1 Sparse Merkle tree包含证明

Sparse Merkle tree包含证明 与上面的Merkle tree包含证明类似:
为证明A在树中,仅需要提供A、H(null)、H(H(null)+H(D))即可。

3.2 Sparse Merkle tree不包含证明

如需证明C不在上面的sparse merkle tree中,将很简单:
C若在树中,其应在第3个叶子节点,若不在树中,第3个叶子节点必须为null

不包含证明即为:以标准merkle证明第3个叶子节点是null,仅需提供null、H(D)、H(H(A)+H(null))
在这里插入图片描述
sparse Merkle tree的最大特点在于:其确实在Merkle tree中代表了key-value stores。

4. Sparse Merkle tree的缺点

Sparse Merkle tree的最大优点在于:可提供高效不包含证明。
但是,这也意味着sparse Merkle tree将非常非常大,26个字母看起来不多,但大多数时候处理的是 2 256 2^{256} 2256哈希值,手工构建这样的sparse merkle tree需要太多的索引。

2016年论文Efficient Sparse Merkle Trees——Caching Strategies and Secure (Non-)Membership Proofs等技术 可高效生成Merkle tree。但这些技术的关键在于 巨大sparse merkle tree 大多数情况下是系数的。H(null)为常量值,H(H(null))也是常量值,以此类推等等。因此可缓存树的大多数部分。

5. Sparse Merkle tree应用场景

Plasma Cash使用sparse Merkle tree来存储deposited assets信息。每种Plasma Cash asset都有唯一的ID。当某资产转移给某新用户时,会在spare Merkle tree中相应的asset索引中包含一笔交易。然后使用“包含证明”(或“不包含证明”)来证明 某特定历史交易是有效的。

参考资料

[1] 2018年博客 What’s a Sparse Merkle Tree?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值