#merkle-tree #mmr #crypto #accumulator #binary-tree #no-std

已下架 arber

一个Merkle-Mountain-Range (MMR)库

0.2.0 2021年11月18日
0.0.3 2021年9月7日
0.0.2 2021年5月28日
0.0.1 2021年5月22日

#11 in #mmr

Apache-2.0

56KB
1K SLoC

arber

arber 是一个Merkle-Mountain-Range (MMR)实现。

以下描述摘自这篇优秀的介绍。

Merkle Mountain Ranges [1] 是Merkle树 [2] 的替代方案。虽然Merkle树依赖于完美平衡的二叉树,但Merkle Mountain Ranges可以看作是一系列完美平衡的二叉树,或者是一个从右上角截断的单个二叉树。Merkle Mountain Range (MMR)是严格追加的:元素从左到右添加,一旦有两个子节点,就添加一个父节点,相应地填充范围。

这展示了包含11个插入叶子的范围,总大小为19,其中每个节点都注有其插入顺序。

Height

3              14
             /    \
            /      \
           /        \
          /          \
2        6            13
       /   \        /    \
1     2     5      9     12     17
     / \   / \    / \   /  \   /  \
0   0   1 3   4  7   8 10  11 15  16 18

这可以表示为一个扁平列表,这里存储每个节点在插入位置索引的高度

0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18
0  0  1  0  0  1  2  0  0  1  0  0  1  2  3  0  0  1  0

这个结构可以通过其大小(19)完全描述。


🚧 arber 目前正在建设中 - 建议在此点之后戴上安全帽 🚧


[1] Peter Todd, merkle-mountain-range

[2] Wikipedia, Merkle Tree

依赖

~4MB
~81K SLoC