Skip to content

Latest commit

 

History

History
1965 lines (1524 loc) · 39.9 KB

configuration-reference.md

File metadata and controls

1965 lines (1524 loc) · 39.9 KB
description
All configuration

Configuration reference

CONFIG_FILES

Description: (Env only) List of additional configuration file paths to load in order (such as those in hyperlane-monorepo/rust/config). They will be merged first to last, so if both the first one and the last one specify a specific config path, the value set in the last file listed will be used.

These files must be accessible within the filesystem your agent has access to. If you're running in Docker, see #config-files-with-docker for tips on mounting your config files into your Docker container.

Optional: Yes

Agents: All

Type: string (Comma separated list of file paths)

{% tabs %} {% tab title="As Arg" %} Not supported as an argument {% endtab %}

{% tab title="As Env" %}

export CONFIG_FILES='./config/ethereum/my-config.json,./config/ethereum/my-validator-config.json'

{% endtab %}

{% tab title="As Config" %} Not supported in configuration files {% endtab %} {% endtabs %}

chains

Description: Configuration for each of the chains that must be used by an agent.

Optional: No

Agents: All

Type: Map<string, ChainSetup (Object)> (See chains.* for ChainSetup values)

{% tabs %} {% tab title="As Arg" %}

--chains.${CHAIN_NAME}.*

{% endtab %}

{% tab title="As Env" %}

HYP_BASE_CHAINS_${CHAIN_NAME}_*
HYP_BASE_CHAINS_ETHEREUM_*

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "<chain_name>": {},
        "ethereum": {}
    }
}

{% endtab %} {% endtabs %}

chains.<chain_name>.name

Description: Name of the domain. Allows specifying a different name for the domain than the chain's true name. This should almost always be the same as chain_name.

Requires: Alignment with domain id if it is a known domain name.

Optional: No

Agents: All

Type: string

{% tabs %} {% tab title="As Arg" %}

--chains.${CHAIN_NAME}.name $DOMAIN_NAME
--chains.ethereum.name ethereum

{% endtab %}

{% tab title="As Env" %}

HYP_BASE_CHAINS_${CHAIN_NAME}_NAME="$DOMAIN_NAME"
HYP_BASE_CHAINS_ETHEREUM_NAME="ethereum"

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "<chain_name>": {
            "name": "<domain_name>"
        },
        "ethereum": {
            "name": "ethereum"
        }
    }
}

{% endtab %} {% endtabs %}

chains.<chain_name>.domain

Description: Hyperplane domain id to uniquely identify the domain. See also: Domain Identifiers.

Requires: Alignment with domain name if it is a known domain.

Optional: No

Agents: All

Type: Numeric (string | number)

{% tabs %} {% tab title="As Arg" %}

--chains.${CHAIN_NAME}.domain $DOMAIN_ID
--chains.ethereum.domain 1

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHAINS_${CHAIN_NAME}_DOMAIN="$DOMAIN_NAME"
export HYP_BASE_CHAINS_ETHEREUM_DOMAIN=1

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "<chain_name>": {
            "domain": "<domain_id>"
        },
        "ethereum": {
            "domain": 1
        }
    }
}

{% endtab %} {% endtabs %}

chains.<chain_name>.finalityBlocks

Description: Number of blocks to wait before considering the blockchain state to be final. See also latencies for help choosing an appropriate finality.

Optional: Defaults to 0

Agents: All

Type: Numeric (string | number)

{% tabs %} {% tab title="As Arg" %}

--chains.${CHAIN_NAME}.finalityBlocks $FINALITY_BLOCKS
--chains.ethereum.finalityBlcoks 20

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHAINS_${CHAIN_NAME}_FINALITY_BLOCKS="$FINALITY_BLOCKS"
export HYP_BASE_CHAINS_ETHEREUM_FINALITY_BLOCKS=20

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "<chain_name>": {
            "finalityBlocks": "<finality_blocks>"
        },
        "ethereum": {
            "finalityBlocks": 20
        }
    }
}

{% endtab %} {% endtabs %}

chains.<chain_name>.addresses.mailbox

Description: Address of the mailbox contract on the chain. See also contract addresses.

Optional: No

Agents: All

Type: Hash (string)

{% tabs %} {% tab title="As Arg" %}

--chains.${CHAIN_NAME}.addresses.mailbox "$MAILBOX_ADDRESS"
--chains.ethereum.addresses.mailbox "0x35231d4c2D8B8ADcB5617A638A0c4548684c7C70"

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHAINS_${CHAIN_NAME}_ADDRESSES_MAILBOX="$MAILBOX_ADDRESS"
export HYP_BASE_CHAINS_ETHEREUM_ADDRESSES_MAILBOX="0x35231d4c2D8B8ADcB5617A638A0c4548684c7C70"

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "<chain_name>": {
            "addresses": {
                "mailbox": "<mailbox_address>"
            }
        },
        "ethereum": {
            "addresses": {
                "mailbox": "0x35231d4c2D8B8ADcB5617A638A0c4548684c7C70"
            }
        }
    }
}

