wormhole/wormchain/development.md

90 lines
2.1 KiB
Markdown
Raw Normal View History

# Develop
## prerequsites
- Go >= 1.16
- nodejs >= 16
## Building the blockchain
Run
```shell
make
```
This command creates a `build` directory and in particular, the
`build/wormchaind` binary, which can be used to run and interact with the
blockchain.
You can start a local development instance by running
```shell
make run
```
Or equivalently
```shell
./build/wormchaind --home build
```
If you want to reset the blockchain, just run
```shell
make clean
```
Then you can `make run` again.
## Running tests
Golang tests
make test
Client tests, run against the chain. Wormchain must be running via `make run` or `tilt up -- --wormchain`
cd ./ts-sdk
npm ci
npm run build
cd ../testing/js
npm ci
npm run test
## Interacting with the blockchain
You can interact with the blockchain by using the go binary:
```shell
./build/wormchaind tx --from tiltGuardian --home build
```
Note the flags `--from tiltGuardian --home build`. These have to be passed
in each time you make a transaction (the `tiltGuardian` account is created in
`config.yml`). Queries don't need the `--from` flag.
## Scaffolding stuff with Ignite
Wormchain was initially scaffolded using the [Ignite CLI](https://github.com/ignite) (formerly Starport). Now, we only use Ignite for generating code from protobuf definitions.
To avoid system compatibility issues, we run Ignite using docker. The below commands should be run using the ignite docker container (see the Makefile recipes for examples).
```shell
ignite scaffold type guardian-key key:string --module wormhole --no-message
```
modify `proto/wormhole/guardian_key.proto` (string -> bytes)
```shell
ignite scaffold message register-account-as-guardian guardian-pubkey:GuardianKey address-bech32:string signature:string --desc "Register a guardian public key with a wormhole chain address." --module wormhole --signer signer
```
Scaffold a query:
```shell
ignite scaffold query latest_guardian_set_index --response LatestGuardianSetIndex --module wormhole
```
(then modify "wormchain/x/wormhole/types/query.pb.go" to change the response type)