跳到主要内容

配置参考

CONFIG_FILES

描述:(仅限环境)要加载的额外配置文件路径列表,按顺序(例如在 hyperlane-monorepo/rust/main/config 中的文件)。这些文件将从第一个合并到最后一个,因此如果第一个和最后一个都指定了特定的配置路径,则将使用最后一个列出的文件中设置的值。

这些文件必须在您的代理可以访问的文件系统中可访问。如果您在 Docker 中运行,请参阅 代理配置指南 以获取将配置文件挂载到 Docker 容器中的提示。

可选:

代理: 所有

类型: string(以逗号分隔的文件路径列表)

不支持作为参数

chains

描述: 每个链的配置,代理必须使用这些链。

可选:

代理: 所有

类型: Map<string, ChainSetup (Object)>(请参见 chains.*ChainSetup 值)

--chains.${CHAIN_NAME}.*

chains.<chain_name>.name

描述: 域的名称。允许为域指定与链的真实名称不同的名称。这几乎总是应该与 chain_name 相同。

要求: 如果是已知域名,则与域 ID 对齐。

可选:

代理: 所有

类型: string

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

chains.<chain_name>.domain

描述: 超平面域 ID,用于唯一标识该域。另请参见:域标识符

要求: 如果是已知域,则与域名对齐。

可选:

代理: 所有

类型: Numeric (string | number)

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

chains.<chain_name>.mailbox

描述: 链上邮箱合约的地址。另请参见 合约地址

可选:

代理: 所有

类型: Hash (string)

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

chains.<chain_name>.interchainGasPaymaster

描述: 链上跨链 Gas 支付主合同的地址。另请参见 合约地址

可选:

代理: 所有

类型: Hash (string)

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

chains.<chain_name>.validatorAnnounce

描述: 链上验证者公告合约的地址。另请参见 合约地址

可选:

代理: 所有

类型: Hash (string)

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

chains.<chain_name>.merkleTreeHook

描述: 链上默克尔树钩子合约的地址。另请参见 合约地址

可选:

代理: 所有

类型: Hash (string)

--chains.${CHAIN_NAME}.merkleTreeHook "$MERKLE_TREE_HOOK_ADDRESS"
--chains.ethereum.merkleTreeHook "0x48e6c30B97748d1e2e03bf3e9FbE3890ca5f8CCA"

chains.<chain_name>.signer

描述: 应该在此链上使用的签名者

