本文介绍了OpenZeppelin Relayer对Solana网络的支持,包括通过Jupiter DEX实现自动化Token交换、Gasless交易、安全交易签名等功能。文章还详细说明了支持的网络配置、签名器、快速启动步骤以及Relayer策略配置,并提供了API参考、安全建议、问题排查和支持渠道。
OpenZeppelin Relayer 提供对 Solana 网络的强大支持,从而实现安全的交易中继、自动化的 Token 交换、无 Gas 交易和高级费用管理。本页面涵盖了你入门并充分利用 Solana 特定功能所需的一切。
通过 Jupiter DEX 自动进行 Token 交换(仅适用于 mainnet-beta)
Gasless 交易(用户或 Relayer 支付费用)
使用多个签名后端进行安全交易签名
交易状态监控和 nonce 管理
自定义 RPC 端点和网络策略
指标和可观察性
Solana 网络通过 JSON 配置文件定义,从而可以灵活地:
配置标准 Solana 集群:mainnet-beta
、devnet
、testnet
设置具有特定 RPC 端点的自定义 Solana 兼容网络
使用从基本配置的继承来创建网络变体
Solana 网络配置示例:
{
"networks": [\
{\
"type": "solana",\
"network": "solana-mainnet",\
"rpc_urls": ["https://api.mainnet-beta.solana.com"],\
"explorer_urls": ["https://explorer.solana.com"],\
"is_testnet": false,\
"tags": ["mainnet", "solana"]\
},\
{\
"type": "solana",\
"network": "solana-devnet",\
"rpc_urls": ["https://api.devnet.solana.com"],\
"explorer_urls": ["https://explorer.solana.com?cluster=devnet"],\
"is_testnet": true,\
"tags": ["devnet", "solana"]\
},\
{\
"type": "solana",\
"network": "solana-custom",\
"rpc_urls": ["https://your-custom-solana-rpc.example.com"],\
"tags": ["custom", "solana"]\
}\
]
}
有关详细的网络配置选项,请参阅 网络配置 指南。
vault_transit
(hosted)
turnkey
(hosted)
google_cloud_kms
(hosted)
local
(local)
vault
(local)
在生产系统中,建议使用托管签名器以获得最佳安全模型。 |
有关分步设置,请参阅 快速入门指南。主要先决条件:
Rust 2021,版本 1.86
或更高版本
Redis
Docker(可选)
Solana Relayer 的配置示例:
{
"id": "solana-example",
"name": "Solana Example",
"network": "devnet",
"paused": false,
"notification_id": "notification-example",
"signer_id": "local-signer",
"network_type": "solana",
"custom_rpc_urls": [\
{ "url": "https://primary-solana-rpc.example.com", "weight": 100 },\
{ "url": "https://backup-solana-rpc.example.com", "weight": 100 }\
],
"policies": {
"fee_payment_strategy": "user",
"min_balance": 0,
"allowed_tokens": [\
{ "mint": "So111...", "max_allowed_fee": 100000000 }\
],
"swap_config": {
"strategy": "jupiter-swap",
"cron_schedule": "0 0 * * * *",
"min_balance_threshold": 1000000,
"jupiter_swap_options": {
"dynamic_compute_unit_limit": true,
"priority_level": "high",
"priority_fee_max_lamports": 1000000000
}
}
}
}
有关更多配置示例,请访问 OpenZeppelin Relayer 示例存储库。
除了标准的中继器配置和策略之外,Solana 中继器还支持其他选项:
fee_payment_strategy
:"user"
或 "relayer"
(谁支付交易费用)
allowed_tokens
:支持交换和费用支付的 SPL Token 列表
allowed_programs
、allowed_accounts
、disallowed_accounts
:将中继器操作限制为特定程序/帐户
swap_config
:自动 Token 交换设置(请参见下文)
你可以在 用户文档-Relayers 中查看所有选项。
strategy
:要使用的交换引擎。支持的值:"jupiter-swap"
(Jupiter Swap API), "jupiter-ultra"
(Jupiter Ultra API)。
cron_schedule
:Cron 表达式,用于定义应多久运行一次计划的交换(例如,"0 0 * * * *"
表示每小时)。
min_balance_threshold
:触发交换的最小 Token 余额(以 lamports 为单位)。如果中继器的余额低于此值,则会尝试交换。
jupiter_swap_options
:Jupiter 交换的高级选项,例如:
dynamic_compute_unit_limit
:如果为 true
,则动态调整交换交易的计算单元。
priority_level
:交换交易的优先级。支持的值:"medium"
、"high"
、"veryHigh"
。
priority_fee_max_lamports
:为交换交易支付的最大优先级费用(以 lamports 为单位)。
每个 Token 的交换限制:
min_amount
:单次操作中要交换的 Token 的最小数量。
max_amount
:单次操作中要交换的 Token 的最大数量。
retain_min_amount
:在交换后要在中继器帐户中保留的 Token 的最小数量(防止交换整个余额)。
当用户 fee_payment_strategy
用于使用以下方式的 Relayer 时,Relayer 可以在 Solana 上执行自动 Token 交换:
jupiter-swap – 通过 Jupiter Swap API
jupiter-ultra – 通过 Jupiter Ultra API
可以将交换设置为以下方式工作:
计划的交换:后台作业根据你的 cron 计划运行交换。
按需交换:如果交易因资金不足而失败,则 Relayer 会尝试交换,然后再返回错误。
Solana API 符合 Paymaster 规范。
常用端点:
- POST /api/v1/relayers/<relayer_id>/rpc
方法:
feeEstimate
,
prepareTransaction
,
transferTransaction
,
signTransaction
,
signAndSendTransaction
,
getSupportedTokens
getSupportedFeatures
示例:估算交易费用
curl --location --request POST 'http://localhost:8080/api/v1/relayers/solana-example/rpc' \
--header 'Authorization: Bearer <api_key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"jsonrpc": "2.0",
"method": "feeEstimate",
"params": {
"transaction": "<base64-encoded-tx>",
"fee_token": "<mint-address>"
},
"id": 1
}'
有关完整的详细信息和示例,请参见 API 参考 和 SDK 示例。
不要将中继器直接暴露于公共互联网。
部署在安全后端(反向代理、防火墙)之后。
在生产系统中使用托管签名器。
检查环境变量和配置文件是否存在错误
查看容器日志以查找问题
- 原文链接: docs.openzeppelin.com/re...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!