{% endtab %} {% endtabs %}

chains.<chain_name>.addresses.interchainGasPaymaster

Description: Address of the interchain gas paymaster contract on the chain. See also contract addresses.

Optional: No

Agents: All

Type: Hash (string)

{% tabs %} {% tab title="As Arg" %}

--chains.${CHAIN_NAME}.addresses.interchainGasPaymaster "$IGP_ADDRESS"
--chains.ethereum.addresses.interchainGasPaymaster "0x6cA0B6D22da47f091B7613223cD4BB03a2d77918"

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHAINS_${CHAIN_NAME}_ADDRESSES_INTERCHAIN_GAS_PAYMASTER="$IGP_ADDRESS"
export HYP_BASE_CHAINS_ETHEREUM_ADDRESSES_INTERCHAIN_GAS_PAYMASTER="0x6cA0B6D22da47f091B7613223cD4BB03a2d77918"

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "<chain_name>": {
            "addresses": {
                "interchainGasPaymaster": "<igp_address>"
            }
        },
        "ethereum": {
            "addresses": {
                "interchainGasPaymaster": "0x6cA0B6D22da47f091B7613223cD4BB03a2d77918"
            }
        }
    }
}

{% endtab %} {% endtabs %}

chains.<chain_name>.addresses.validatorAnnounce

Description: Address of the validator announce contract on the chain. See also contract addresses.

Optional: No

Agents: All

Type: Hash (string)

{% tabs %} {% tab title="As Arg" %}

--chains.${CHAIN_NAME}.addresses.validatorAnnounce "$VALIDATOR_ANNOUNCE_ADDRESS"
--chains.ethereum.addresses.validatorAnnounce "0x9bBdef63594D5FFc2f370Fe52115DdFFe97Bc524"

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHAINS_${CHAIN_NAME}_ADDRESSES_VALIDATOR_ANNOUNCE="$VALIDATOR_ANNOUNCE_ADDRESS"
export HYP_BASE_CHAINS_ETHEREUM_ADDRESSES_VALIDATOR_ANNOUNCE="0x9bBdef63594D5FFc2f370Fe52115DdFFe97Bc524"

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "<chain_name>": {
            "addresses": {
                "validatorAnnounce": "<validator_announce_address>"
            }
        },
        "ethereum": {
            "addresses": {
                "validatorAnnounce": "0x9bBdef63594D5FFc2f370Fe52115DdFFe97Bc524"
            }
        }
    }
}

{% endtab %} {% endtabs %}

chains.<chain_name>.signer

Description: The signer that should be used this chain

Optional: Yes (Will use defaultsigner if not specified)

Agents: All

Type: SignerConf (Object)

{% tabs %} {% tab title="As Arg" %}

--chains.${CHAIN_NAME}.signer.*

{% endtab %}

{% tab title="As Env" %}

HYP_BASE_CHAINS_${CHAIN_NAME}_SIGNER_*

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "<chain_name>": {
            "signer": {}
        },
        "ethereum": {
            "signer": {}
        }
    }
}

{% endtab %} {% endtabs %}

chains.<chain_name>.signer.type

Description: The type of signer that is defined. A HexKey signer uses a private key, an Aws signer uses an AWS based KMS, and Node assumes the local node will sign RPC calls.

Optional: Yes; Defaults to node unless a key is specified in which case it defaults to hexKey

Agents: All

Type: Enum ("hexKey" | "aws" | "node")

{% tabs %} {% tab title="As Arg" %}

--chains.${CHAIN_NAME}.signer.type hexKey
--chains.ethereum.signer.type node

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHAINS_${CHAIN_NAME}_SIGNER_TYPE="hexKey"

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "<chain_name>": {
            "signer": {
                "type": "hexKey"
            }
        },
        "ethereum": {
            "signer": {
                "type": "node"
            }
        }
    }
}

{% endtab %} {% endtabs %}

chains.<chain_name>.signer.key

Description: A local hex key. The hex string of a private key.

Requires: chains.<chain_name>.signer.type = "hexKey" | undefined

Optional: No (iff requirements are met)

Agents: All

Type: string

{% tabs %} {% tab title="As Arg" %}

--chains.${CHAIN_NAME}.signer.key "8166f546bab6da521a8369cab06c5d2b9e46670292d85c875ee9ec20e84ffb61"

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHAINS_${CHAIN_NAME}_SIGNER_KEY="8166f546bab6da521a8369cab06c5d2b9e46670292d85c875ee9ec20e84ffb61"

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "<chain_name>": {
            "signer": {
                "key": "<key_in_hex>"
            }
        },
        "ethereum": {
            "signer": {
                "key": "8166f546bab6da521a8369cab06c5d2b9e46670292d85c875ee9ec20e84ffb61"
            }
        }
    }
}