可选: 是(如果未指定,将使用 defaultsigner

代理: 所有

类型: SignerConf (Object)

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

chains.<chain_name>.signer.type

描述: 定义的签名者类型。HexKey 签名者使用私钥,Aws 签名者使用基于 AWS 的 KMS,Node 假定本地节点将签署 RPC 调用。

可选: 是;默认为 node,除非指定了 key,在这种情况下默认为 hexKey

代理: 所有

类型: Enum ("hexKey" | "aws" | "cosmosKey" | "node")

不同虚拟机的接受值:

  • EVM: hexKey(ECDSA)或 aws(ECDSA)
  • sealevel: hexKey(ED25519)
  • cosmos: cosmosKey
--chains.${CHAIN_NAME}.signer.type hexKey
--chains.ethereum.signer.type node

chains.<chain_name>.signer.key

描述: 一个十六进制密钥。私钥的十六进制字符串。

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

可选: 否(如果满足要求)

代理: 所有

类型: string

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

chains.<chain_name>.signer.id

描述: 标识 AWS KMS 密钥的 UUID

要求: chains.<chain_name>.signer.type = "aws"

可选: 否(如果满足要求)

代理: 所有

类型: string

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

chains.<chain_name>.signer.region

描述: AWS 区域

要求: chains.<chain_name>.signer.type = "aws"

可选: 否(如果满足要求)

代理: 所有

类型: string

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

chains.<chain_name>.protocol

描述: 要使用的连接协议。

可选: 默认为 "ethereum"

代理: 所有

类型: Enum ("ethereum" | "fuel")

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

chains.<chain_name>.rpcConsensusType

信息

共识类型目前仅适用于 EVM 链。

与非 EVM 链的连接仅支持单个 RPC URL。如果在 rpcUrls 中指定了多个 RPC URL,则仅使用第一个。

描述: 如何与提供者通信

  • "single" 使用基本的 http 连接
  • "fallback" 将尝试第一个 URL,然后在连接或其他提供者故障时自动"回退"到下一个提供者;这仅应重试由于提供者导致的调用失败,而不是调用本身的失败;例如, Gas 不足错误将不会回退。
  • "quorum" 要求大多数 URL 同意,提交交易的例外情况;如果未指定,将自动协调"最新"区块以减少同步错误。

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

可选: 默认为 "fallback"

代理: 所有

类型: Enum ("fallback", "single", "quorum")

--chains.${CHAIN_NAME}.rpcConsensusType single

chains.<chain_name>.customRpcUrls

信息

与非 EVM 链的连接仅支持单个 RPC URL。如果指定了多个 RPC URL,则仅使用第一个。

描述: 用于连接提供者的以逗号分隔的 URL。customRpcUrlsrpcUrls 之间的区别在于,customRpcUrls 允许从 CLI 或环境变量中更友好的输入(以逗号分隔而不是数组)。

类型: string(以逗号分隔的 URL 列表,无空格)

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

chains.<chain_name>.rpcUrls

信息

与非 EVM 链的连接仅支持单个 RPC URL。如果指定了多个 RPC URL,则仅使用第一个。

描述: 用于连接提供者的 URL。第一个 URL 最初使用,如果失败,则尝试其他 URL。有关更多信息,请参见 rpcConsensusType

要求:

(chains.`<chain_name>`.protocol = "ethereum" | undefined)
AND (chains.`<chain_name>`.connection.type = "fallback" | "quorum")
OR chains.`<chain_name>`.protocol = "cosmos" | "sealevel" | "fuel"

可选: 否(如果满足要求)

代理:

类型: string

--chains.${CHAIN_NAME}.rpcurls.0.https "$CONNECTION_URL_0"
--chains.${CHAIN_NAME}.rpcurls.1.https "$CONNECTION_URL_1"
--chains.${CHAIN_NAME}.rpcurls.2.https "$CONNECTION_URL_2"
--chains.ethereum.rpcurls.0.https "http://127.0.0.1:8545"
--chains.ethereum.rpcurls.1.https "http://127.0.0.1:8546"
--chains.ethereum.rpcurls.2.https "http://127.0.0.1:8547"

chains.<chain_name>.customGrpcUrls

信息

与 Cosmos 链的连接需要 RPC 和 gRPC URL。Cosmos 链没有 rpcConsensusType 配置,gRPC URL 始终在 回退模式 下运行——如果第一个 URL 失败,则使用下一个。

描述: 用于连接提供者的以逗号分隔的 gRPC URL。类似于 customRpcUrls

类型: string(以逗号分隔的 URL 列表,无空格)

--chains.${CHAIN_NAME}.customgrpcurls "$CONNECTION_URLS"
--chains.cosmos.customgrpcurls "http://127.0.0.1:8545,http://127.0.0.1:8546,http://127.0.0.1:8547"

chains.<chain_name>.index.from

描述: 开始索引合约的高度。

可选: 默认为 0

代理: 中继器和抓取器

类型: Numeric (string | number)

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

chains.<chain_name>.index.chunk

描述: 在索引合约时一次查询的区块数量。请注意,配置的提供者必须支持所设置的任何值。默认值应适用于几乎所有提供者。

可选: 默认为 1999

代理: 中继器和抓取器

类型: Numeric (string | number)

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

defaultsigner

信息

由于每个虚拟机支持不同的签名者类型,默认签名者只能支持单个虚拟机类型。例如,如果默认签名者是 ECDSA,则只能在 EVM 链上签名。

描述: 应该用于所有未指定其自己的链的默认签名者。

可选:

代理: 所有

类型: SignerConf (Object)

--defaultSigner.*

defaultsigner.type

描述: 定义的签名者类型。HexKey 签名者使用私钥,Aws 签名者使用基于 AWS 的 KMS,Node 假定本地节点将签署 RPC 调用。

可选: 是;默认为 node,除非指定了 key,在这种情况下默认为 hexKey

代理: 所有

类型: Enum ("hexKey" | "aws" | "cosmosKey" | "node")

--defaultSigner.type hexKey

defaultsigner.key

描述: 一个十六进制密钥。私钥的十六进制字符串。

要求: defaultsigner.type = "hexKey" | undefined

可选: 否(如果满足要求)

代理: 所有

类型: string

--defaultSigner.key "8166f546bab6da521a8369cab06c5d2b9e46670292d85c875ee9ec20e84ffb61"

defaultsigner.id

描述: 标识 AWS KMS 密钥的 UUID

要求: defaultsigner.type = "aws"

可选: 否(如果满足要求)

代理: 所有

类型: string

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

defaultsigner.region

描述: AWS 区域

要求: defaultsigner.type = "aws"

可选: 否(如果满足要求)

代理: 所有

类型: string

--defaultSigner.region us-east-1

defaultsigner.type

描述: 定义的签名者类型。HexKey 签名者使用私钥,Aws 签名者使用基于 AWS 的 KMS,Node 假定本地节点将签署 RPC 调用。

可选: 是;默认为 node,除非指定了 key,在这种情况下默认为 hexKey

代理: 所有

类型: Enum ("hexKey" | "aws" | "cosmosKey" | "node")

--defaultSigner.type hexKey

defaultsigner.key

描述: 一个十六进制密钥。私钥的十六进制字符串。

要求: defaultsigner.type = "hexKey" | undefined

可选: 否(如果满足要求)

代理: 所有

类型: string

--defaultSigner.key "8166f546bab6da521a8369cab06c5d2b9e46670292d85c875ee9ec20e84ffb61"

defaultsigner.id

描述: 标识 AWS KMS 密钥的 UUID

要求: defaultsigner.type = "aws"

可选: 否(如果满足要求)

代理: 所有

类型: string

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

defaultsigner.region

描述: AWS 区域

要求: defaultsigner.type = "aws"

可选: 否(如果满足要求)

代理: 所有

类型: string

--defaultSigner.region us-east-1

metricsport

描述: 用于暴露 prometheus 指标的端口

可选: 默认为 9090

代理: 所有

类型: Numeric (string | number)

--metrics-port 9090

log.format

描述: 日志模块的配置。这控制日志记录。

可选: 默认为 pretty

代理: 所有

类型: Enum ("pretty" | "json" | "full" | "compact")

--log.format pretty

log.level

描述: 日志模块的配置。这控制日志记录。要获得完整的详细信息(包括依赖项的详细信息),请使用 dependencyTrace

可选: 默认为 info

代理: 所有

类型: Enum ("dependencyTrace" | "trace" | "debug" | "info" | "warn" | "error" | "off")

--log.level info

originchainname

描述: 验证者应验证的链的名称,以及中继器应从中继送消息的链的名称。已弃用用于中继器,请改用 #relaychains

可选: 否 - 验证者;是 - 中继器

代理: 验证者和中继器

类型: string

--originChainName ethereum

validator

描述: 验证者应使用的签名者。

可选:

代理: 所有

类型: SignerConf (Object)

--validator.*

validator.type

描述: 定义的 EVM 签名者类型。请注意,无论验证者操作在哪个虚拟机上,检查点始终使用 EVM ECDSA 曲线签名。HexKey 签名者使用私钥,Aws 签名者使用基于 AWS 的 KMS,Node 假定本地节点将签署 RPC 调用。

可选: 是;默认为 node,除非指定了 key,在这种情况下默认为 hexKey

代理: 所有

类型: Enum ("hexKey" | "aws" | "node")

--validator.type hexKey

validator.key

描述: 一个十六进制密钥。私钥的十六进制字符串。

要求: validator.type = "hexKey" | undefined

可选: 否(如果满足要求)

代理: 所有

类型: string

--validator.key 8166f546bab6da521a8369cab06c5d2b9e46670292d85c875ee9ec20e84ffb61

validator.id

描述: 标识 AWS KMS 密钥的 UUID

要求: validator.type = "aws"

可选: 否(如果满足要求)

代理: 所有

类型: string

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

validator.region

描述: AWS 区域

要求: validator.type = "aws"

可选: 否(如果满足要求)

代理: 所有

类型: string

--validator.region us-east-1

checkpointsyncer.type

描述: 定义同步检查点的方法

可选:

代理: 验证者

类型: Enum ("localStorage" | "s3")

--checkpointSyncer.type localStorage

checkpointsyncer.path

描述: 本地存储类型检查点同步器配置的本地磁盘路径。

要求: checkpointsyncer.type = "localStorage"

可选: 否(如果满足条件)

代理: 验证者

类型: string

--checkpointSyncer.path "/tmp/syncer"

checkpointsyncer.bucket

描述: S3 存储桶名称

要求: checkpointsyncer.type = "s3"

可选: 否(如果满足条件)

代理: 验证者

类型: string

--checkpointSyncer.bucket signatures-ethereum

checkpointsyncer.folder

描述: S3 存储桶中的文件夹

要求: checkpointsyncer.type = "s3"

可选: 否(如果满足条件)

代理: 验证者

类型: string

--checkpointSyncer.folder signatures-ethereum

checkpointsyncer.region

描述: S3 存储桶区域

要求: checkpointsyncer.type = "s3"

可选: 否(如果满足条件)

代理: 验证者

类型: string

--checkpointSyncer.region us-east-1

interval

描述: 验证者检查新检查点的频率(以秒为单位)。另请参见 延迟

可选:

代理: 验证者

类型: Numeric (string | number)

--interval 30

db

描述: 这是代理在磁盘上存储相关数据的本地文件系统路径。每个代理必须唯一! 多个代理必须具有不同的路径。如果路径不以系统定义的根路径(例如 Unix 上的 /)开头,则该路径相对于当前工作目录。当使用 Docker 镜像时,请确保该文件夹在运行之间得以持久化。

对于抓取器,这是连接到 PostgreSQL 数据库的连接字符串。

可选: 对于验证者和中继器,它是可选的,默认为当前工作目录中包含 originchainname 的路径。对于抓取器,它是必需的。

代理: 所有

类型: string

# 验证者
--db "/tmp/hyp/validator/ethereum-cache"

# 中继器
--db "/tmp/hyp/relayer/ethereum-cache"

# 抓取器
--db "postgresql://postgres:password@localhost:5432/dbname"

relaychains

描述: 要在其之间传递消息的链的列表。

可选:

代理: 中继器

类型: string(以逗号分隔的列表)

--relayChains "arbitrum,ethereum,bsc"

gaspaymentenforcement

描述: 按优先级排序的 Gas 支付强制配置的 JSON 字符串化数组。最后一个策略应为捕获所有策略,处理未匹配到先前策略的任何消息。

可选: 默认为不强制执行([{"type": "none"}]

代理: 中继器

类型: 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;
} & { type: "onChainFeeQuoting"; gasfraction?: GasFraction }) // to on-chain fee quoting. `gasfraction` defaults to "1 / 2". // Required amount of gas on the foreign chain has been paid according
| {
// 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;
--gasPaymentEnforcement '[{"type": "none", "matchingList": [{"senderAddress": "0xa441b15fe9a3cf56661190a0b93b9dec7d041272"}]}, {"type": "minimum", "payment": 100000}]'

whitelist

描述: 定义应允许哪些消息的匹配列表。任何不匹配此列表的消息将不会被中继。如果未提供白名单,则所有消息都将被允许。

另请参见 消息过滤

可选:

代理: 中继器

类型: JSON (string)

// 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 = "*";
--whitelist '[{"senderAddress": "0xa441b15fe9a3cf56661190a0b93b9dec7d041272", "originDomain": [1, 42]}, {"destinationDomain": 1}]'

blacklist

描述: 定义应忽略哪些消息的匹配列表。任何与此列表匹配的消息将不会被中继。如果未提供黑名单,则所有消息都将被允许。

另请参见 消息过滤

可选:

代理: 中继器

类型: 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 = "*";
--blacklist '[{"senderAddress": "0xa441b15fe9a3cf56661190a0b93b9dec7d041272", "originDomain": [1, 42]}, {"destinationDomain": 1}]'

transactiongaslimit

描述: 中继交易的最大允许 Gas 。

可选: 默认为没有限制

代理: 中继器

类型: Numeric (string | number)

--transactionGasLimit 250000000

skiptransactiongaslimitfor

描述: 要跳过应用 transactiongaslimit 的域 ID 列表。

可选: 默认为对所有域使用 transactiongaslimit

代理: 中继器

类型: string(以逗号分隔的域 ID 列表)

--skipTransactionGasLimitFor "43114,10,42220"

allowlocalcheckpointsyncers

描述: 是否允许本地 checkpointsyncer 类型,如果为 false,则将忽略它们。

可选: 默认为 false

代理: 中继器

类型: boolean

--allowLocalCheckpointSyncers false

AWS_ACCESS_KEY_ID

描述:(仅限环境)验证者的 AWS IAM 用户的访问密钥 ID。

可选: 如果任何签名者配置使用 aws,则为必需

代理: 中继器和验证者

类型: string

不支持作为参数

AWS_SECRET_ACCESS_KEY

描述:(仅限环境)验证者的 AWS IAM 用户的秘密访问密钥。

可选: 如果任何签名者配置使用 aws,则为必需

代理: 中继器和验证者

类型: string

不支持作为参数