wasm-deploy

wasm-deploy is a fully featured deployment suite for complex, multicontract cosmwasm projects


Headlining Features that make this Awesome!

Automatically interfaces with your contracts and their APIs including

Interactive Parsing of all your JsonSchema types

Full Build Automation

Batch messaging


Getting the example working

cd into the workspace_example directory and run bash cargo build This will build the deploy binary. You will notice there is a sym link from the root of the workspace to target/debug/deploy. This is so that you can run the deploy binary from the root of the workspace.

Then you should be able to run bash deploy init This will innitialize the deployment config and will prompt you for a bunch of information. Please wnsure you fill out the optional gRPC endpoint as it is the only client which is currently fully working.

Before you deploy the contracts, please be sure to change the ADMIN constant in deployment/src/defaults.rs to your person dev address.

Deploy all contracts with bash deploy d

Or specific ones with bash deploy d -c contract_1,contract_2

after deploying them to the chain, you can execute the contract with bash deploy execute <contract_name> in this case, use cw20base in place of contractname.

If you make changes to your contract API or deployment code you will need to update the wasm-deploy binary by running bash deploy u

To see a list of commands please run bash deploy --help

What To Expect

In my opinion, the most powerful cosmwasm deployment software ever built. It is infinitely configurable, automatically interfaces with the apis of your contracts, and is super easy to set up.

What Not To Expect

A bug free experience, and seemless upgrades to newer versions. This project is made almost entirely in my spare time and is extremely young. I have plans to support it for quite a long while to come, and I should be very responsive to any issues you may have, so please open an issue on github if you run into one. Or better yet, please contribute and submit a PR.

Project Structure


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

your project must be layed out using cargo workspaces. The API and data types that your contracts use should be defined in the packages directory, so that the deployment crate has access to them.