跳到主要内容

代理配置

所有代理使用相同的配置方法,这是一种多层次的配置方式,允许轻松覆盖默认配置。每一层都会覆盖前一层中重叠的值。

配置层

  1. 来自"默认部署"的基础配置位于 monorepo,所有这些配置会自动加载。
  2. 通过 CONFIG_FILES 环境变量传入的配置文件会被加载,环境变量应为一个以逗号分隔的 JSON 文件路径列表,按顺序从第一个到最后一个加载。
  3. HYP_ 为前缀的环境变量会被接下来读取。
  4. HYP_<AGENT>_ 为前缀的环境变量随后被读取,并仅适用于当前代理。例如,RELAYERVALIDATORSCRAPER 只会读取各自的前缀。
  5. 命令行参数最后被读取。

命令行参数

命令行参数在应用程序名称后添加,例如 ./relayer --originChainNames="test1,test2,test3"

支持以下格式:

  • --argName argValue
  • --argName "argValue"
  • --argName 'argValue'
  • --argName=argValue
  • --argName="argValue"
  • --argName='argValue'

参数名称不区分大小写,因此在本指南中我们可能会以驼峰式显示它们以便于阅读,但 --argName 等同于 --ARGNAME--argname

示例:

  • { "db": "/path/to/dir" } 可以通过 --db "/path/to/dir" 设置。
  • { "chains": { "ethereum": { "name": "ethereum" } } }(缩写为 chains.ethereum.namechains.<chain_name>.name)可以通过 --chains.ethereum.name ethereum 设置。
  • { "chains": { "avalanche": { "customRpcUrls": "https://some-url.com" } } }(缩写为 chains.<chain_name>.customrpcurls)可以通过 --chains.avalanche.customrpcurls "https://some-url.com" 设置。

环境变量

配置文件格式是设置非机密且不需要每次运行时更改的内容的首选方式,因为它是最容易检查和编辑的格式。每个配置值都可以通过使用正确的名称设置为环境变量,但有一些环境变量无法在配置中设置,例如 CONFIG_FILES

HYP_HYP_<AGENT>_ 是等效的前缀,唯一的区别在于它们的加载顺序,并且可以引用配置文件中的所有配置值。

环境名称将是这两个前缀之一,然后是下划线分隔的路径组件的大写路径。

例如:

  • { "db": "/path/to/dir" } 可以通过 HYP_DB="/path/to/dir"HYP_RELAYER_DB="/path/to/dir" 设置。
  • { "chains": { "ethereum": { "name": "ethereum" } } }(缩写为 chains.ethereum.namechains.<chain_name>.name)可以通过 HYP_CHAINS_ETHEREUM_NAME="ethereum"HYP_VALIDATOR_CHAINS_ETHEREUM_NAME="ethereum"HYP_RELAYER_CHAINS_ETHEREUM_NAME="ethereum" 等设置。
  • { "chains": { "avalanche": { "customRpcUrls": "https://some-url.com" } } }(缩写为 chains.<chain_name>.customrpcurls)可以通过 HYP_CHAINS_AVALANCHE_CUSTOMRPCURLS="https://some-url.com"HYP_VALIDATOR_AVALANCHE_CUSTOMRPCURLS="https://some-url.com" 等设置。

使用 Docker 的配置文件

在 Docker 中运行代理增加了一层复杂性,因为配置文件需要在 Docker 容器内可访问。可以在 repo 中找到的基础配置已经包含在提供的 Docker 镜像中,并将默认加载。

挂载单个配置文件可以使用标志 --mount type=bind,source=$LOCAL_CONFIG_PATH,target=/config/$CONFIG_NAME,readonly,然后将配置文件添加到 CONFIG_FILES 中以便加载。

挂载整个目录可以使用标志 --mount source=$LOCAL_CONFIG_DIR_PATH,target=/config,readonly,然后添加要加载的单个配置文件到 CONFIG_FILES 中。

例如,假设您在本地机器的路径 /home/workspace/ethereum.json 有一个配置文件,并希望使用它运行验证器。

docker run -it --mount type=bind,source=/home/workspace/ethereum.json,target=/config/ethereum.json,readonly -e CONFIG_FILES=/config/ethereum.json $DOCKER_IMAGE ./validator

source 路径是您本地机器上的路径,target 路径是源路径内容在 Docker 容器内可用的位置,CONFIG_FILES 应指定要从目标路径加载的配置。