...
创建/执行颁发 Grant 的提案
创建/执行修改 Grant 的提案
创建/执行收回 Grant 的提案
创建安装 Grant 插件的提案
1.2 Member插件
1.3 Stake插件
主要功能:根据质押时长和质押额度来质押Token以获得相应的SBT,例如: 在Token和SBT为1:1的DAO中来质押,质押10个Token 10分钟,可得100SBT
用户可以做什么:
根据时间和质押额度来质押Token以获得相应的SBT
查询当前质押Token的列表
质押到期之后退回相应的Token
针对插件中的一些参数进行投票,参数有:接收的Token类型,质押Token转成SBT的权重
DAO安装插件后可以做什么:
初始化时指定接收Token的类型,质押Token转成SBT的权重
执行投票结果
2. 场景:描述StarcoinDAO下插件的使用和对接
...
在Starcoin DAO 中其他项目可以创建 颁发 Grant 的提案,来为申请人获得 Grant 奖励一旦创建 Grant 的提案通过,申请人可以 通过 前端/cli 领取 Grant
当 申请人拥有 Grant 时,任意成员可以提案要求撤销/修改 申请人的 Grant 奖励,当提案通过后,申请人的 Grant 将被撤销/修改
2.2 Member插件
2.3 Stake插件
StarcoinDAO中用户可以通过StakeToSBT插件来增加用户在DAO中的SBT
…
第二部分:在DAO里如何install插件,以及如何使用插件
...
action_delay:u64
多久后可以执行提案
StakeToSBT安装插件时
...
2. 使用插件
2.1 Grant 插件
Grant 授予:
...
代码块 |
---|
public (script) fun create_grant_revoke_proposal<DAOT: store, TokenT:store>(sender: signer, description: vector<u8>, grantee:address, action_delay:u64) |
Grant 修改:
合约接口:
代码块 |
---|
public (script) fun create_grant_config_proposal<DAOT: store, TokenT:store>(sender: signer, description: vector<u8>, old_grantee: address, new_grantee: address, total: u128, period: u64,start_time:u64, action_delay:u64) |
2.2 StakeToSBT插件
发起提案,接口:
代码块 | ||
---|---|---|
| ||
/// 发起质押类型的提案 /// 模板参数: /// 1. DAOT,DAO类型 /// 2. TokenT,Token类型 /// 普通参数: /// 1. sender 发起者签名 /// 2. description 描述信息 /// 3. action_delay,投票成功后多长时间才可以执行动作 fun StakeToSBT::create_token_accept_proposal<DAOT: store, TokenT: store>( sender: signer, description:vector<u8>, action_delay: u64); /// 发起质押参数的提案 /// 模板参数: /// 1. DAOT,DAO类型 /// 2. TokenT,Token类型 /// 普通参数: /// 1. sender 发起者签名 /// 2. description 描述信息 /// 3. lock_time 锁仓时长 /// 4. weight 倍率 /// 5. action_delay,投票成功后多长时间才可以执行动作 fun StakeToSBT::create_weight_proposal<DAOT: store, TokenT: store>( sender: signer, description:vector<u8>, lock_time: u64, weight: u64, action_delay: u64) |
...
; |
...
用户查看质押列表
左侧为按Token类型汇总,(接口Jiefeng Yang 提供),点进去则是右侧的列表(接口Jiefeng Yang 提供),即当前用户所质押的列表
赎回按钮未到时间不可点击
点击➕,则弹出“新增质押”界面
代码块 | ||
---|---|---|
| ||
/// 查询单个质押的信息
/// 模板参数:
/// 1. DAOT,DAO类型
/// 2. TokenT,Token类型
///
/// 普通参数:
/// 1. member 查询的用户
/// 2. id 质押的id
///
/// 返回参数:
/// 1. 质押开始时间
/// 2. 锁仓时间
/// 3. 倍率权重
/// 4. SBT的额度
/// 5. 质押的额度
fun StakeToSBT::query_stake<DAOT: store, TokenT: store>(
member: address,
id: u64) : (u64, u64, u64, u128, u128);
/// 赎回质押(未到锁仓时间不可赎回)
/// 模板参数:
/// 1. DAOT,DAO类型
/// 2. TokenT,Token类型
///
/// 普通参数:
/// 1. member 查询的用户
/// 2. id 质押的id
fun StakeToSBT::unstake_by_id<DAOT: store, TokenT: store>(member: address, id: u64); |
...
新增质押界面
代码块 |
---|
/// 质押
/// 模板参数:
/// 1. DAOT,DAO类型
/// 2. TokenT,Token类型
///
/// 普通参数:
/// 1. sender 发起的用户
/// 2. token 质押的Token
/// 3. lock_time 锁仓的时间
fun stake<DAOT: store, TokenT: store>(
sender: &signer,
token: Token::Token<TokenT>,
lock_time: u64); |
...