This repository hosts Wasmd
, the first implementation of a cosmos zone with wasm smart contracts enabled.
This code was forked from the cosmos/gaia
repository and the majority of the codebase is the same as gaia
.
Note: Requires Go 1.13+
Compatibility: Last merge from cosmos/gaia
was d6dfa141e2ae38a1ff9f53fca8078c0822671b95
make install
make test
if you are using a linux without X or headless linux, look at this article or #31.
To set up a single node testnet, look at the deployment documentation.
If you want to deploy a whole cluster, look at the network scripts.
We provide a docker image to help with test setups. There are two modes to use it
Build: docker build -t cosmwasm/wasmd:manual .
or pull from dockerhub
Bring up a local node with a test account containing tokens
This is just designed for local testing/CI - DO NOT USE IN PRODUCTION
docker volume rm -f wasmd_data
# pass password (one time) as env variable for setup, so we don't need to keep typing it
# add some addresses that you have private keys for (locally) to give them genesis funds
docker run --rm -it \
-e PASSWORD=my-secret-password \
--mount type=volume,source=wasmd_data,target=/root \
cosmwasm/wasmd:manual ./setup.sh cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6
# This will start both wasmd and wasmcli rest-server, only wasmcli output is shown on the screen
docker run --rm -it -p 26657:26657 -p 26656:26656 -p 1317:1317 \
--mount type=volume,source=wasmd_data,target=/root \
cosmwasm/wasmd:manual ./run_all.sh
# view wasmd logs in another shell
docker run --rm -it \
--mount type=volume,source=wasmd_data,target=/root,readonly \
cosmwasm/wasmd:manual ./logs.sh
For CI, we want to generate a template one time and save to disk/repo. Then we can start a chain copying the initial state, but not modifying it. This lets us get the same, fresh start every time.
# Init chain and pass addresses so they are non-empty accounts
rm -rf ./template && mkdir ./template
docker run --rm -it \
-e PASSWORD=my-secret-password \
--mount type=bind,source=$(pwd)/template,target=/root \
cosmwasm/wasmd:manual ./setup.sh cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6
sudo chown -R $(id -u):$(id -g) ./template
# FIRST TIME
# bind to non-/root and pass an argument to run.sh to copy the template into /root
# we need wasmd_data volume mount not just for restart, but also to view logs
docker volume rm -f wasmd_data
docker run --rm -it -p 26657:26657 -p 26656:26656 -p 1317:1317 \
--mount type=bind,source=$(pwd)/template,target=/template \
--mount type=volume,source=wasmd_data,target=/root \
cosmwasm/wasmd:manual ./run_all.sh /template
# RESTART CHAIN with existing state
docker run --rm -it -p 26657:26657 -p 26656:26656 -p 1317:1317 \
--mount type=volume,source=wasmd_data,target=/root \
cosmwasm/wasmd:manual ./run_all.sh
# view wasmd logs in another shell
docker run --rm -it \
--mount type=volume,source=wasmd_data,target=/root,readonly \
cosmwasm/wasmd:manual ./logs.sh