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 日

#8 in #multisig

Download history 334/week @ 2024-05-05 470/week @ 2024-05-12 505/week @ 2024-05-19 927/week @ 2024-05-26 462/week @ 2024-06-02 1191/week @ 2024-06-09 574/week @ 2024-06-16 657/week @ 2024-06-23 540/week @ 2024-06-30 923/week @ 2024-07-07 898/week @ 2024-07-14 685/week @ 2024-07-21 580/week @ 2024-07-28 452/week @ 2024-08-04 551/week @ 2024-08-11 228/week @ 2024-08-18

1,840 每月下载量
用于 2 个 crate(通过 abstract-cw-plus-interfac…

Apache-2.0GPL-3.0-only

255KB
5K SLoC

CW3 弹性多重签名

这基于 cw3-fixed-multisig,对 cw3 规范 进行了更强大的实现。这是一个由 cw4(组) 合同支持的多重签名合约,该合约独立维护投票者集。

这提供了 2 个主要优势

  • 您可以使用同一组支持的两个不同的多重签名,具有不同的投票阈值。因此,您可以拥有 50% 的投票权和 67% 的投票权,这两个投票权始终使用相同的投票者集,但可以采取其他行动。
  • 待办事项:它允许动态多重签名组。由于组可以更改,我们可以将其中一个多重签名设为组合同的管理员,并且

除了动态投票集之外,与原生 Cosmos SDK 多重签名的主要区别在于,它将在链上聚合签名,并具有可见的提案(如 Cosmos SDK 中的 x/gov),而不是要求签署者链下共享签名。

实例化

创建这种多重签名的第一步是实例化一个具有所需成员集的cw4合约。目前,这仅由cw4-group支持,但我们将添加一个基于代币权重的群组合约(待办事项)。

如果您创建了cw4-group合约并希望多重签名能够修改其自己的群组,请通过多个交易执行以下操作

  • 使用您的个人密钥作为管理员实例化cw4-group
  • 实例化一个指向群组的多重签名
  • 在群组合约上添加AddHook{multisig}
  • 在群组合约上执行UpdateAdmin{multisig}

这是创建此类循环依赖的当前做法,依赖于外部驱动程序(在链上脚本这样的自部署合约非常困难甚至不可能)。(待办事项:更好地记录)。

在创建多重签名时,您必须设置通过投票所需的权重以及最大/默认投票周期。(待办事项:允许更多阈值类型)

执行过程

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

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

一旦提案被“通过”,任何人都可以提交一个“执行”消息。这将触发提案发送所有存储的消息并更新其状态为“已执行”,因此它不能再次运行。(注意:如果执行失败——出于任何原因——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
~204K SLoC