26 个版本 (12 个重大变更)
0.17.1 | 2023 年 1 月 26 日 |
---|---|
0.16.0 | 2022 年 12 月 16 日 |
0.15.1 | 2022 年 9 月 22 日 |
0.13.0 | 2022 年 7 月 26 日 |
0.8.1 | 2022 年 3 月 29 日 |
#1717 in 神奇豆
26 次每月下载
在 5 crates 中使用
195KB
4K SLoC
TG4 群组
这是 tg4 规范 的基本实现。它实现了规范的所有要素,包括原始查询查找,并设计为用作 符合 tg3 规范的合约 的后端存储。
它存储一组成员以及一个管理员,并允许管理员更新状态。原始查询(用于跨合约查询)可以检查特定的成员地址和总积分。智能查询(设计用于客户端 API)可以执行相同的操作,还可以查询管理员地址以及分页浏览所有成员。
此外,此合约提供了类似 EIP2222 标准的行为 API,允许按成员积分比例自动分割发送到此合约的奖励。
初始化
要创建它,您必须传入一个成员列表,以及可选的 admin
,如果您希望它可变。
pub struct InstantiateMsg {
pub admin: Option<HumanAddr>,
pub members: Vec<Member>,
pub preauths: Option<u64>,
pub halflife: Option<Duration>,
pub token: Option<String>,
}
pub struct Member {
pub addr: HumanAddr,
pub points: u64,
}
成员由地址和积分定义。这被转换并存储在他们的 Addr
下,格式在 tg4 原始查询 中定义。
注意,0 是允许的积分数量。这不会赋予任何投票权,但它定义了这个地址是群体的一部分。这可以用于例如 KYC 白名单,表示他们被允许,但不能参与决策。
token
是一个本地代币名称,它可能通过类似 EIP2222 的接口分发。如果它是 None
,则此合约可能无法分配任何奖励。
消息
基本更新消息、查询和钩子由 tg4 规范 定义。请参阅它以获取更多信息。
tg4-engagement
为控制群组成员添加了一个消息
UpdateMembers {add, remove}
- 接收成员差异并添加/更新成员,以及删除提供的任何地址。如果地址在两个列表中,则会被删除。如果它在 add
中多次出现,则只使用最后一次出现。
AddHook {addr}
- 添加一个新钩子以通知所有成员变更。必须由管理员调用。
RemoveHook {addr}
- 删除钩子。必须由管理员调用。
DistributeFunds {sender}
- 分发随此消息发送的资金,以及自上次 DistributeFunds
以来通过常规银行消息发送的资金。 sender
是可选信息,覆盖生成的活动上 sender
字段。资金按成员的积分比例分配给成员。资金不会直接发送给成员,而是分配给未来的提款。
WithdrawFunds {receiver}
- 提取在资金分配期间分配给消息发送者的先前资金。可选的 receiver
字段是一个地址,其中资金应该被发送,默认为消息发送者。
DelegateWithdrawal{delegated}
- 将 delegated
地址设置为允许提取分配给 sender
的资金。任何地址只能委托一个地址,因此委托新地址会覆盖以前的地址。要禁止任何地址提取资金,请发送带有 delegated
发送到 sender
的 DelegateWithdrawal
。
查询
Hooks {}
- 返回所有注册的钩子。
Preauths {}
- 返回当前的预认证数量。
WithdrawableRewards {owner}
- 返回所有者分配的可以提取的奖励数量。
DistributedRewards {}
- 返回此合约在其生命周期内分配的奖励数量。
UndistributedRewards {}
- 返回此合约等待分配的奖励数量。
Delegated {owner}
- 返回允许提取分配给给定 owner
的资金的地址。如果没有设置,则返回 owner
。
依赖项
~4–5.5MB
~121K SLoC