#deployment #cosmwasm #smart-contracts #cosmos #cli

wasm-deploy

wasm-deploy 是一个功能齐全的复杂多合约 cosmwasm 项目部署套件

12 个版本 (4 个重大变更)

0.5.0 2023年5月11日
0.5.0-alpha2023年5月9日
0.4.0 2023年4月6日
0.3.0 2023年3月30日
0.1.2 2022年12月27日

119#cosmos

Download history 41/week @ 2024-04-02 108/week @ 2024-04-23

每月52 次下载

MIT 许可证

80KB
2K SLoC

wasm-deploy

wasm-deploy 是一个功能齐全的复杂多合约 cosmwasm 项目部署套件

演示



使它变得惊人的主要功能!

自动与您的合约及其 API 接口,包括

  • ExecuteMsg
  • QueryMsg
  • InstantiateMsg
  • MigrateMsg
  • QueryMsg
  • Cw20HookMsg

所有 JsonSchema 类型的交互式解析

  • 这使得向链发送消息变得超级简单
  • 复杂的消息可以以类型安全的方式发送,只需点击几下即可

完整的构建自动化

  • 使用单个命令 deploy d,您可以构建、实例化、设置配置,并为多个合约执行任何设置。

批量消息

  • 消息批量在一起以节省您的时间!

出色的 Proc 宏

  • wasm-deploy 是建立在一些冗长的特质之上的,并且这些宏确实简化了设置过程。

自动协商 tendermint 版本

  • 自动查询节点以正确协商 tendermint 版本。

获取示例运行

第一步是安装 wasm-opt 并确保它在您的路径中。运行

wasm-opt --version  

或者,您可以在 wasm-deploy 中使用实验性的 wasm-opt 功能。只需将 toml 文件中的行更改为

wasm-deploy = { version = "0.5.0", features = ["wasm-opt"] }

继续克隆此仓库,并 cd 进入 workspace_example 文件夹。

使用以下命令全局安装 wasm-deploy

cargo install --path deployment

然后您应该能够运行

deploy init

这将初始化部署配置,并将提示您输入一些重要信息。在部署合约之前,请务必将部署/src/defaults.rs 中的 ADMIN 常量更改为您的个人开发地址。

部署所有合约

deploy d

或者特定的合约

deploy d -c contract_1,contract_2

部署到链后,您可以执行合约

deploy execute <contract_name>

在这种情况下,用 cw20_base 代替 contract_name。

如果您更改了合约 API 或部署代码,您需要通过运行更新 wasm-deploy 二进制文件

deploy u

这目前将在全局范围内安装二进制文件。

要查看命令列表,请运行

deploy --help

可以使用 get_code_id(contract_name: &str)get_addr(contract_name: &str) 来获取本地合约的代码ID和地址。这允许你向其他合约发送消息,而不必手动输入地址。

配置 wasm-deploy 以与现有的 cosmwasm 项目一起使用

首先确保你已经按照上述步骤安装了 cargo-generate 和 wasm-opt。

使用以下命令安装 cargo generate

cargo install cargo-generate

然后进入你的项目 cd my-contracts 并运行

cargo generate --init cryptechdev/wasm-deploy template

确保项目名称与你的文件夹名称一致,并为二进制/可执行文件选择一个自定义名称,例如 projd,这将替换 deploy 名称。

使用以下命令全局安装 wasm-deploy

cargo install --path deployment

重要提示:生成的部署文件夹仅是一个模板。您必须修改 deployment/src/contract.rs 和 deployment/src/defaults.rs 以匹配您的项目。模板不会立即生效。生成的文件应具有正确的结构和大量的注释以帮助您。

预期内容

在我看来,这是有史以来最强大的 cosmwasm 部署软件。它是无限可配置的,自动与合约的 API 进行接口,并且设置起来超级简单。

不要期待的内容

无缝升级到新版本或超级快速的初始安装。由于每个智能合约工作区都需要为部署的进行方式编写自定义逻辑,因此设置 wasm-deploy 需要固有的底层复杂性。这个项目几乎完全是我在业余时间制作的,而且非常年轻。我有计划在未来很长一段时间内支持它,我应该会对您可能遇到的所有问题做出非常迅速的响应,因此如果您遇到任何问题,请请在 github 上提交一个 issue。或者更好的是,请贡献并提交一个 PR。这个包仍然处于非常早期的 Alpha 阶段。这意味着整个 API 都可能发生变化,错误消息可能不太有帮助,不正确使用或边缘情况可能导致错误或恐慌。

项目结构


workspace-root/
├─ artifacts/
│  ├─ contract_1.wasm
│  ├─ contract_2.wasm
├─ target/
│  ├─ debug/
│  │  ├─ deploy
├─ deploy -> target/debug/deploy
├─ deployment/
│  ├─ src/
│  │  ├─ contracts.rs
│  │  ├─ main.rs
│  │  ├─ Cargo.toml
├─ contracts/
│  ├─ contract_1/
│  │  ├─ Cargo.toml
│  │  ├─ src/
│  ├─ contract_2/
│  │  ├─ Cargo.toml
│  │  ├─ src/
├─ packages/
│  ├─ my_project/
│  │  ├─ contract_1.rs
│  │  ├─ contract_2.rs

功能列表

  • tendermint 0.34 的支持
  • tendermint 0.37 的支持
  • 对两个版本都提供默认兼容模式
  • 完整的部署自动化
  • 交互式解析所有 jsonschema 类型
  • 自动插入合约地址
  • ExecuteMsg
  • QueryMsg
  • InstantiateMsg
  • MigrateMsg
  • QueryMsg
  • Cw20HookMsg
  • 对相同类型的消息进行批处理
  • 对不同类型的消息进行批处理
  • HTTP 客户端
  • 自动 wasm-deploy 编译
  • 助记符密钥
  • 操作系统密钥环密钥
  • Ledger 密钥

依赖项

~44–60MB
~1M SLoC