This section describes the configuration and commands that can be used to start the relayer and relay packets over one or multiple paths.
To relay packets only use
packets as strategy in the
global section of the configuration file:
[global] strategy = 'packets' log_level = 'info'
Then start hermes using the start command:
The relayer sends packet transactions triggered by IBC packet events for all open channels between the configured chains. This is also referred to packet streaming.
After the relayer 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, the relayer 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: the relayer 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: the relayer builds a
MsgAcknowledgementpacket that is sent to the
In addition to these events, the relayer will also handle channel closing events:
chan_close_init: the relayer 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.