You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Mar 21, 2025. It is now read-only.
Copy file name to clipboardExpand all lines: deploy/deploy-hyperlane/README.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -21,5 +21,5 @@ At a high level, deploying Hyperlane requires the following actions:
21
21
1. Setting up the [keys.md](keys.md"mention") you will use to deploy contracts and run validators and relayers
22
22
2. Deploying Hyperlane contracts to the local chain and to every remote chain with which the local chain will be able to send and receive messages.
23
23
3. Running one or more [validators.md](../../protocol/agents/validators.md"mention") for the new chain, to provide security for outgoing messages
24
-
4. Running [relayer.md](../../protocol/agents/relayer.md"mention") for the local chain and every remote chain which which the local chain will be able to send and receive messages.
24
+
4. Running [relayer.md](../../protocol/agents/relayer.md"mention") for the local chain and every remote chain with which the local chain will be able to send and receive messages.
25
25
5. Testing that messages can be sent from the local chain to each of the remote chains, and vice versa. 
Finally, add the `MultisigIsmConfig` entry for your local chaina to `hyperlane-deploy/config/multisig_ism.ts`. An example with a single validator has been populated for you for `anvil`.
49
+
Finally, add the `MultisigIsmConfig` entry for your local chain to `hyperlane-deploy/config/multisig_ism.ts`. An example with a single validator has been populated for you for `anvil`.
Copy file name to clipboardExpand all lines: operators/relayers/README.md
+5-10
Original file line number
Diff line number
Diff line change
@@ -4,12 +4,10 @@ description: Everything you need to start running a relayer
4
4
5
5
# Relayers
6
6
7
-
Hyperlane [relayers](../../../protocol/agents/relayer.md) deliver interchain messages to their recipients.
7
+
Hyperlane [relayers](../../protocol/agents/relayer.md) deliver interchain messages to their recipients.
8
8
9
-
Every Hyperlane message requires two transactions to be delivered, one on the origin chain to [dispatch](../../../apis/messaging-api/send.md) the message, and one on the destination chain to [process](../../../apis/messaging-api/receive.md) the messages. Relayers are responsible for sending the second transaction.
9
+
Every Hyperlane message requires two transactions to be delivered, one on the origin chain to [dispatch](../../apis/messaging-api/send.md) the message, and one on the destination chain to [process](../../apis/messaging-api/receive.md) the messages. Relayers are responsible for sending the second transaction.
10
10
11
-
<!-- INCLUDE diagrams/interchain-gas.md -->
12
-
<!-- WARNING: copied from the included file path. Do not edit directly. -->
<!-- WARNING: copied from the included file path. Do not edit directly. -->
50
-
<!-- END -->
51
-
52
47
Hyperlane relayers are run on a per-origin-chain basis, delivering outbound messages from that chain to one or more remote chains. Relayers have no special permissions in Hyperlane. If relayer keys are compromised, only the tokens held by those keys are at risk.
53
48
54
49
Running a relayer requires the following:
55
50
56
51
#### RPC nodes
57
52
58
-
Relayers use RPC nodes to read the origin chain, and deliver messages to the destination chain(s). Relayers must be configured with an RPC node for the origin chain, and each destination chain. 
53
+
Relayers use RPC nodes to read the origin chain, and deliver messages to the destination chain(s). Relayers must be configured with an RPC node for the origin chain, and each destination chain.
59
54
60
55
#### One or more signing keys
61
56
62
57
In order to deliver messages, relayers must be configured with a signing key for each destination chain.
63
58
64
-
The relayer uses this key to sign `Mailbox.process()` transactions. The Hyperlane relayer agent currently supports configuration with raw private keys.
59
+
The relayer uses this key to sign `Mailbox.process()` transactions. The Hyperlane relayer agent currently supports configuration with AWS KMS keys that are accessed via API keys/secrets or raw hexadecimal private keys.
65
60
66
61
#### A machine to run on
67
62
68
-
Relayers can compile the rust binary themselves, or run a docker image provided by Abacus Works. The binary can be run using your favorite cloud service.
63
+
Relayers can compile the Rust binary themselves, or run a Docker image provided by Abacus Works. The binary can be run using your favorite cloud service.
Copy file name to clipboardExpand all lines: operators/relayers/message-filtering.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -49,6 +49,6 @@ For example, the following config used as a whitelist will ensure the relayer wi
49
49
]
50
50
```
51
51
52
-
As a string, a valid config may look like `HYP_RELAYER_WHITELIST='[{"senderAddress":"","destinationDomain":["1"],"recipientAddress":""},{"senderAddress":"0xca7f632e91B592178D83A70B404f398c0a51581F","destinationDomain":["42220","43114"],"recipientAddress":""},{"senderAddress":"","destinationDomain":["42161","420"],"recipientAddress":"0xca7f632e91B592178D83A70B404f398c0a51581F"}]'`
52
+
As a string, a valid config may look like `HYP_RELAYER_WHITELIST='[{"senderAddress":"*","destinationDomain":["1"],"recipientAddress":"*"},{"senderAddress":"0xca7f632e91B592178D83A70B404f398c0a51581F","destinationDomain":["42220","43114"],"recipientAddress":"*"},{"senderAddress":"*","destinationDomain":["42161","420"],"recipientAddress":"0xca7f632e91B592178D83A70B404f398c0a51581F"}]'`
53
53
54
54
The blacklist supersedes the whitelist, i.e. if a message matches both the whitelist _and_ the blacklist, it will not be delivered.
The relayer is responsible for delivering messages to their destination chains. This involves being able to submit transactions to many destination chains, and therefore requires access to a key for signing transaction. There are two supported key types: hexadecimal private keys (for in-memory signing), and AWS KMS based keys (best practice for production environments).
7
+
The relayer is responsible for delivering messages to their destination chains. This involves being able to submit transactions to many destination chains, and therefore requires access to a key for signing transactions. There are two supported key types: hexadecimal private keys (for in-memory signing), and AWS KMS based keys (best practice for production environments).
Copy file name to clipboardExpand all lines: operators/validators/README.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -83,8 +83,8 @@ The Hyperlane validator agent currently supports signing with AWS KMS keys that
83
83
84
84
Validators write their signatures off-chain to publicly accessible, highly available, storage, so that they can be aggregated by [relayers](../../protocol/agents/relayer.md).
85
85
86
-
The Hyperlane validator agent currently supports storing signatures on AWS S3 using the same AWS API key above.
86
+
The Hyperlane validator agent currently supports storing signatures on AWS S3 using the same AWS API key above, as well as storing signatures in the local filesystem for testing.
87
87
88
88
#### A machine to run on
89
89
90
-
Validators can compile the rust binary themselves, or run a docker image provided by Abacus Works. The binary is completely stateless and can be run using your favorite cloud service. You can even run multiple instances of them in different regions for high availability, as Hyperlane has no notion of "double signing".
90
+
Validators can compile the Rust binary themselves, or run a Docker image provided by Abacus Works. The binary is completely stateless and can be run using your favorite cloud service. You can even run multiple instances of them in different regions for high availability, as Hyperlane has no notion of "double signing".
Copy file name to clipboardExpand all lines: operators/validators/announcing-your-validator.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -70,7 +70,7 @@ Now you can submit your signed announcement to the `ValidatorAnnounce` smart con
70
70
71
71
{% tab title="Cast" %}
72
72
1. Announce your validator by running the following command, filling in the following variables:
73
-
1. Set `$VALIDATOR_ANNOUNCE_ADDRESS` to the address of the `ValidatorAnnounce` contract: [addresses.md](../../resources/addresses.md"mention")
73
+
1. Set `$VALIDATOR_ANNOUNCE_ADDRESS` to the address of the `ValidatorAnnounce` contract for your origin chain. You can find addresses for existing deployments here: [addresses.md](../../resources/addresses.md"mention")
74
74
2. Set `$VALIDATOR` to `value.validator` from your JSON announcement
75
75
3. Set `$STORAGE_LOCATION` to `value.storage_location` from your JSON announcement
76
76
4. Set `$SIGNATURE` to the `serialized_signature` from your JSON announcement.
Copy file name to clipboardExpand all lines: operators/validators/environment-variables.md
+13-13
Original file line number
Diff line number
Diff line change
@@ -4,28 +4,28 @@ description: Configure your validator
4
4
5
5
# Environment variables
6
6
7
-
Make sure that you have completed [local-setup.md](setup/local-setup.md"mention") or [aws-setup.md](setup/aws-setup.md"mention")
7
+
Make sure that you have completed [local-setup.md](setup/local-setup.md"mention") or [aws-setup.md](setup/aws-setup.md"mention").
8
8
9
9
Also take a look at the [agent-configuration.md](../agent-configuration.md"mention") page.
10
10
11
11
### Environment variables
12
12
13
13
Your validator takes environment variables as configuration. See below for these environment variables & those that are specific to the setup instructions you followed.
|`CONFIG_FILES`| If you want support your own chain that you [permissionlessly deployed](broken-reference), you specify the path to that agent config file here as well.|
18
-
|`HYP_VALIDATOR_ORIGINCHAINNAME`| The name of the chain being validated (e.g. `ethereum`) |
19
-
|`HYP_VALIDATOR_REORGPERIOD`| <p>The number of block confirmations a validator should wait before signing the <code>Mailbox</code> merkle root. Note that signing a root that is later invalidated (i.e. due to a re-org) is considered fraudulent behavior and will eventually be slashable.</p><p>Suggestions <ahref="environment-variables.md#suggested-reorg-periods">below</a>.</p> |
20
-
|`HYP_VALIDATOR_INTERVAL`| <p>In seconds, the frequency with which the validator should poll the <code>Mailbox</code> merkle root.</p><p>Suggestions <ahref="environment-variables.md#suggested-reorg-periods">below</a>.</p> |
21
-
|`HYP_BASE_CHAINS_[origin chain name]_CONNECTION_URL`| <p>The RPC URL of the node for the chain you are validating. Note Polygon mainnet requires an RPC URL of an archive node (see <adata-mentionhref="./#an-rpc-node">#an-rpc-node</a>for details).<br>e.g. <code>HYP_BASE_CHAINS_ETHEREUM_CONNECTION_URL</code> or <code>HYP_BASE_CHAINS_POLYGON_CONNECTION_URL</code></p> |
22
-
|`HYP_BASE_METRICS`| Set to `9090`, or any other port number you wish to expose Prometheus metrics on. Not specifying a value will result in metrics not being exposed. |
23
-
|`HYP_BASE_TRACING_LEVEL`| Specifies the log level, set to `info`|
24
-
|`HYP_BASE_TRACING_FMT`| Specifies the format of the logs, set it to either `pretty` or `json`|
|`CONFIG_FILES`|<p>If you want support your own chain that you <ahref="broken-reference">permissionlessly deployed</a>, you specify the path to that agent config file here as well.<br>Note these files must be accessible within the filesystem your validator has access to. If you're running in Docker, see <adata-mentionhref="../agent-configuration.md#config-files-with-docker">#config-files-with-docker</a> for tips on mounting your config files into your Docker container.</p>|
18
+
|`HYP_VALIDATOR_ORIGINCHAINNAME`| The name of the chain being validated (e.g. `ethereum`) |
19
+
|`HYP_VALIDATOR_REORGPERIOD`| <p>The number of block confirmations a validator should wait before signing the <code>Mailbox</code> merkle root. Note that signing a root that is later invalidated (i.e. due to a re-org) is considered fraudulent behavior and will eventually be slashable.</p><p>Suggestions <ahref="environment-variables.md#suggested-reorg-periods">below</a>.</p> |
20
+
|`HYP_VALIDATOR_INTERVAL`| <p>In seconds, the frequency with which the validator should poll the <code>Mailbox</code> merkle root.</p><p>Suggestions <ahref="environment-variables.md#suggested-reorg-periods">below</a>.</p> |
21
+
|`HYP_BASE_CHAINS_[origin chain name]_CONNECTION_URL`| <p>The RPC URL of the node for the chain you are validating. Note Polygon mainnet requires an RPC URL of an archive node (see <adata-mentionhref="./#an-rpc-node">#an-rpc-node</a>for details).<br>e.g. <code>HYP_BASE_CHAINS_ETHEREUM_CONNECTION_URL</code> or <code>HYP_BASE_CHAINS_POLYGON_CONNECTION_URL</code></p> |
22
+
|`HYP_BASE_METRICS`| Set to `9090`, or any other port number you wish to expose Prometheus metrics on. Not specifying a value will result in metrics not being exposed. |
23
+
|`HYP_BASE_TRACING_LEVEL`| Specifies the log level, set to `info`|
24
+
|`HYP_BASE_TRACING_FMT`| Specifies the format of the logs, set it to either `pretty` or `json`|
25
25
26
26
#### Setup-specific environment variables
27
27
28
-
These **required** environment variables differ based on which [setup](setup/) instructions you followed.
28
+
These **required** environment variables differ based on which [setup](setup/"mention") instructions you followed.
29
29
30
30
{% tabs %}
31
31
{% tab title="AWS setup" %}
@@ -63,7 +63,7 @@ These are required environment variables that are specific to the [local-setup.m
63
63
64
64
### Next
65
65
66
-
Next, in the [Start validating](start-validating.md) section we will get the validator up and running.
66
+
Next, in the [start-validating.md](start-validating.md"mention") section we will get the validator up and running.
0 commit comments