5 个版本 (稳定版)

3.0.0 2024 年 7 月 11 日
2.0.0 2024 年 5 月 1 日
2.0.0-rc2024 年 4 月 25 日
1.4.0 2024 年 4 月 15 日
1.2.2 2024 年 1 月 24 日

#203神奇豆

Download history 662/week @ 2024-04-16 625/week @ 2024-04-23 948/week @ 2024-04-30 369/week @ 2024-05-07 435/week @ 2024-05-14 628/week @ 2024-05-21 869/week @ 2024-05-28 515/week @ 2024-06-04 1178/week @ 2024-06-11 645/week @ 2024-06-18 628/week @ 2024-06-25 615/week @ 2024-07-02 941/week @ 2024-07-09 791/week @ 2024-07-16 682/week @ 2024-07-23 540/week @ 2024-07-30

3,172 次每月下载
3 个 crate 中使用 (2 个直接使用)

Apache-2.0GPL-3.0-only

140KB
2.5K SLoC

CW3 固定多重签名

这是 cw3 规范的简单实现。它是在实例化时创建的具有固定地址集的多重签名。每个地址可以具有相同的权重(K/N),或者某些地址可能具有额外的投票权。这类似于原生 Cosmos SDK 多重签名,但不同的是,我们是在链上聚合批准,而不是在链下聚合签名并提交最终结果。

它可以直接使用,可能是 cw3 最安全的实现(因为它是最简单的),但我们将添加更复杂的情况,例如更新多重签名集、不同组的不同权限的不同投票规则,甚至允许代币加权投票。所有这些都可以通过相同的客户端接口完成。

实例化

要创建多重签名,您必须传递一组具有每个地址权重的 HumanAddr,以及通过提案所需的权重。要创建 2 个 3 的多重签名,传递 3 个权重为 1 的投票者和一个 required_weight 为 2。

请注意,0 是一个允许的权重。 这不会赋予任何投票权,但它允许该密钥提交可以被投票者后来批准的提案。任何不在投票者集中的地址都不能提交提案。

执行过程

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

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

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

一旦提案过期而没有通过,任何人都可以提交一个“关闭”消息来标记它已关闭。这只会清理UI/数据库。

运行此合约

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

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

cargotest

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

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

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

依赖关系

~5–17MB
~190K SLoC