{% endtab %} {% endtabs %}

chains.<chain_name>.signer.id

Description: The UUID identifying the AWS KMS key

Requires: chains.<chain_name>.signer.type = "aws"

Optional: No (iff requirements are met)

Agents: All

Type: string

{% tabs %} {% tab title="As Arg" %}

--chains.ethereum.signer.type "alias/validator-signer-ethereum"

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHAINS_${CHAIN_NAME}_SIGNER_ID="alias/validator-signer-ethereum"

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "ethereum": {
            "signer": {
                "type": "aws",
                "id": "alias/validator-signer-ethereum"
            }
        }
    }
}

{% endtab %} {% endtabs %}

chains.<chain_name>.signer.region

Description: The AWS region

Requires: chains.<chain_name>.signer.type = "aws"

Optional: No (iff requirements are met)

Agents: All

Type: string

{% tabs %} {% tab title="As Arg" %}

--chains.${CHAIN_NAME}.signer.region us-east-1

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHAINS_${CHAIN_NAME}_SIGNER_REGION="us-east-1"

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "<chain_name>": {
            "signer": {
                "type": "aws",
                "region": "us-east-1"
            }
        }
    }
}

{% endtab %} {% endtabs %}

chains.<chain_name>.protocol

Description: Connection protocol to use.

Optional: Defaults to "ethereum"

Agents: All

Type: Enum ("ethereum" | "fuel")

{% tabs %} {% tab title="As Arg" %}

--chains.${CHAIN_NAME}.protocol ethereum
--chains.ethereum.protocol ethereum

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHAINS_${CHAIN_NAME}_PROTOCOL="ethereum"
export HYP_BASE_CHAINS_ARBITRUM_PROTOCOL="ethereum"

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "<chain_name>": {
            "protocol": "<protocol>"
        },
        "arbitrum": {
            "protocol": "ethereum"
        }
    }
}

{% endtab %} {% endtabs %}

chains.<chain_name>.connection.type

Description: How to communicate with the provider

  • "http" uses a basic http connection
  • "ws" uses a basic websocket connection
  • "httpFallback" will try the first URL and then automatically "fall back" on a connection or other provider failure to the next provider; this should only retry calls which fail due to the provider and not the call itself such; an insufficient gas error for instance would not fall back.
  • "httpQuorum" requires a majority of the URLs to agree with the exception of submitting transactions; it will automatically coordinate the "latest" block if not specified to reduce sync errors.

Requires: chains.<chain_name>.protocol = "ethereum" | undefined

Optional: Defaults to "http"

Agents: All

Type: Enum ("http", "ws", "httpFallback", "httpQuorum")

{% tabs %} {% tab title="As Arg" %}

--chains.${CHAIN_NAME}.connection.type http

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHAINS_${CHAIN_NAME}_CONNECTION_TYPE="url"
export HYP_BASE_CHAINS_ETHEREUM_CONNECTION_TYPE="httpFallback"

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "<chain_name>": {
            "connection": {
                "type": "http"
            }
        },
        "ethereum": {
            "connection": {
                "type": "httpFallback"
            }
        }
    }
}

{% endtab %} {% endtabs %}

chains.<chain_name>.connection.url

Description: Url to connect to

Requires:

((chains.<chain_name>.protocol = "ethereum" | undefined)
    AND (chains.<chain_name>.connection.type = "http" | "ws" | undefined)
) OR chains.<chain_name>.protocol = "fuel"

Optional: No (iff requirements are met)

Agents: All

Type: string

{% tabs %} {% tab title="As Arg" %}

--chains.${CHAIN_NAME}.connection.url "$CONNECTION_URL"
--chains.ethereum.connection.url "http://127.0.0.1:8545"

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHAINS_${CHAIN_NAME}_CONNECTION_URL="$CONNECTION_URL"
export HYP_BASE_CHAINS_ETHEREUM_CONNECTION_URL="http://127.0.0.1:8545"

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "<chain_name>": {
            "connection": {
                "url": "<connection_url>"
            }
        },
        "ethereum": {
            "connection": {
                "url": "http://127.0.0.1:8545"
            }
        }
    }
}

{% endtab %} {% endtabs %}

chains.<chain_name>.connection.urls

Description:

Requires:

(chains.<chain_name>.protocol = "ethereum" | undefined)
    AND (chains.<chain_name>.connection.type = "httpFallback" | "httpQuorum")

Optional: No (iff requirements are met)

Agents:

Type: string (comma separated list of urls without spaces)

