# Relayers

A relayer is an off-chain daemon responsible for relaying cross-chain messages from the source chain to the destination chain. In IBC, a user initiates a cross-chain process by submitting one transaction (sometimes two) on the source chain. Then, a relayer sees that the rest is done, including submitting transactions on the destination chain and paying gas for that.&#x20;

Using relayers in cross-chain systems poses two issues:&#x20;

1. **Gas optimization on the target chain:** Relayers don't directly interact with users, so they don’t know whether a user prefers to pay more gas for faster cross-chain completion or would prefer cost over timeliness. Therefore, relayers can't determine a gas level that suits the user’s context.
2. **Persistent liveness of relayers:** For interoperability protocols like IBC, although relayers don't need to be trusted (as they can't cheat), the protocol relies on their liveness. The operation of relayers should be out of something other than altruism in the long term, so incentivizing the work of relayers is necessary.&#x20;

For example, IBC designed [ICS29](https://github.com/cosmos/ibc/tree/main/spec/app/ics-029-fee-payment) to establish a permissionless relay market. However, providing token rewards for off-chain services’ “availability,” is always challenging because the service's contribution can’t not fully verified on-chain. On the other hand, an open, competitive relay market almost inevitably leads to a winner-takes-all outcome, wherein the winner gains the power to halt the bridge.&#x20;

The ideal scenario would be for several independent relayers for each IBC connection to consistently compete to offer fast and affordable services. However, an incentive mechanism for this outcome is yet to come. Almost all relayers are operated by an entity closely related to the particular bridge team. Therefore, relayers are the most stubborn obstacle to realizing a completely decentralized cross-chain system.&#x20;

* *<mark style="color:blue;">Can the off-chain relayer role be eliminated in a cross-chain system?</mark>*&#x20;

Yes, it can. (This is addressed below.)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://omnity.gitbook.io/litepaper/challenges/relayers.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
