# Multi-Relay Support

> ### **Using multiple relays, alongside the ETHGas relays, will improve the reliability of your block proposals and result in higher rewards**

Validators have two relay configuration options when using ETHGas:

1. **Multi-relay:** Connect to any relays.
2. **ETHGas relays only:** Connect to only ETHGas relays.

{% hint style="success" %}
Both relay configurations use the commit-boost pipeline for block building.
{% endhint %}

## 1. Multi-relay

To use any relay with a validator registered to ETHGas, additional configuration is required. The fee recipient for the validators using ETHGas must be set to the ETHGasPool contract address. Then, in the ETHGas commit-boost module configuration file, your payout address needs to be set.

* **ETHGasPool - Mainnet :** [**0x3314Fb492a5d205A601f2A0521fAFbD039502Fc3**](https://etherscan.io/address/0x3314fb492a5d205a601f2a0521fafbd039502fc3)
* **ETHGasPool - Hoodi:** [**0x104Ef4192a97E0A93aBe8893c8A2d2484DFCBAF1**](https://hoodi.etherscan.io/address/0x104Ef4192a97E0A93aBe8893c8A2d2484DFCBAF1)

By setting your fee recipient on your validator clients, multi-relay support will automatically be enabled. Payments will still be made directly to your payout address in the block proposed by your validators.

{% hint style="info" %}
When migrating from ETHGas Relay Only to Multi-Relay, your `payout_address` should be moved from the validator client to the `config.toml` and the ETHGasPool contract address should be used on the validator client.
{% endhint %}

{% tabs %}
{% tab title="Standard" %}

<figure><img src="https://1913553586-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBk99eVkZsNrI6feXAyYs%2Fuploads%2FpmkmbNqf5rAtkhcfypew%2FImage20260317151952.png?alt=media&#x26;token=fb606709-4a45-4d78-aa06-b63f36de99bf" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="SSV" %}

<figure><img src="https://1913553586-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBk99eVkZsNrI6feXAyYs%2Fuploads%2FqZIkXFDyH8Vk36QLzxeO%2FImage20260416121308%402x.png?alt=media&#x26;token=a1a77683-1a15-46e6-8835-145e95983d3d" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Obol" %}

<figure><img src="https://1913553586-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBk99eVkZsNrI6feXAyYs%2Fuploads%2FEJrviALcQQw9ZMFg3Lio%2FImage20260416121223%402x.png?alt=media&#x26;token=0eac8df9-bccf-4740-bd37-e1e0d5df7451" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% stepper %}
{% step %}

### Set the payout address in config.toml

The payout address should be set to the address where you want your rewards paid out.

{% tabs %}
{% tab title="Standard" %}
{% code title="config.toml" %}

```toml
[[modules]]
id = "ETHGAS_COMMIT"
type = "commit"
...
payout_address = "<YOUR_PAYOUT_ADDRESS>"

# You need to re-register your validators when updating your payout_address
registration_mode = "standard" # or standard-mux
enable_registration = true
```

{% endcode %}
{% endtab %}

{% tab title="SSV" %}
{% code title="config.toml" %}

```toml
[[modules]]
id = "ETHGAS_COMMIT"
type = "commit"
...
# payout_address is not required

# You need to re-register your validators when updating your payout_address
registration_mode = "ssv"
enable_registration = true
...

# Each payout address in the array corresponds positionally 
# to the SSV node operator owner at the same index
ssv_node_operator_owner_payout_addresses = [
    "0x...",
    "0x..."
]
```

{% endcode %}
{% endtab %}

{% tab title="Obol" %}
{% code title="config.toml" %}

```toml
[[modules]]
id = "ETHGAS_COMMIT"
type = "commit"
...
# payout_address is not required

# You need to re-register your validators when updating your payout_address
registration_mode = "obol"
enable_registration = true
...

# Each payout address in the array corresponds positionally 
# to the Obol node operator owner at the same index
obol_node_operator_owner_payout_addresses = [
    "0x...",
    "0x..."
]
```

{% endcode %}
{% endtab %}
{% endtabs %}

* You could set a single payout address across all the validator keys. Alternatively, you could also set different payout addresses for different keys.
* More details for the config can be found in <https://github.com/ethgas-developer/ethgas-preconf-commit-boost-module/blob/main/extra-config-notes.md>
  {% endstep %}

{% step %}

### Re-run the ETHGas commit boost module to activate this change.

This step is required to register the changes to the ETHGas account.
{% endstep %}

{% step %}

### Set the ETHGasPool contract as the validator fee recipient

This should be configured on the validator client.

