This section describes the configuration and commands that can be used to start Hermes and relay packets over one or multiple paths.
To relay packets only configure the
mode section of the configuration file like so:
[global] log_level = 'info' [mode] [mode.clients] enabled = true # ... [mode.connections] enabled = false [mode.channels] enabled = false [mode.packets] enabled = true # ...
Then start Hermes using the start command:
Hermes sends packet transactions triggered by IBC packet events for all open channels between the configured chains. This is also referred to packet streaming.
After Hermes is started using the
start command, it listens to IBC packet events emitted by any of
the configured chains. Assuming the events are coming from a
source chain, Hermes builds packets
based on these events, packets that are then sent either to the
source chain or the counterparty (
Current events and actions are:
send_packet: Hermes builds a packet message with the
packetobtained from the event and any required proofs obtained from the counterparty of the chain where the message is sent. The concrete packet is:
MsgRecvPacket, sent to
destinationchain if the channel is in open state on the
destinationchain, and a timeout has not occurred,
MsgTimeout, sent to the
sourcechain if the channel is in open state on the
destinationchain, but a timeout has occurred.
MsgTimeoutOnClose, sent to the
sourcechain if the channel is in closed state on the
write_acknowledgement: Hermes builds a
MsgAcknowledgementpacket that is sent to the
In addition to these events, Hermes will also handle channel closing events:
chan_close_init: Hermes builds a
MsgChannelCloseConfirmand sends it to the
If the relay path is using a non-zero delay connection, then
hermes will delay all packet transactions. The delay is relative to the submission time for the client update at the height required by the packet proof.
The delay is used to prevent light client attacks and ensures that misbehavior detection finalizes before the transaction is submitted.
For more information on the misbehavior detector see the misbehaviour section.