5 个不稳定版本
0.5.0 | 2023 年 5 月 11 日 |
---|---|
0.5.0-alpha | 2023 年 5 月 9 日 |
0.4.0 | 2023 年 4 月 6 日 |
0.3.0 | 2023 年 3 月 30 日 |
#188 in #cosmos
56 每月下载次数
在 wasm-deploy 中使用
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