* **ETHGasPool - Mainnet :** [**0x3314Fb492a5d205A601f2A0521fAFbD039502Fc3**](https://etherscan.io/address/0x3314fb492a5d205a601f2a0521fafbd039502fc3)
* **ETHGasPool - Hoodi:** [**0x104Ef4192a97E0A93aBe8893c8A2d2484**](https://hoodi.etherscan.io/address/0x104Ef4192a97E0A93aBe8893c8A2d2484DFCBAF1)
  {% endstep %}

{% step %}

### Add additional relays

Relays can be added to the `config.toml` using the following format:

{% tabs %}
{% tab title="Mainnet" %}
{% code title="config.toml" %}

```toml
[[relays]]
id = "ethgas"
url = "https://0x88ef3061f598101ca713d556cf757763d9be93d33c3092d3ab6334a36855b6b4a4020528dd533a62d25ea6648251e62e@relay.ethgas.com"
enable_timing_games = true
target_first_request_ms = 0
frequency_get_header_ms = 100

[[relays]]
id = "titan"
url = "https://0x8c4ed5e24fe5c6ae21018437bde147693f68cda427cd1122cf20819c30eda7ed74f72dece09bb313f2a1855595ab677d@titanrelay.xyz"
enable_timing_games = true
target_first_request_ms = 200
frequency_get_header_ms = 200
```

{% endcode %}
{% endtab %}

{% tab title="Hoodi" %}
{% code title="config.toml" %}

```toml
[[relays]]
id = "ethgas"
url = "https://0xb20c3fe59db9c3655088839ef3d972878d182eb745afd8abb1dd2abf6c14f93cd5934ed4446a5fe1ba039e2bc0cf1011@hoodi-relay.ethgas.com"
enable_timing_games = true
target_first_request_ms = 0
frequency_get_header_ms = 100

[[relays]]
id = "flashbots"
url = "https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-hoodi.flashbots.net"
enable_timing_games = true
target_first_request_ms = 0
frequency_get_header_ms = 100
```

{% endcode %}
{% endtab %}
{% endtabs %}

* The configuration options `enable_timing_games`, `target_first_request_ms` and `frequency_get_header_ms` are set as recommended defaults. If those default settings are not included, it may lead to reduced validator performance.
* For non-ETHGas relays, we recommend setting:
  * `target_first_request_ms = 200`&#x20;
  * `frequency_get_header_ms = 200`
* You do not have to use any ETHGas relays when using the multi-relay configuration, you can use any relay.
  {% endstep %}

{% step %}

### Restart PBS module

This step is required to pick up the relay changes.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
Currently, multi-relay configuration only supports a single ETHGas `payoutAddress` so it is not compatible with multiplexed validator setups where different validators require different fee recipient addresses.

This is being actively developed and will be available soon.
{% endhint %}

***

There are two types of setups possible with Multi-Relay:

### Multi-Relay with no ETHGas relays selected

<figure><img src="https://1913553586-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBk99eVkZsNrI6feXAyYs%2Fuploads%2F44v7RCy28lHip5pM4DO3%2FImage20260306111855.png?alt=media&#x26;token=4e3ded6c-f37e-4886-b885-0a6d8f53f5b9" alt="" width="563"><figcaption></figcaption></figure>

In this scenario, blocks proposed by validators registered to the ETHGas platform will still be sold as whole blocks on the ETHGas marketplace, but they will not have markets open for preconfirmations, Realtime blockspace, or any other additional commitments.

✅ Whole Block Market

❌ Preconfirmations Market

❌ Realtime Market

***

### Multi-Relay with multiple relays, including ETHGas relays

<figure><img src="https://1913553586-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBk99eVkZsNrI6feXAyYs%2Fuploads%2FfdXtxs1PExBxDZEIO92a%2FImage20260306112405.png?alt=media&#x26;token=f849e5e4-64ab-4635-a6d4-059d597080b1" alt="" width="563"><figcaption></figcaption></figure>

When an ETHGas relay is among the available connected relays, all markets will be available to validators registered to ETHGas, including whole blocks, preconfirmations, Realtime, and more.

✅ Whole Block Market

✅ Preconfirmations Market

✅ Realtime Market

***

## 2. ETHGas relays only

<figure><img src="https://1913553586-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBk99eVkZsNrI6feXAyYs%2Fuploads%2Fb8ndZjrGOy7geiOaHhtM%2FImage20260306112614.png?alt=media&#x26;token=52b66306-1ed6-47d6-937a-6b5a002b8257" alt="" width="375"><figcaption></figcaption></figure>

If a validator is connected to only ETHGas relays, then a simplified configuration can be used.

{% stepper %}
{% step %}

### Setup the ETHGas commit-boost module

{% embed url="<https://github.com/ethgas-developer/ethgas-preconf-commit-boost-module/blob/main/README.md>" %}
{% endstep %}

{% step %}

### Configure ETHGas commit-boost module to use only the ETHGas relay

Ensure that only `$$-relay.ethgas.com` relays are set in the `config.toml` file.
{% endstep %}
{% endstepper %}

## FAQ

<details>

<summary>Do I have to use ETHGas relays?</summary>

No. If you configure your validator clients for multi-relay support then you do not need to use any ETHGas relays. However, we recommend that you do use ETHGas relays to maximize your block reward potential.

</details>

<details>

<summary>How can I confirm that my validators are successfully registered to ETHGas?</summary>

You can use the `GET /api/v1/user/validators` API to view all your registered validators.

<https://developers.ethgas.com/?http#get-api-v1-user-validators>

</details>

<details>

<summary>What happens if I forget to set the <code>payoutAddress</code> in the ETHGas Commit module?</summary>

If you do not set a `payoutAddress`, any rewards you accrue will be held in your ETHGas account. This account is linked to the address you used to register your validators to ETHGas.

If you later set the `payoutAddress` through the ETHGas Commit module, then any accrued payments will automatically be paid out to that address.&#x20;

Alternatively, you can manually withdraw the rewards from the [ETHGas app](http://app.ethgas.com/) or directly using the [API](https://developers.ethgas.com/?http#post-api-v1-user-funding-withdraw).

</details>

<details>

<summary>Where can I confirm the ETHGas pool contract address?</summary>

[technical-integration](https://docs.ethgas.com/developer-resources/technical-integration "mention")

</details>


---

# 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.ethgas.com/get-started/node-operators/multi-relay-support.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.
