nonce
field of messages to iterate. A similar approach is used to index the other events, but some lack a sequence number and can be missed if incorrect RPC responses are received - which happens very often. As such, the message indexing task sends transaction IDs where it found events to the other indexing tasks, guaranteeing no Hyperlane event is missed as long as it occurred within the same transaction as the Mailbox.dispatch()
call.
Submitter Task | Description |
---|---|
Message Processor | Polls the local database to check if there are any undelivered messages and pushes them to the Prepare step’s queue. |
Prepare Task | Pops messages from its queue, ensures gas was paid, fetches any metadata and simulates the message delivery transaction. If the simulation succeeds, the message is pushed to the Submit step’s queue. Otherwise, the message is pushed back to the Prepare queue. |
Submit Task | Pops messages from its queue, and sends the delivery transaction onchain. Deliveries are batched whenever possible. If there is no error broadcasting the transaction, the message is pushed to the Confirm step’s queue. Otherwise, the message is pushed back to the Prepare queue. |
Confirm Task | Awaits finality; if a chain reorg occurs, or the delivery transaction reverts, the message is pushed back to the Prepare queue. |
Mailbox.process()
on the destination chain with the aforementioned metadata.
The retry count of a message determines its next delivery attempt according to an exponential backoff strategy. Currently, there is no fixed maximum number of retries after which the relayer will cease to attempt processing a message. However, this is not a guarantee of indefinite retries, and operators should not rely on this as a service level agreement (SLA).
Retry # Range | Delay Between Retries |
---|---|
1 | 5 seconds |
2 | 10 seconds |
3 | 30 seconds |
4 | 1 minute |
5–24 | 3 minutes |
25–39 | Starts at 5 min, increases linearly (adds 1.5 min per retry) |
40–44 | 30 minutes |
45–49 | 1 hour |
50+ | Gradually increases to several hours and eventually days |