{% tabs %} {% tab title="As Arg" %}

--chains.${CHAIN_NAME}.connection.urls "$CONNECTION_URLS"
--chains.ethereum.connection.urls "http://127.0.0.1:8545,http://127.0.0.1:8546,http://127.0.0.1:8547"

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHAINS_${CHAIN_NAME}_CONNECTION_URLS="$CONNECTION_URLS"
export HYP_BASE_CHAINS_ETHEREUM_CONNECTION_URLS="http://127.0.0.1:8545,http://127.0.0.1:8546,http://127.0.0.1:8547"

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "<chain_name>": {
            "connection": {
                "urls": "<connection_urls>"
            }
        },
        "ethereum": {
            "connection": {
                "urls": "http://127.0.0.1:8545,http://127.0.0.1:8546,http://127.0.0.1:8547"
            }
        }
    }
}

{% endtab %} {% endtabs %}

chains.<chain_name>.index.from

Description: Height at which to start indexing contracts.

Optional: Defaults to 0

Agents: Relayer & Scraper

Type: Numeric (string | number)

{% tabs %} {% tab title="As Arg" %}

--chains.${CHAIN_NAME}.index.from 0
--chains.ethereum.index.from 16271503

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHAINS_${CHAIN_NAME}_INDEX_FROM=0
export HYP_BASE_CHAINS_ETHEREUM_INDEX_FROM=16271503

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "<chain_name>": {
            "index": {
                "from": 0
            }
        },
        "ethereum": {
            "index": {
                "from": 16271503
            }
        }
    }
}

{% endtab %} {% endtabs %}

chains.<chain_name>.index.chunk

Description: Number of blocks to query at once when indexing contracts. Note that the configured providers must support whatever value is set. The default should work with nearly all providers.

Optional: Defaults to 1999

Agents: Relayer & Scraper

Type: Numeric (string | number)

{% tabs %} {% tab title="As Arg" %}

--chains.${CHAIN_NAME}.index.chunk 1999
--chains.ethereum.index.chunk 1999

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHAINS_${CHAIN_NAME}_INDEX_CHUNK=1999
export HYP_BASE_CHAINS_ETHEREUM_INDEX_CHUNK=1999

{% endtab %}

{% tab title="As Config" %}

{
    "chains": {
        "<chain_name>": {
            "index": {
                "chunk": 1999
            }
        },
        "ethereum": {
            "index": {
                "chunk": 1999
            }
        }
    }
}

{% endtab %} {% endtabs %}

defaultsigner

Description: The default signer that should be used for all chains which did not specify their own.

Optional: Yes

Agents: All

Type: SignerConf (Object)

{% tabs %} {% tab title="As Arg" %}

--defaultSigner.*

{% endtab %}

{% tab title="As Env" %}

HYP_BASE_DEFAULTSIGNER_*

{% endtab %}

{% tab title="As Config" %}

{
    "defaultsigner": {}
}

{% endtab %} {% endtabs %}

defaultsigner.type

Description: The type of signer that is defined. A HexKey signer uses a private key, an Aws signer uses an AWS based KMS, and Node assumes the local node will sign RPC calls.

Optional: Yes; Defaults to node unless a key is specified in which case it defaults to hexKey

Agents: All

Type: Enum ("hexKey" | "aws" | "node")

{% tabs %} {% tab title="As Arg" %}

--defaultSigner.type hexKey

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_DEFAULTSIGNER_TYPE="hexKey"

{% endtab %}

{% tab title="As Config" %}

{
    "defaultsigner": {
        "type": "hexKey"
    }
}

{% endtab %} {% endtabs %}

defaultsigner.key

Description: A local hex key. The hex string of a private key.

Requires: defaultsigner.type = "hexKey" | undefined

Optional: No (iff requirements are met)

Agents: All

Type: string

{% tabs %} {% tab title="As Arg" %}

--defaultSigner.key "8166f546bab6da521a8369cab06c5d2b9e46670292d85c875ee9ec20e84ffb61"

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_DEFAULTSIGNER_KEY="8166f546bab6da521a8369cab06c5d2b9e46670292d85c875ee9ec20e84ffb61"

{% endtab %}

{% tab title="As Config" %}

{
    "defaultsigner": {
        "type": "hexKey",
        "key": "8166f546bab6da521a8369cab06c5d2b9e46670292d85c875ee9ec20e84ffb61"
    }
}

{% endtab %} {% endtabs %}

defaultsigner.id

Description: The UUID identifying the AWS KMS key

Requires: defaultsigner.type = "aws"

Optional: No (iff requirements are met)

Agents: All

Type: string

{% tabs %} {% tab title="As Arg" %}

--defaultSigner.id "alias/validator-signer-ethereum"

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_DEFAULTSIGNER_ID="alias/validator-signer-ethereum"

