- 15.06.2022: Proposed.
In this ADR we provide recommendations and intuitions to using flags for all the arguments of the Hermes commands.
The problem we are trying to solve is a unified approach to CLI arguments for Hermes v1.0.0.
To avoid confusion, all the parameters should take long flags. The following approach should be applied:
- Only long flags are used in order to avoid having nonintuitive flags or conflicting flags.
- Any parameter ending with
_id
should have the_id
removed from the flag to shorten it. For example the flag forchain_id
should only bechain
. - Flags which can be shortened and still be meaningful should have a shortened alias. This is done for
connection
,channel
andsequence
, which have respectivelyconn
,chan
andseq
aliases. - For the channel and connection creation CLIs, the objects at the two ends are prefixed by
--a-
and--b-
. Example--a-chain
and--b-chain
. - Whenever
chain
,conn
,chan
andport
flags have to be disambiguated with a specifier, the specifier will be a prefix. Example of specifiers we currently use arehost
,reference
,a
,b
andcounterparty
.
The following commands are implemented, with the binary name hermes
often omitted:
-
hermes --config <CONFIG> <COMMAND>
-
hermes --json <COMMAND>
-
create client --host-chain <HOST_CHAIN_ID> --reference-chain <REFERENCE_CHAIN_ID>
- Optional:
[--clock-drift <CLOCK_DRIFT>] [--trust-threshold <TRUST_THRESHOLD>] [--trusting-period <TRUSTING_PERIOD>]
- Optional:
-
update client --host-chain <HOST_CHAIN_ID> --client <CLIENT_ID>
- Optional:
[--height <REFERENCE_HEIGHT>] [--trusted-height <REFERENCE_TRUSTED_HEIGHT>]
- Optional:
-
upgrade client --host-chain <HOST_CHAIN_ID> --client <CLIENT_ID> --upgrade-height <REFERENCE_UPGRADE_HEIGHT>
-
upgrade clients --reference-chain <REFERENCE_CHAIN_ID> --upgrade-height <REFERENCE_UPGRADE_HEIGHT>
- Optional:
[--host-chain <HOST_CHAIN_ID>]
- Optional:
-
create connection --a-chain <A_CHAIN_ID> --b-chain <B_CHAIN_ID>
- Optional:
[--delay <DELAY>]
- Optional:
-
create connection --a-chain <A_CHAIN_ID> --a-client <A_CLIENT_ID> --b-client <B_CLIENT_ID>
- Optional:
[--delay <DELAY>]
- Optional:
-
create channel --a-chain <A_CHAIN_ID> --a-connection <A_CONNECTION_ID> --a-port <A_PORT_ID> --b-port <B_PORT_ID>
- Optional:
[--channel-version <VERSION>] [--order <ORDER>]
- Optional:
-
create channel --a-chain <A_CHAIN_ID> --b-chain <B_CHAIN_ID> --a-port <A_PORT_ID> --b-port <B_PORT_ID> --new-client-connection
- Optional:
[--channel-version <VERSION>] [--order <ORDER>] [--yes]
- Optional:
-
keys add --chain <CHAIN_ID> --key-file <KEY_FILE>
- Optional:
[--hd-path <HD_PATH>] [--key-name <KEY_NAME>]
- Optional:
-
keys add --chain <CHAIN_ID> --mnemonic-file <MNEMONIC_FILE>
- Optional:
[--hd-path <HD_PATH>] [--key-name <KEY_NAME>]
- Optional:
-
keys balance --chain <CHAIN_ID>
- Optional:
[--key-name <KEY_NAME>]
- Optional:
-
keys delete --chain <CHAIN_ID> --all
-
keys delete --chain <CHAIN_ID> --key-name <KEY_NAME>
-
keys list --chain <CHAIN_ID>
listen --chain <CHAIN_ID>
- Optional:
[--events <EVENT>...]
- Optional:
misbehaviour --chain <CHAIN_ID> --client <CLIENT_ID>
start
- Optional:
[--full-scan]
- Optional:
clear packets [OPTIONS] --chain <CHAIN_ID> --port <PORT_ID> --channel <CHANNEL_ID>
- Optional:
[--key-name <KEY>] [--counterparty-key-name <KEY>]
- Optional:
Client
-
query client connections --chain <CHAIN_ID> --client <CLIENT_ID>
- Optional:
[--height <HEIGHT>]
- Optional:
-
query client consensus --chain <CHAIN_ID> --client <CLIENT_ID>
- Optional:
[--consensus-height <CONSENSUS_HEIGHT>] [--height <HEIGHT>] [--heights-only]
- Optional:
-
query client header --chain <CHAIN_ID> --client <CLIENT_ID> --consensus-height <CONSENSUS_HEIGHT>
- Optional:
[--height <HEIGHT>]
- Optional:
-
query client state --chain <CHAIN_ID> --client <CLIENT_ID>
- Optional:
[--height <HEIGHT>]
- Optional:
-
query clients --host-chain <HOST_CHAIN_ID>
- Optional:
[--omit-chain-ids] [--reference-chain <REFERENCE_CHAIN_ID>]
- Optional:
Connection
-
query connection channels --chain <CHAIN_ID> --connection <CONNECTION_ID>
-
query connection end --chain <CHAIN_ID> --connection <CONNECTION_ID>
- Optional:
[--height <HEIGHT>]
- Optional:
-
query connections --chain <CHAIN_ID>
- Optional:
[--counterparty-chain <COUNTERPARTY_CHAIN_ID>] [--verbose]
- Optional:
Channel
-
query channel client --chain <CHAIN_ID> --port <PORT_ID> --channel <CHANNEL_ID>
-
query channel end --chain <CHAIN_ID> --port <PORT_ID> --channel <CHANNEL_ID>
- Optional:
[--height <HEIGHT>]
- Optional:
-
query channel full --chain <CHAIN_ID> --port <PORT_ID> --channel <CHANNEL_ID>
- Optional:
[--height <HEIGHT>] [--verbose]
- Optional:
-
query channels --chain <CHAIN_ID>
- Optional:
[--counterparty-chain <COUNTERPARTY_CHAIN_ID>] [--verbose]
- Optional:
Packet
-
query packet ack --chain <CHAIN_ID> --port <PORT_ID> --channel <CHANNEL_ID> --sequence <SEQUENCE>
- Optional:
[--height <HEIGHT>]
- Optional:
-
query packet acks --chain <CHAIN_ID> --port <PORT_ID> --channel <CHANNEL_ID>
-
query packet commitment --chain <CHAIN_ID> --port <PORT_ID> --channel <CHANNEL_ID> --sequence <SEQUENCE>
- Optional:
[--height <HEIGHT>]
- Optional:
-
query packet commitments --chain <CHAIN_ID> --port <PORT_ID> --channel <CHANNEL_ID>
-
query packet pending --chain <CHAIN_ID> --port <PORT_ID> --channel <CHANNEL_ID>
-
query packet pending-acks --chain <CHAIN_ID> --port <PORT_ID> --channel <CHANNEL_ID>
-
query packet pending-sends --chain <CHAIN_ID> --port <PORT_ID> --channel <CHANNEL_ID>
Transfer
query transfer denom-trace --chain <CHAIN_ID> --hash <HASH>
Tx
query tx events --chain <CHAIN_ID> --hash <HASH>
completions --shell <SHELL>
config validate
health-check
Proposed.
17.06.22
The following are not yet implemented:
- Optional flags for
upgrade clients
, issue #2311 - Optional flags for
query connections
, issue #2310 - Updating
query channel ends
toquery channel full
The PR which updates the flags for all the commands as described in this ADR: #2275
- Clear parameters for Hermes commands
- Breaking changes which will require updating anything using Hermes
- Proposal in issue: #2239