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 日

#2432 in 魔法豆

Download history 3/week @ 2024-03-28 10/week @ 2024-04-04 148/week @ 2024-04-11

每月 67 次下载

Apache-2.0

330KB
7K SLoC

Tgrade Community Pool 合约

这定义并实现了根据提案投票来管理参与点和验证者减刑的社区池功能,基于 TG3

实例化

创建 tgrade-community-pool 合约的第一步是使用所需的成员集实例化一个 tg4 合约。

我们希望通过社区池将一些区块奖励放入社区手中,以提供更多的参与度和增加链的去中心化。

参与点持有人可以提出支出提案,这些提案可以由参与点持有人进行投票。

奖励分配

所有奖励的 5% 进入这个新的社区池合约(47.5% 给验证者,47.5% 给参与点持有人)。

社区池合约类似于“验证者投票”的另一个投票合约,但其投票集合基于参与点持有人。

此合约应接受分配消息,与其它合约相同的接口。

投票设置为 55% 阈值,40% 法定人数,14 天投票期。

这些都未硬编码 - 这些是旨在在最终的 tgrade 链中使用的值。

执行过程

首先,一名注册选民必须提交提案。这还包括提案者对提案的第一次“是”投票。提案者可以设置投票过程的过期时间,或者默认为创建合同时提供的限制(因此提案可以在几天后关闭)。

在提案过期之前,任何拥有非零积分的投票者都可以添加他们的投票。只有“是”票会被计入。如果在提案过期日期之前提交了足够的“是”票,状态将被设置为“通过”。

一旦提案被“通过”,任何人都可以提交一个“执行”消息。这将触发提案发送所有存储的消息并更新其状态为“已执行”,因此它不能再次运行。(注意,如果由于任何原因(如gas不足、资金不足等)执行失败,状态更新将被撤销,它将保持“通过”状态,您可以再次尝试)。

一旦提案在未通过的情况下过期,任何人都可以提交一个“关闭”消息来标记它已关闭。这只会清理UI/数据库,没有其他影响。

待办事项:此合约目前假设在单个提案的生命周期内,组成员是静态的。如果在提案开放期间组成员发生变化,这将计算错误值(未来的PR)。

运行此合约

您需要安装Rust 1.53.0+,并带有wasm32-unknown-unknown目标。

您可以通过以下方式运行单元测试

cargo测试

一旦您对内容满意,您可以通过以下方式将其编译为wasm

RUSTFLAGS='-C link-arg=-s' cargo wasm
cp ../../target/wasm32-unknown-unknown/release/tgrade_oc_proposals.wasm .
ls -l tgrade_oc_proposals.wasm
sha256sum tgrade_oc_proposals.wasm

或者,对于生产就绪(优化)构建,在仓库根目录中运行构建命令: https://github.com/CosmWasm/cw-plus#compiling

依赖项

~4–5.5MB
~123K SLoC