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