33 个主要重大版本发布
37.0.0 | 2024 年 7 月 18 日 |
---|---|
35.0.0 | 2024 年 7 月 12 日 |
34.0.0 | 2024 年 6 月 24 日 |
33.0.0 | 2024 年 5 月 23 日 |
3.0.0 | 2021 年 2 月 10 日 |
#1093 在 神奇豆子
3,591 每月下载量
用于 13 个 crate (5 个直接使用)
2.5MB
45K SLoC
默克尔山脊
概述
有关默克尔山脊(MMR)的详细信息,请参阅此处: https://github.com/mimblewimble/grin/blob/master/doc/mmr.md
MMR 货盘从每个区块的 LeafDataProvider
获取的叶子数据构建一个 MMR。MMR 节点存储在
- 链上存储 - 只有哈希,没有完整的叶子内容;
- 链下存储 - 通过索引API,我们将完整叶子内容(以及所有内部节点)推送到链下数据库,以便链下工作节点可以访问数据。用于MMR的哈希可以独立于其他运行时配置(即不使用
frame_system::Hashing
),因此可以使用与外部链兼容的哈希算法(如Ethereum兼容性的Keccak256)。
根据使用场景(链下与链上),该组件可以
- 验证MMR叶子证明(链上)
- 生成叶子证明(链下)
有关如何优化由多个元素组成的叶子证明大小的文档,请参阅primitives::Compact。
用途是什么?
该组件的主要用途是生成MMR根哈希,这些哈希随后可以由BEEFY协议使用(见https://github.com/paritytech/grandpa-bridge-gadget)。MMR根哈希与BEEFY一起可以使构建基于Substrate的链的超级轻量级客户端(SLC)成为可能。SLC将能够跟踪最终性,并且可以提供有关源链上发生的事的更详细证明。在这种情况下,包含该组件的链生成根哈希和证明,然后将其提交给充当轻量级客户端的另一个链进行验证。
次要用途是存档历史数据,同时仍然能够在需要时按需检索它们。例如,如果父块哈希存储在MMR中,则可以在任何时间点提供有关某些过去块哈希的MMR证明,同时这些数据可以从链上存储中安全地删除。
注意:此组件是实验性的,尚未在生产环境中得到验证。
依赖关系
~18–32MB
~551K SLoC