{% endtab %}

{% tab title="As Config" %}

{
    "defaultsigner": {
        "type": "aws",
        "id": "alias/validator-signer-ethereum"
    }
}

{% endtab %} {% endtabs %}

defaultsigner.region

Description: The AWS region

Requires: defaultsigner.type = "aws"

Optional: No (iff requirements are met)

Agents: All

Type: string

{% tabs %} {% tab title="As Arg" %}

--defaultSigner.region us-east-1

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_DEFAULTSIGNER_REGION="us-east-1"

{% endtab %}

{% tab title="As Config" %}

{
    "defaultsigner": {
        "type": "aws",
        "region": "us-east-1"
    }
}

{% endtab %} {% endtabs %}

metrics

Description: Port to expose prometheus metrics on

Optional: Defaults to 9090

Agents: All

Type: Numeric (string | number)

{% tabs %} {% tab title="As Arg" %}

--metrics 9090

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_METRICS=9090

{% endtab %}

{% tab title="As Config" %}

{
    "metrics": 9090
}

{% endtab %} {% endtabs %}

tracing.fmt

Description: Configuration for the tracing module. This controls logging.

Optional: Defaults to pretty

Agents: All

Type: Enum ("pretty" | "json" | "full" | "compact")

{% tabs %} {% tab title="As Arg" %}

--tracing.fmt pretty

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_TRACING_FMT="pretty"

{% endtab %}

{% tab title="As Config" %}

{
    "tracing": {
        "fmt": "pretty"
    }
}

{% endtab %} {% endtabs %}

tracing.level

Description: Configuration for the tracing module. This controls logging.

Optional: Defaults to info

Agents: All

Type: Enum ("trace" | "debug" | "info" | "warn" | "error" | "off")

{% tabs %} {% tab title="As Arg" %}

--tracing.level info

{% endtab %}

{% tab title="As Env" %}

HYP_BASE_TRACING_LEVEL="info"

{% endtab %}

{% tab title="As Config" %}

{
    "tracing": {
        "level": "info"
    }
}

{% endtab %} {% endtabs %}

originchainname

Description: Name of the chain a validator should validate for and name of the chain a relayer should relayer messages from. Deprecated for Relayers, use #relaychains instead.

Optional: No - Validators; Yes - Relayers

Agents: Validator & Relayer

Type: string

{% tabs %} {% tab title="As Arg" %}

--originChainName ethereum

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_ORIGINCHAINNAME="ethereum"

{% endtab %}

{% tab title="As Config" %}

{
    "originchainname": "ethereum"
}

{% endtab %} {% endtabs %}

validator

Description: The signer that should be used by the validator.

Optional: Yes

Agents: All

Type: SignerConf (Object)

{% tabs %} {% tab title="As Arg" %}

--validator.*

{% endtab %}

{% tab title="As Env" %}

HYP_BASE_VALIDATOR_*

{% endtab %}

{% tab title="As Config" %}

{
    "validator": {}
}

{% endtab %} {% endtabs %}

validator.type

Description: The type of signer that is defined. A HexKey signer uses a private key, an Aws signer uses an AWS based KMS, and Node assumes the local node will sign RPC calls.

Optional: Yes; Defaults to node unless a key is specified in which case it defaults to hexKey

Agents: All

Type: Enum ("hexKey" | "aws" | "node")

{% tabs %} {% tab title="As Arg" %}

--validator.type hexKey

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_VALIDATOR_TYPE="hexKey"

{% endtab %}

{% tab title="As Config" %}

{
    "validator": {
        "type": "hexKey"
    }
}

{% endtab %} {% endtabs %}

validator.key

Description: A local hex key. The hex string of a private key.

Requires: validator.type = "hexKey" | undefined

Optional: No (iff requirements are met)

Agents: All

Type: string

{% tabs %} {% tab title="As Arg" %}

--validator.key 8166f546bab6da521a8369cab06c5d2b9e46670292d85c875ee9ec20e84ffb61

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_VALIDATOR_KEY="8166f546bab6da521a8369cab06c5d2b9e46670292d85c875ee9ec20e84ffb61"

{% endtab %}

{% tab title="As Config" %}

{
    "validator": {
        "type": "hexKey",
        "key": "8166f546bab6da521a8369cab06c5d2b9e46670292d85c875ee9ec20e84ffb61"
    }
}

{% endtab %} {% endtabs %}

validator.id

Description: The UUID identifying the AWS KMS key

Requires: validator.type = "aws"

Optional: No (iff requirements are met)

Agents: All

Type: string

{% tabs %} {% tab title="As Arg" %}

--validator.id "alias/validator-signer-ethereum"

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_VALIDATOR_ID="alias/validator-signer-ethereum"

