18 releases (9 stable)
new 1.1.7 | Mar 26, 2025 |
---|---|
1.1.3 | Dec 2, 2024 |
1.1.2 | Aug 30, 2024 |
0.2.1 | Aug 7, 2024 |
0.1.1 | Dec 16, 2022 |
#733 in Magic Beans
239 downloads per month
510KB
11K
SLoC
Injective Cosmwasm
This repository contains packages and examples for how to use CosmWasm with Injective.
Packages
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. |
Example Contracts
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. |
Development
Environment Setup
- 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
Unit / Integration Test
Each contract contains Rust unit tests embedded within the contract source directories. You can run
cargo unit-test
Compiling
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
Production
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.
Formatting
Make sure you run rustfmt
before creating a PR to the repo.
To run rustfmt
,
cargo fmt
Linting
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.
Run
cargo clippy -- -D warnings
Testing
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.
Dependencies
~35–53MB
~879K SLoC