This repository contains packages and examples for how to use CosmWasm with Injective.
These packages can be used to integrate CosmWasm and Injective.
Package | Description |
---|---|
injective-cosmwasm |
Package for Injective-specific queries and messages. |
injective-math |
Math utility library including custom FPDecimal type. |
injective-protobuf |
Rust protobuf files generation for Injective messages. |
injective-std |
Injective's proto-generated types and helpers built using Buf. Enables interaction with both custom and standard modules. |
These contracts can be used as examples for CosmWasm and Injective.
Contract | Description |
---|---|
dummy |
A simply template for starting a new contract. |
atomic-order-example |
Example contract on how to do atomic market orders on Injective incl handling the response. |
swap-contract |
More complex atomic swaps over multiple market hops. |
- Rust v1.69.0
wasm32-unknown-unknown
target- Docker
- Install
rustup
- Run the following
rustup default 1.69.0
rustup target add wasm32-unknown-unknown
- Make sure Docker is installed on your machine
Each contract contains Rust unit tests embedded within the contract source directories. You can run
cargo unit-test
Go to the contract directory and run
After making sure tests pass, you can compile each contract with the following
RUSTFLAGS='-C link-arg=-s' cargo wasm
sha256sum target/wasm32-unknown-unknown/release/<CONTRACT_NAME>.wasm
For production builds, run the following:
docker run --rm -v "$(pwd)":/code \
--mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \
--mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \
cosmwasm/workspace-optimizer:0.13.0
This performs several optimizations which can significantly reduce the final size of the contract binaries, which will
be available inside the artifacts/
directory.
Make sure you run rustfmt
before creating a PR to the repo.
To run rustfmt
,
cargo fmt
You should run clippy
also. This is a lint tool for Rust. It suggests more efficient/readable code. You can
see the clippy document for more information.
cargo clippy -- -D warnings
Developers are strongly encouraged to write unit tests for new code, and to submit new unit tests for old code. Unit
tests can be compiled and run with: cargo test --all
. For more details, please reference Unit Tests.