{% endtab %}

{% tab title="As Config" %}

{
    "validator": {
        "type": "aws",
        "id": "alias/validator-signer-ethereum"
    }
}

{% endtab %} {% endtabs %}

validator.region

Description: The AWS region

Requires: validator.type = "aws"

Optional: No (iff requirements are met)

Agents: All

Type: string

{% tabs %} {% tab title="As Arg" %}

--validator.region us-east-1

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_VALIDATOR_REGION="us-east-1"

{% endtab %}

{% tab title="As Config" %}

{
    "validator": {
        "type": "aws",
        "region": "us-east-1"
    }
}

{% endtab %} {% endtabs %}

checkpointsyncer.type

Description: Defines the method of syncing checkpoints

Optional: No

Agents: Validator

Type: Enum ("localStorage" | "s3")

{% tabs %} {% tab title="As Arg" %}

--checkpointSyncer.type localStorage

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHECKPOINTSYNCER_TYPE="localStorage"

{% endtab %}

{% tab title="As Config" %}

{
    "checkpointsyncer": {
        "type": "localStorage"
    }
}

{% endtab %} {% endtabs %}

checkpointsyncer.path

Description: Path on the local disk of a local storage type checkpoint syncer configuration.

Requires: checkpointsyncer.type = "localStorage"

Optional: No (iff conditions are met)

Agents: Validator

Type: string

{% tabs %} {% tab title="As Arg" %}

--checkpointSyncer.path "/tmp/syncer"

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHECKPOINTSYNCER_PATH="/tmp/syncer"

{% endtab %}

{% tab title="As Config" %}

{
    "checkpointsyncer": {
        "type": "localStorage",
        "path": "/tmp/syncer"
    }
}

{% endtab %} {% endtabs %}

checkpointsyncer.bucket

Description: S3 bucket name

Requires: checkpointsyncer.type = "s3"

Optional: No (iff conditions are met)

Agents: Validator

Type: string

{% tabs %} {% tab title="As Arg" %}

--checkpointSyncer.bucket signatures-ethereum

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHECKPOINTSYNCER_BUCKET="signatures-ethereum"

{% endtab %}

{% tab title="As Config" %}

{
    "checkpointsyncer": {
        "type": "s3",
        "bucket": "signatures-ethereum"
    }
}

{% endtab %} {% endtabs %}

checkpointsyncer.region

Description: S3 bucket region

Requires: checkpointsyncer.type = "s3"

Optional: No (iff conditions are met)

Agents: Validator

Type: string

{% tabs %} {% tab title="As Arg" %}

--checkpointSyncer.region us-east-1

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_CHECKPOINTSYNCER_REGION="us-east-1"

{% endtab %}

{% tab title="As Config" %}

{
    "checkpointsyncer": {
        "type": "s3",
        "region": "us-east-1"
    }
}

{% endtab %} {% endtabs %}

interval

Description: How frequently to check for new checkpoints in seconds. See also latencies.

Optional: No

Agents: Validator

Type: Numeric (string | number)

{% tabs %} {% tab title="As Arg" %}

--interval 30

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_INTERVAL=30

{% endtab %}

{% tab title="As Config" %}

{
    "interval": 30
}

{% endtab %} {% endtabs %}

db

Description: This is a local filesystem path to where the agents store relevant data on disk. This must be unique per agent! Multiple agents must have different paths. The path is relative to the current working directory if it does not start with a system defined root path such as / on unix. When using docker images, ensure that this folder gets persisted across runs.

For the scraper, this is the connection string to a postgresql database.

Optional: For validators and relayers it is optional and defaults to a path in the current working directory which includes the originchainname. For the scraper it is required.

Agents: All

Type: string

{% tabs %} {% tab title="As Arg" %}

# Validator
--db "/tmp/hyp/validator/ethereum-cache"

# Relayer
--db "/tmp/hyp/relayer/ethereum-cache"

# Scraper
--db "postgresql://postgres:password@localhost:5432/dbname"

{% endtab %}

{% tab title="As Env" %}

# Validator
export HYP_BASE_DB="/tmp/hyp/validator/ethereum-cache"

# Relayer
export HYP_BASE_DB="/tmp/hyp/relayer/ethereum-cache"

# Scraper
export HYP_BASE_DB="postgresql://postgres:password@localhost:5432/dbname"

{% endtab %}

{% tab title="As Config" %} For the validator:

{
    "db": "/tmp/hyp/validator/ethereum-cache"
}

For the relayer:

{
    "db": "/tmp/hyp/relayer/ethereum-cache"
}

For the scraper:

{
    "db": "postgresql://postgres:password@localhost:5432/dbname"
}

{% endtab %} {% endtabs %}

relaychains

Description: List of chains to deliver messages between.

Optional: No

Agents: Relayer

