美文网首页
Substrate中Membership模块分析

Substrate中Membership模块分析

作者: 建怀 | 来源:发表于2019-11-25 18:23 被阅读0次

Substrate中Membership模块分析

这样一个membership的管理模块,议会成员管理,当然在一个去中心化系统中,压根就不存在某个节点能对议会进行管理,所以整个模块只是给Root进行管理,同样也是为了开发方便而已。议会成员更多是依赖election模块和election-phragmen模块进行定义和更迭。

Trait

/// The overarching event type.
type Event: From<Event<Self, I>> + Into<<Self as system::Trait>::Event>;

/// 添加一个议会成员时需要的权限,一般是Root权限
type AddOrigin: EnsureOrigin<Self::Origin>;

/// 移除一个议会成员时需要的权限,一般是Root权限
type RemoveOrigin: EnsureOrigin<Self::Origin>;

/// 替换一个议会成员时需要的权限,一般是Root权限
type SwapOrigin: EnsureOrigin<Self::Origin>;

/// 对议会成员集合进行重置时需要的权限
type ResetOrigin: EnsureOrigin<Self::Origin>;

/// 当议会成员被初始化时收到的信号
type MembershipInitialized: InitializeMembers<Self::AccountId>;

/// 当议会成员被更改时收到的信号
type MembershipChanged: ChangeMembers<Self::AccountId>; 

Storage

Members get(fn members): Vec<T::AccountId>;

在初始化的时候,可以设置议会成员:

add_extra_genesis {
    config(members): Vec<T::AccountId>;
    config(phantom): rstd::marker::PhantomData<I>;
    build(|config: &Self| {
        let mut members = config.members.clone();
        members.sort();
        T::MembershipInitialized::initialize_members(&members);
        <Members<T, I>>::put(members);
    })
}

Module

  • fn add_membet(origin,who: T::AccountId)
  • fn remove_member(origin,who: T::AccountId)
  • fn swap_member(origin,remove: T::AccountId, add: T::AccountId)
  • fn reset_members(origin, members: Vec<T::AccountId>)

相关文章

网友评论

      本文标题:Substrate中Membership模块分析

      本文链接:https://www.haomeiwen.com/subject/fobjwctx.html