配置
Gateway 使用模块化配置系统,允许您自定义操作的各个方面。本指南解释了配置结构以及如何修改它以满足您的需求。
配置概述¶
Gateway 的配置系统由位于 /conf
目录中的 YAML 文件组成,以及按链和连接器组织的代币和池的 JSON 文件。
初始配置文件在安装期间运行设置脚本时,会自动使用 /src/templates
中的默认模板创建。
配置结构¶
/conf/
文件夹包含以下类型的配置文件:
- 根配置 (
root.yml
):定义所有配置文件及其模式的列表 - 服务器配置 (
server.yml
):控制 Gateway 服务器行为 - 链配置 (例如
solana.yml
):定义区块链网络设置 - 连接器配置 (例如
raydium.yml
):配置 DEX 特定设置 - 代币列表 (
/conf/tokens/{chain}/{network}.json
):每个网络的代币定义 - 池列表 (
/conf/pools/{connector}.json
):每个 DEX 连接器的流动性池定义
根配置¶
root.yml
文件作为 Gateway 配置系统的入口点。它定义了要加载哪些配置文件以及相应的模式文件。
version: 3
configurations:
$namespace server:
configurationPath: server.yml
schemaPath: server-schema.json
$namespace solana:
configurationPath: solana.yml
schemaPath: solana-schema.json
$namespace jupiter:
configurationPath: jupiter.yml
schemaPath: jupiter-schema.json
此文件告诉 Gateway:
- 要加载哪些配置文件
- 在哪里找到验证每个配置的模式文件,这些文件位于
/src/services/schemas
目录中 - 如何命名每个配置部分
服务器配置¶
server.yml
文件控制核心 Gateway 服务器行为,包括端口、日志和安全设置。
# GMT 偏移量(小时)(例如 -8 表示太平洋美国时间,-5 表示美国东部时间)
GMTOffset: -8
# 运行 Gateway 服务器的端口
port: 15888
# 运行 Swagger 文档 UI 的端口。
# 设置为 0 以在 http://0.0.0.0:{port}/docs (与 Gateway 服务器相同端口) 提供文档
# 设置为特定端口(例如 8080)以在 http://0.0.0.0:{docPort} 单独提供文档
docsPort: 0
# Hummingbot 生成自签名证书的文件夹路径
certificatePath: ./certs/
# 日志存储的文件夹路径。
logPath: './logs'
# 允许访问 gateway 的 IP。localhost 默认允许。
ipWhitelist: []
# 如果为 true,日志将存储在 logPath 并打印到 stdout。如果为 false,它们
# 将仅存储在 logPath 而不打印到 stdout。
logToStdOut: true
# 如果为 true,服务器将为每个请求和响应打印详细的 Fastify 日志到 stdout。如果为 false,则只发送标准日志。
fastifyLogs: false
# Nonce 数据库
nonceDbPath: 'nonce.level'
# 交易数据库
transactionDbPath: 'transaction.level'
链配置¶
链配置文件(例如 /conf/chains/solana.yml
)现在仅包含每个区块链的默认网络和钱包设置。
当您使用 gateway connect
连接钱包时,它将自动成为该链的 defaultWallet
。defaultNetwork
确定网关默认为该链使用的网络配置。
注意
网络特定配置现在存储在 /conf/chains/{chain}/{network}.yml
下的单独文件中
连接器配置¶
连接器配置文件(例如 /conf/connectors/jupiter.yml
)定义了每个 DEX 连接器的特定设置,包括滑点容忍度、路由偏好和 API 配置。
示例:Jupiter 配置¶
# 交换的默认滑点百分比(以小数表示,例如 1 = 1%)
slippagePct: 1
# 交换事务处理的优先级
# 选项:medium, high, veryHigh
priorityLevel: 'veryHigh'
# 最大优先费用(以 lamports 为单位,用于动态优先费用)
# 当设置了 priorityLevel 且未提供明确的 priorityFeeLamports 时使用
maxLamports: 1000000
# 限制路由仅通过 1 个市场
# 默认:false(允许多跳路由以获得更好的价格)
onlyDirectRoutes: false
# 仅限制通过高流动性中间代币进行路由
# 默认:true(为获得更好的价格和稳定性)
restrictIntermediateTokens: true
# Jupiter API 密钥(可选)
# 对于免费版,留空(使用 https://lite-api.jup.ag)
# 对于付费计划,在 https://portal.jup.ag 生成密钥(使用 https://api.jup.ag)
apiKey: ''
配置选项说明:
-
slippagePct
:交易的最大可接受价格滑点。如果执行价格偏离报价超过此百分比,交易将失败。 -
priorityLevel
:控制 Solana 上的交易优先级。更高的优先级级别会带来更快的确认,但费用更高。对于时间敏感的交易,请设置为veryHigh
。 -
maxLamports
:限制最大优先费用,以防止在网络拥堵期间产生过高费用。1,000,000 lamports = 0.001 SOL。 -
onlyDirectRoutes
:当设置为true
时,限制交换仅通过直接池(无中间代币)。这可以减少价格影响,但可能导致对流动性较低的交易对获得更差的定价或路由失败。 -
restrictIntermediateTokens
:当设置为true
时,仅通过主要代币(SOL、USDC、USDT)作为中间代币进行路由。这增加了可靠性并减少了价格影响风险。 -
apiKey
:Jupiter 付费版的可选 API 密钥。免费版(lite-api)适合大多数用户,而付费版提供更高的速率限制和附加功能。
网络配置¶
网络配置文件(例如 /conf/chains/solana/mainnet-beta.yml
)包含每个区块链网络的详细设置,包括 RPC 端点和交易参数。
示例:Solana mainnet-beta 配置¶
nodeURL: https://api.mainnet-beta.solana.com
nativeCurrencySymbol: SOL
# 交易的默认计算单元
# 此设置用于在用户未指定时设置交易的计算单位限制
defaultComputeUnits: 200000
# 确认轮询间隔(以秒为单位)
# 检查已提交交易是否已确认的频率(内部重试循环)
confirmRetryInterval: 0.5
# 确认轮询尝试次数
# 在认为交易未确认之前进行确认轮询的次数
confirmRetryCount: 10
# 用于估计交易 gasPrice 的近期优先费用样本的下限百分位
# 使用近期优先费用的第 N 百分位数作为基础费用(90 = 第 90 百分位数)
basePriorityFeePct: 90
# 每个计算单位的最低优先费用(以 lamports 为单位)
# 此设置设置了优先费用的下限以确保交易被处理(默认值:0.1 lamports/CU)
minPriorityFeePerCU: 0.1
您可以使用 Gateway 命令查看任何网络的当前配置:
>>> gateway config solana-mainnet-beta
Gateway 配置 - 命名空间: solana-mainnet-beta:nodeURL: https://dry-dawn-hill.solana-mainnet.quiknode.pro/41bbd7ad405c552f91cc928e044e5e04c66341d2nativeCurrencySymbol: SOLdefaultComputeUnits: 200000confirmRetryInterval: 0.5confirmRetryCount: 10basePriorityFeePct: 90minPriorityFeePerCU: 0.1
要更新任何网络设置,请使用 gateway config [namespace] update
:
>>> gateway config solana-mainnet-beta update
可用配置路径: nodeURL, nativeCurrencySymbol, defaultComputeUnits, confirmRetryInterval, confirmRetryCount, basePriorityFeePct, minPriorityFeePerCU
输入配置路径(或输入 'exit' 取消): nodeURL'nodeURL' 的当前值:https://api.mainnet-beta.solana.com输入新值(或输入 'exit' 取消): https://your-preferred-node-provider.com/your-api-key
常见配置任务¶
更改节点提供商¶
要更改区块链网络的 RPC 节点提供商,您可以使用 Gateway 命令或直接编辑配置文件。
使用 Gateway 命令¶
>>> gateway config solana-mainnet-beta update
solana-mainnet-beta 的当前配置:nodeURL: https://api.mainnet-beta.solana.comnativeCurrencySymbol: SOLdefaultComputeUnits: 200000confirmRetryInterval: 0.5confirmRetryCount: 10basePriorityFeePct: 90minPriorityFeePerCU: 0.1
可用配置路径: nodeURL, nativeCurrencySymbol, defaultComputeUnits, confirmRetryInterval, confirmRetryCount, basePriorityFeePct, minPriorityFeePerCU
输入配置路径(或输入 'exit' 取消): nodeURL'nodeURL' 的当前值:https://api.mainnet-beta.solana.com输入新值(或输入 'exit' 取消): https://your-preferred-node-provider.com/your-api-key
nodeURL 更新成功Gateway 将自动重启以使更改生效
编辑配置文件¶
- 导航到网络配置文件夹(例如,
/conf/chains/solana/
) - 打开特定网络文件(例如,
mainnet-beta.yml
) - 找到
nodeURL
字段并将其替换为您首选节点提供商的 URL - 保存文件并重启 Gateway
Solana 主网示例(/conf/chains/solana/mainnet-beta.yml
):
nodeURL: https://your-preferred-node-provider.com/your-api-key
nativeCurrencySymbol: SOL
# 交易的默认计算单元
# 此设置用于在用户未指定时设置交易的计算单位限制
defaultComputeUnits: 200000
# 确认轮询间隔(以秒为单位)
# 检查已提交交易是否已确认的频率(内部重试循环)
confirmRetryInterval: 0.5
# 确认轮询尝试次数
# 在认为交易未确认之前进行确认轮询的次数
confirmRetryCount: 10
# 用于估计交易 gasPrice 的近期优先费用样本的下限百分位
# 使用近期优先费用的第 N 百分位数作为基础费用(90 = 第 90 百分位数)
basePriorityFeePct: 90
# 每个计算单位的最低优先费用(以 lamports 为单位)
# 此设置设置了优先费用的下限以确保交易被处理(默认值:0.1 lamports/CU)
minPriorityFeePerCU: 0.1
Ethereum 主网示例(/conf/chains/ethereum/mainnet.yml
):
chainID: 1
nodeURL: https://your-preferred-node-provider.com/your-api-key
nativeCurrencySymbol: ETH
minGasPrice: 0.1
添加代币¶
提示
新的 Gateway 端点除了符号外还接受 baseToken
和 quoteToken
的地址,因此您可以在将符号添加到网络代币列表之前直接使用地址。
Gateway 使用按链和网络组织的标准化代币列表。每个网络都有其自己的代币列表文件,其中包含该网络上所有支持的代币的元数据。
使用 Gateway 命令¶
>> gateway token HERMES update
输入链(例如,ethereum,solana):solana
未找到代币'HERMES'。我们将其添加到 solana(mainnet-beta)中。
输入代币信息:
Symbol [HERMES]:
Name: HermesWizard
Contract address: 24R8j15RDq3VoeRaSDFXMvSw4W7RLLZLdpTwK8ynx777
Decimals [18]: 9
要添加/更新的代币: { "symbol": "HERMES", "name": "HermesWizard", "address": "24R8j15RDq3VoeRaSDFXMvSw4W7RLLZLdpTwK8ynx777", "decimals": 9 }
添加/更新此代币?(是/否) >>> 是
正在添加/更新代币... ✓ 代币添加/更新成功!
正在重启网关以使更改生效... ✓ 网关重启成功
现在您可以使用 'gateway token HERMES' 来查看代币信息。
编辑代币文件¶
- 导航至
/conf/tokens/{chain}/
文件夹(例如,/conf/tokens/solana/
) - 打开相应的网络文件(例如,Solana 主网的
mainnet-beta.json
) - 按照以下现有格式向数组中添加新的代币条目
- 确保生成的文件仍然是有效的 JSON!
- 保存文件并重启 Gateway
{
"chainId": 101,
"name": "ai16z",
"symbol": "AI16Z",
"address": "HeLp6NuQkmYB4pYWo2zYs22mESHXPQYzXbB8n4V98jwC",
"decimals": 9
}
代币列表结构遵循 Token Lists 标准,帮助用户在不同网络中避免诈骗并找到合法代币。
添加池¶
每个 AMM 和 CLMM DEX 可能对相同交易对拥有不同的池,具有不同的参数,如费用层级和区间步长。网关现在为每个 DEX 连接器在专用 JSON 文件中存储池定义。
使用 Gateway 命令¶
>>> gateway pool raydium/amm LIGHT-SOL update
=== 为 raydium/amm 上的 LIGHT-SOL 添加池 === 链:solana 网络:mainnet-beta
未找到 'LIGHT-SOL' 池。让我们将其添加到 solana (mainnet-beta) 中。
输入池信息:
池合约地址:7YZEyZ3DuHQTmgmKwzuXMYG6SHD3sCWZ3mLkU7HuLrfC
要添加的池: { "address": "7YZEyZ3DuHQTmgmKwzuXMYG6SHD3sCWZ3mLkU7HuLrfC", "baseSymbol": "LIGHT", "quoteSymbol": "SOL", "type": "amm" }
添加此池?(是/否) >>> 是
正在添加池... ✓ 池添加成功!
正在重启网关以使更改生效... ✓ 网关重启成功
池已添加。您可以使用以下命令查看:gateway pool raydium/amm LIGHT-SOL
编辑池文件¶
- 导航至
/conf/pools/
文件夹 - 打开连接器的池文件(例如,
raydium.json
) - 按照现有格式向数组中添加新的池条目
- 确保生成的文件仍然是有效的 JSON!
- 保存文件并重启 Gateway
示例池条目:
{
"type": "amm",
"network": "mainnet-beta",
"baseSymbol": "WIF",
"quoteSymbol": "SOL",
"address": "EP2ib6dYdEeqD8MfE2ezHCxX3kP3K2eLKkirfPm5eyMx"
}
对于 CLMM 池,请改用 "type": "clmm"
。池文件结构允许在同一连接器内为不同网络和交易类型(AMM 与 CLMM)指定不同的池。
更新配置¶
有两种方式可以更新您的网关配置:
- 手动更新:
- 直接编辑配置文件
-
重启网关以应用更改
-
API 更新:
- 使用
/config/update
API 端点来更新配置 - 这允许在不重启网关的情况下进行动态更新
提示
在将配置更改应用到生产环境之前,请始终验证您的配置更改。您可以使用 root.yml
中引用的模式文件来确保您的配置有效。