Skip to content


Folders and files

Last commit message
Last commit date

Latest commit


Repository files navigation

CosmWasm Examples


This repo is a collection of simple contracts built with the cosmwasm framework. Smart contracts here are for only demonstration purposes, not production ready. Production grade smart contracts are collected under cw-plus.

This repo's 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.


The following contracts are available for use. For each of the contracts in contracts, you can view the source code under src and a precompiled wasm ready for deployment called contract.wasm.

Take a look here:

  • escrow - A basic escrow with timeout and partial release
  • nameservice - Simple name service application to buy names and map values to those names
  • voting - An example voting contract to create, manage, vote and deposit on polls
  • simple-option - A contract that replicates options in finance
  • cw20-pot - Basic smart contract using cw20 contact

You can get more info from file in each of the contacts.


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 cw-template:

cargo generate --git --name FOO

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

Preparing for merge

Before you merge the code, make sure it builds and passes all tests:


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

Release builds

On every tag release builds are automatically created and deployed to GitHub Releases.

You can build release artifacts manually like this, which creates a reproducible optimized build for each contract and saves them to the ./artifacts directory:

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.12.3 ./contracts/*/