12 个版本 (4 个重大变更)
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日 |
0.1.2 | 2022年12月27日 |
119 在 #cosmos
每月52 次下载
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