Type: string (comma separated list)

{% tabs %} {% tab title="As Arg" %}

--relayChains "arbitrum,ethereum,bsc"

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_RELAYCHAINS="arbitrum,ethereum,bsc"

{% endtab %}

{% tab title="As Config" %}

{
    "relaychains": "arbitrum,ethereum,bsc"
}

{% endtab %} {% endtabs %}

destinationchainnames

Description: List of chains to deliver messages to. Deprecated, use #relaychains instead.

Optional: Yes

Agents: Relayer

Type: string (comma separated list)

{% tabs %} {% tab title="As Arg" %}

--destinationChainNames "arbitrum,ethereum,bsc"

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_DESTINATIONCHAINNAMES="arbitrum,ethereum,bsc"

{% endtab %}

{% tab title="As Config" %}

{
    "destinationchainnames": "arbitrum,ethereum,bsc"
}

{% endtab %} {% endtabs %}

gaspaymentenforcement

Description: JSON stringified array of gas payment enforcement configurations sorted by highest priority first. The last policy should be a catch-all and handle any messages that did not match a previous policy.

Optional: Defaults to no enforcement ([{"type": "none"}])

Agents: Relayer

Type: JSON (string)

type gaspaymentenforcement = Array<GasPaymentEnforcementPolicy>;

type GasPaymentEnforcementPolicy =
( // fields specific to each type...
    // No requirements - all messages are processed regardless of gas payment
    { type: "none" }
    // Messages that have paid a minimum amount will be processed
  & { type: "minimum", payment: U256 }
    // Required amount of gas on the foreign chain has been paid according
    // to on-chain fee quoting. `gasfraction` defaults to "1 / 2".
  & { type: "onChainFeeQuoting", gasfraction?: GasFraction }
) | { // all types have the following fields...
    // If a message matches, this policy will be used.
    // If no matching list is specified, all messages will match.
    matchingList?: MatchingList
};

// A list of matching rules. A message matches if any of the list
// elements matches the message.
type MatchingList = Array<MatchingListElement>;

// Matches a message if any of the provided values matches.
interface MatchingListElement {
    originDomain?: NumericFilter
    senderAddress?: HashFilter
    destinationDomain?: NumericFilter
    recipientAddress?: HashFilter
}

type NumericFilter = Wildcard | U32 | Array<U32>;
type HashFilter = Wildcard | H256 | Array<H256>;

// 32-bit unsigned integer
type U32 = number | string;
// 256-bit unsigned integer; Note: `number` type has limited precision.
type U256 = string | number;
// 256-bit hash (can also be less) encoded as hex
type H256 = string;
// Matches anything
type Wildcard = "*";
// A numeric string in the form `{numerator} / {denominator}`, e.g. "1 / 2"
type GasFraction = string;

{% tabs %} {% tab title="As Arg" %}

--gasPaymentEnforcement '[{"type": "none", "matchingList": [{"senderAddress": "0xa441b15fe9a3cf56661190a0b93b9dec7d041272"}]}, {"type": "minimum", "payment": 100000}]'

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_GASPAYMENTENFORCEMENT='[{"type": "none", "matchingList": [{"senderAddress": "0xa441b15fe9a3cf56661190a0b93b9dec7d041272"}]}, {"type": "minimum", "payment": 100000}]'

{% endtab %}

{% tab title="As Config" %}

{
    "gaspaymentenforcement": "[{\"type\": \"none\", \"matchingList\": [{\"senderAddress\": \"0xa441b15fe9a3cf56661190a0b93b9dec7d041272\"}]}, {\"type\": \"minimum\", \"payment\": 100000}]"
}

{% endtab %} {% endtabs %}

whitelist

Description: A matching list to define what messages should be allowed. Any messages which do not match this list will not be relayed. If no whitelist is supplied all messages will be allowed.

See also message-filtering.md

Optional: Yes

Agents: Relayer

Type: JSON (string)

type whitelist = MatchingList | undefined;

// A list of matching rules. A message matches if any of the list
// elements matches the message.
type MatchingList = Array<MatchingListElement>;

// Matches a message if any of the provided values matches.
interface MatchingListElement {
    originDomain?: NumericFilter
    senderAddress?: HashFilter
    destinationDomain?: NumericFilter
    recipientAddress?: HashFilter
}

type NumericFilter = Wildcard | U32 | Array<U32>;
type HashFilter = Wildcard | H256 | Array<H256>;

// 32-bit unsigned integer
type U32 = number | string;
// 256-bit hash (can also be less) encoded as hex
type H256 = string;
// Matches anything
type Wildcard = "*";

{% tabs %} {% tab title="As Arg" %}

