cycles-quartz/docker/wasmd/README.md

121 lines
3.6 KiB
Markdown
Raw Permalink Normal View History

# Quartz app wasmd image
This folder contains a `Dockerfile` that helps build a single-node [wasmd]
validator for use in testing your Quartz application.
It facilitates the creation of a Docker image with 4 accounts pre-loaded, each
having a small amount of `ucosm` preloaded from genesis for experimentation.
- `admin`
- `alice`
- `bob`
- `charlie`
These accounts' details are stored in clear text in the [/accounts](./accounts/)
folder.
**Note: this image is _not_ intended to be used in production.**
## Running the image
From this directory, simply run:
```bash
make run
```
This will implicitly call `make build` to build the Docker image, and then run
it, binding to the following ports on the local machine:
- 1317
- 9090
- 26656
- 26657
It also implicitly creates a Docker volume called `wasmd_data` such that just
the contents of the `/root` directory in the container persist across restarts.
To wipe this volume and start from scratch, simply terminate the container and
run:
```bash
docker volume rm wasmd_data
```
## Building the image
To build the image without running it, simply run:
```bash
make
```
This will, by default, build a Docker image tagged `informaldev/wasmd:v0.44.0`.
## Transacting on behalf of the accounts
The accounts listed in the [`/accounts`](./accounts/) folder are all already
imported into the `test` keyring within the Docker image. Once the container is
running, you can run the following to list them:
```bash
# Assumes the container is called "wasmd"
docker exec -it wasmd \
wasmd keys list --keyring-backend=test
```
## Importing the account keys
As previously mentioned, the [`/accounts`](./accounts/) folder contains all of
the necessary material to construct the public/private keypairs of the accounts.
A convenient helper target is provided in [`/wasmd/Makefile`](./wasmd/Makefile) to facilitate
importing of these accounts into a local `wasmd` configuration (i.e. on your
host machine, outside of the Docker container). This will allow you to transact
on behalf of any of those accounts from outside of the Docker container.
**NB**: For this to work, you will need the same version of `wasmd` installed on
your local machine as what is built into the `wasmd` Docker image.
```bash
make import-local-accounts
```
To check that the accounts have been imported correctly, on your host machine
run:
```bash
# List all keys available in your local wasmd configuration
wasmd keys list --keyring-backend=test
```
> Note - You don't need to run `make create-local-accounts` because that was already done, hence why the text files (i.e. `alice.txt`) are included on git. However, they won't be in your local keyring until you run `make import-local-accounts`. If we ever have to reset the accounts, you'd run `make delete-local-accounts` followed by `make create-local-accounts` and push the updated accounts to github.
## Querying accounts in the wasmd container
To query, for example, the `admin` account's balance, where the `admin`
account's address is `wasm1mkrm9m8g0dzv5z73xg8yzlj6srqc72qru5xfv3`, once the
Docker container is running, in a separate terminal run:
```bash
# The first "wasmd" indicates the name of the running Docker container, whereas
# the second "wasmd" indicates the name of the command to run inside the
# container.
docker exec -it wasmd \
wasmd query bank balances wasm1mkrm9m8g0dzv5z73xg8yzlj6srqc72qru5xfv3
```
You should see output like:
```bash
balances:
- amount: "12000000000000"
denom: ucosm
- amount: "12000000000000"
denom: ustake
pagination:
next_key: null
total: "0"
```
[wasmd]: https://github.com/CosmWasm/wasmd