# External relays

The Asterizm Protocol has been designed to allow not only internal off-chain modules but also external services to act as [relays](/infrastructure/asterizm-relayer.md). These external relays can be trusted services that have undergone protocol audits and have set up the necessary infrastructure.

Each relay has the authority to establish its transfer fee in the native currency of the network. All relay data is stored on-chain, making this information accessible to everyone.

Every client is free to choose which relay they want to use for sending confirmations of their transfers (**`transferHash`**). To do this, the client should invoke the method <mark style="color:orange;">`setExternalRelay(address _externalRelay)`</mark> on their [client contract](/infrastructure/asterizm-connector/client-smart-contract-abstraction.md).&#x20;

{% hint style="warning" %}
IMPORTANT!&#x20;

A client can only set the address of an external relay once. If they attempt to call the method again, the contract will return an error.

Please exercise caution when configuring this parameter because once set, you cannot change it or revert to the "default" relay. You will need to redeploy contracts if you wish to make changes in this regard.
{% endhint %}


---

# 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://docs.asterizm.io/guides/external-relays.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.