--whitelist '[{"senderAddress": "0xa441b15fe9a3cf56661190a0b93b9dec7d041272", "originDomain": [1, 42]}, {"destinationDomain": 1}]'

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_WHITELIST='[{"senderAddress": "0xa441b15fe9a3cf56661190a0b93b9dec7d041272", "originDomain": [1, 42]}, {"destinationDomain": 1}]'

{% endtab %}

{% tab title="As Config" %}

{
    "whitelist": "[{\"senderAddress\": \"0xa441b15fe9a3cf56661190a0b93b9dec7d041272\", \"originDomain\": [1, 42]}, {\"destinationDomain\": 1}]"
}

{% endtab %} {% endtabs %}

blacklist

Description: A matching list to define what messages should be ignored. Any messages which match this list will not be relayed. If no blacklist is supplied all messages will be allowed.

See also message-filtering.md

Optional: Yes

Agents: Relayer

Type: JSON (string)

type blacklist = MatchingList | undefined;

// A list of matching rules. A message matches if any of the list
// elements matches the message.
type MatchingList = Array<MatchingListElement>;

// Matches a message if any of the provided values matches.
interface MatchingListElement {
    originDomain?: NumericFilter
    senderAddress?: HashFilter
    destinationDomain?: NumericFilter
    recipientAddress?: HashFilter
}

type NumericFilter = Wildcard | U32 | Array<U32>;
type HashFilter = Wildcard | H256 | Array<H256>;

// 32-bit unsigned integer
type U32 = number | string;
// 256-bit hash (can also be less) encoded as hex
type H256 = string;
// Matches anything
type Wildcard = "*";

{% tabs %} {% tab title="As Arg" %}

--blacklist '[{"senderAddress": "0xa441b15fe9a3cf56661190a0b93b9dec7d041272", "originDomain": [1, 42]}, {"destinationDomain": 1}]'

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_BLACKLIST='[{"senderAddress": "0xa441b15fe9a3cf56661190a0b93b9dec7d041272", "originDomain": [1, 42]}, {"destinationDomain": 1}]'

{% endtab %}

{% tab title="As Config" %}

{
    "blacklist": "[{\"senderAddress\": \"0xa441b15fe9a3cf56661190a0b93b9dec7d041272\", \"originDomain\": [1, 42]}, {\"destinationDomain\": 1}]"
}

{% endtab %} {% endtabs %}

transactiongaslimit

Description: The max allowable gas to relay a transaction.

Optional: Defaults to no limit

Agents: Relayer

Type: Numeric (string | number)

{% tabs %} {% tab title="As Arg" %}

--transactionGasLimit 250000000

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_TRANSACTIONGASLIMIT="250000000"

{% endtab %}

{% tab title="As Config" %}

{
    "transactiongaslimit": "250000000"
}

{% endtab %} {% endtabs %}

skiptransactiongaslimitfor

Description: List of domain ids to skip applying the transactiongaslimit for.

Optional: Defaults to using the transactiongaslimit for all domains

Agents: Relayer

Type: string (comma separated list of domain ids)

{% tabs %} {% tab title="As Arg" %}

--skipTransactionGasLimitFor "43114,10,42220"

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_SKIPTRANSACTIONGASLIMITFOR="43114,10,42220"

{% endtab %}

{% tab title="As Config" %}

{
    "skiptransactiongaslimitfor": "43114,10,42220"
}

{% endtab %} {% endtabs %}

allowlocalcheckpointsyncers

Description: Whether to allow local checkpointsyncer types, if false it will ignore them.

Optional: Defaults to false

Agents: Relayer

Type: boolean

{% tabs %} {% tab title="As Arg" %}

--allowLocalCheckpointSyncers false

{% endtab %}

{% tab title="As Env" %}

export HYP_BASE_ALLOWLOCALCHECKPOINTSYNCERS=false

{% endtab %}

{% tab title="As Config" %}

{
    "allowlocalcheckpointsyncers": false
}

{% endtab %} {% endtabs %}

AWS_ACCESS_KEY_ID

Description: (Env only) The access key ID of your validator's AWS IAM user.

Optional: Required if any signer configuration uses aws

Agents: Relayer & Validator

Type: string

{% tabs %} {% tab title="As Arg" %} Not supported as an argument {% endtab %}

{% tab title="As Env" %}

export AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"

{% endtab %}

{% tab title="As Config" %} Not supported in configuration files {% endtab %} {% endtabs %}

AWS_SECRET_ACCESS_KEY

Description: (Env only) The secret access key of your validator's AWS IAM user.

Optional: Required if any signer configuration uses aws

Agents: Relayer & Validator

Type: string

{% tabs %} {% tab title="As Arg" %} Not supported as an argument {% endtab %}

{% tab title="As Env" %}

export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"

{% endtab %}

{% tab title="As Config" %} Not supported in configuration files {% endtab %} {% endtabs %}