#merkle-tree #pallet #membership #manager #zero-knowledge #proof #required

no-std pallet-merkle

默克尔树成员资格板,带有零知识成员资格证明验证

1个稳定版本

3.0.0 2021年3月12日

#31 in #membership


用于pallet-mixer

无许可

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