-
Notifications
You must be signed in to change notification settings - Fork 305
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: add hermes setup steps to guide (#4732)
## Describe your changes Ported the contents from the old wiki page (since cleaned up) on configuring Hermes to the proper dev guide, beside the other node operator docs. Most of the advice is "use this fork" and "add these specific" options, but at least now there's a single URL to collect that info. We can revise once the relevant Penumbra-compatibility changes in the fork are upstreamed. ## Issue ticket number and link N/A ## Checklist before requesting a review - [x] If this code contains consensus-breaking changes, I have added the "consensus-breaking" label. Otherwise, I declare my belief that there are not consensus-breaking changes, for the following reason: > docs-only Co-authored-by: Conor Schaefer <[email protected]>
- Loading branch information
Showing
6 changed files
with
100 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# IBC relayer | ||
|
||
In order for Penumbra to interact with the broader [Cosmos] ecosystem, the community must | ||
run [IBC] relaying software, to transmit packets between chains. Relaying is by design | ||
permissionless. Some examples of relayer software are: | ||
|
||
* [hermes], maintained by [Informal Systems] | ||
* [relayer], maintained by [Strangelove] | ||
|
||
This guide provides a tutorial for [setting up Hermes for use with Penumbra](relayer/hermes.md). | ||
|
||
[Cosmos]: https://cosmos.network | ||
[IBC]: https://ibc.cosmos.network | ||
[hermes]: https://hermes.informal.systems | ||
[relayer]: https://github.com/cosmos/relayer | ||
[Informal Systems]: https://informal.systems | ||
[Strangelove]: https://strange.love |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
# Hermes and Penumbra | ||
|
||
## Using a compatible Hermes version | ||
Penumbra-compatibility exists in a fork of the Hermes software, available at: | ||
[https://github.com/penumbra-zone/hermes](https://github.com/penumbra-zone/hermes). | ||
|
||
```shell | ||
git clone https://github.com/penumbra-zone/hermes | ||
cd hermes | ||
cargo build --release | ||
cp -v ./target/release/hermes /usr/local/bin/hermes | ||
``` | ||
|
||
Use the latest commit in that repo. | ||
Eventually the necessary changes will be upstreamed to the parent repo. | ||
Until that happens, use the forked version. | ||
|
||
## Prerequisites | ||
|
||
In order to run a Hermes instance for Penumbra, you'll need to prepare the following: | ||
|
||
* The chain ID of the Penumbra network | ||
* The chain ID of the counterparty network | ||
* A funded Penumbra wallet, to pay fees on Penumbra (the host chain) | ||
* A funded counterparty wallet, to pay fees on the counterparty chain | ||
* Two (2) API endpoints for Penumbra node, `pd` gRPC and CometBFT JSON-RPC | ||
* Two (2) API endpoints for counterparty node, app gRPC and CometBFT JSON-RPC | ||
* A compatible version of `hermes`, built as described above. | ||
|
||
Crucially, the wallets should be unique, dedicated solely to this instance of Hermes, | ||
and not used by any other clients. When you have the above information, you're ready to proceed. | ||
|
||
## Configuring Hermes | ||
|
||
For the most part, you can follow the [official Hermes docs on configuration](https://hermes.informal.systems/documentation/configuration/configure-hermes.html). | ||
There are two Penumbra-specific exceptions: 1) key support; and 2) on-disk view database support. | ||
|
||
### Penumbra spend keys | ||
The Penumbra integration does Hermes does not support the [`hermes keys add`](https://hermes.informal.systems/documentation/commands/keys/index.html) | ||
flow for Penumbra chains. Instead, you should add the Penumbra wallet spendkey directly to the generated `config.toml` file, like so: | ||
|
||
```toml | ||
# Replace "XXXXXXXX" with the spend key for the Penumbra wallet. | ||
kms_config = { spend_key = "XXXXXXXX" } | ||
``` | ||
|
||
To find the wallet's spend key, you can view `~/.local/share/pcli/config.toml`. | ||
|
||
### Penumbra view database | ||
Then, to configure on-disk persistence of the Penumbra view database, add this line to your config: | ||
|
||
```toml | ||
# Update the path below as appropriate for your system, | ||
# and make sure to create the directory before starting Hermes. | ||
view_service_storage_dir = "/home/hermes/.local/share/pcli-hermes-1" | ||
``` | ||
|
||
Consider naming the directory `pcli-hermes-<counterparty>`, where counterparty is the name of the counterparty chain. | ||
If you do not set this option, `hermes` will still work, but it will need to resync with the chain on startup, | ||
which can take a long time, depending on how many blocks exist. | ||
|
||
## Path setup | ||
|
||
Again, see the [official Hermes docs on path setup](https://hermes.informal.systems/documentation/commands/path-setup/index.html). | ||
In order to validate that the channels are visible on host chain, use `pcli query ibc channels` and confirm they match | ||
what was output from the `hermes create` commands. | ||
|
||
## Best practices | ||
|
||
Consult the official Hermes docs for [running in production](https://hermes.informal.systems/tutorials/production/index.html), | ||
as well as the [telemetry guide](https://hermes.informal.systems/documentation/telemetry/index.html). | ||
You'll need to communicate the channels that you maintain to the community. How you do so is up to you. | ||
|
||
[hermes]: https://hermes.informal.systems |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters