90 lines
2.1 KiB
Markdown
90 lines
2.1 KiB
Markdown
# 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)
|