Skip to content

puneet2019/cosmwasm-examples

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

335 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cosmwasm Examples

CircleCI

This repo is a collection of contracts built with the cosmwasm framework. Anyone building on cosmwasm is encouraged to submit their contracts as a sub-project via a PR.

The organization is relatively simple. The top-level directory is just a placeholder and has no real code. And we use workspaces to add multiple contracts below. This allows us to compile all contracts with one command.

Usage:

The following contracts are available for use. You can view the source code under src and a precompiled wasm ready for deployment under contract.wasm. Take a look here:

  • escrow - A basic escrow with timeout and partial release
  • erc20 - Basic implementation the erc20 interface for CosmWasm, as a base for token designers

Development

Starting a contract

If you want to add a contract, first fork this repo and create a branch for your PR. I suggest setting it up via cosmwasm-template:

cargo generate --git https://github.com/confio/cosmwasm-template.git --name FOO

Then update the README.md to reflect your actual contract (just read the README.md in the autogenerated template - it explains a lot).

Preparing for merge

Before you merge the code, make sure it builds and passes all tests, both in the package, and when calling it from the root packages cargo wasm && cargo test. This should show your package is covered by the CI.

There is also quite some useful information in Development.md and Publishing.md in the newly generated contract.

You should also prepare a compiled contract.wasm before each merge to master. This is not enforced by the CI (a full build each commit), but should be tested on merge. See rust-optimizer for an explanation of how to make a deterministic build.

rm contract.wasm

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/rust-optimizer:0.8.0

# verify output - these should be the same
sha256sum contract.wasm
cat hash.txt

If the sha256 hash changes without any code changes, even when compiling on different machines, or removing those cache volumes, then please submit an issue on rust-optimizer.

Once you pass these checks, please open a PR on this repo.

About

Example contracts for using cosmwasm

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 99.3%
  • Shell 0.7%