#部署 #cosmwasm #智能合约 #cosmos #cli

wasm-deploy-derive

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

5 个不稳定版本

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

#188 in #cosmos

Download history 7/week @ 2024-03-11 17/week @ 2024-04-01 134/week @ 2024-04-22

56 每月下载次数
wasm-deploy 中使用

MIT 许可证

19KB
304

wasm-deploy

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

演示



让人惊叹的亮点!

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

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

交互式解析所有 JsonSchema 类型

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

完整的构建自动化

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

批量消息

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

出色的过程宏

  • wasm-deploy 是基于一些冗长的 trait 构建的,这些宏真正简化了设置过程。

自动协商 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

这将初始化部署配置并提示您输入大量重要信息。在部署合约之前,请务必将 deployment/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上打开一个问题。或者更好的是,请贡献并提交一个PR。这个crate仍然非常处于早期alpha阶段。这意味着整个API都可能发生变化,错误信息不太可能非常有帮助,并且不当使用或边缘情况可能会导致错误或panic。

项目结构


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密钥

依赖关系

~0.9–1.4MB
~27K SLoC