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 日 |
#2090 in 神奇豆子
69 每月下载次数
250KB
5.5K SLoC
Tgrade 验证器投票提案
这定义并实现了根据提案投票管理参与点和验证者减半的监督社区功能,基于 TG3。
实例化
创建验证器投票提案合同的第一个步骤是实例化一个具有所需成员集的 tg4 合同。
我们打算使用这个合同,一个受信任的圈子作为后盾的 tg4 组。在 tgrade 二进制文件中,我们为每个区块链有一个唯一的受信任圈子,标记为“监督社区”,它将成为单一 tgrade-oc-proposals 合同的后盾成员合同。
此合同还需要一个 tg4-engagement 合同的地址,以便它可以发送消息给该合同,执行已通过的提案以授予其成员参与点。
执行流程
首先,注册选民必须提交一个提案。这也包括提案者对提案的第一个“是”投票。提案者可以为投票过程设置过期时间,或者默认为创建合同时提供的限制(因此提案可以在几天后关闭)。
在提案过期之前,任何具有非零权重的投票者都可以添加他们的投票。只有“是”票被计算。如果在提案过期日期之前提交了足够的“是”票,则状态设置为“通过”。
一旦提案“通过”,任何人都可以提交一个“执行”消息。这将触发提案发送所有存储的消息并更新其状态为“已执行”,因此它不能再次运行。(注意:如果由于任何原因(例如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
~122K SLoC