1个稳定版本
3.0.0 | 2021年3月12日 |
---|
#31 in #membership
73KB
1.5K SLoC
默克尔板
默克尔板提供创建和管理默克尔树的功能。
概述
默克尔板提供以下功能
- 创建默克尔树。
- 添加管理器并设置是否需要管理器。
- 将叶子数据添加到默克尔树。
- 将空化器添加到存储中。
- 管理启动/停止标志。
- 缓存默克尔树状态。
- 验证常规和零知识成员资格证明
术语
-
零知识中的成员资格证明:证明叶子在树中,而不透露你正在证明哪个叶子。
-
零知识中的创建证明:每个叶子都使用一个包含哈希多个值的算术电路创建。证明知道所有这些值称为创建证明。
-
空化器:空化器是这个叶子电路的一部分,在证明零知识中的成员资格时被揭示。空化器的作用是防止双重支出。
实现
默克尔板提供了以下特质的实现
Group
用于创建和管理组的功能。
接口
可调度函数
create_group
- 创建默克尔树及其相应的管理账户。set_manager_required
- 设置是否需要管理器来添加成员和空化器。set_manager
- 设置管理器账户ID。只能由root或当前管理器调用。set_stopped
- 设置停止存储标志。此标志本身不执行任何操作。它取决于更高级别的板来适当使用它。只能由root或管理器调用;add_members
向树中添加一个叶子数组。如果需要管理器,则只能由管理器调用。verify
- 验证成员资格证明。
用法
以下示例显示了如何在自定义板中使用默克尔板。
use pallet_merkle::traits::Group;
pub trait Config: frame_system::Config + pallet_merkle::Config {
type Group: Group<Self::AccountId, Self::BlockNumber, Self::GroupId>;
}
依赖关系
~14–24MB
~328K SLoC