OpenZeppelin Relayer 是一个为EVM和非EVM网络提供交易中继基础设施的服务。它支持多链交互、交易签名、费用估算、Gasless交易等功能。可以通过SDK集成,并支持Docker部署和插件扩展,允许开发者构建自定义逻辑。支持EVM、Solana, Stellar等多种区块链网络。
此软件处于 alpha 阶段。在生产环境中使用风险自负。 |
OpenZeppelin Relayer 是一项服务,提供将交易中继到 EVM 和非 EVM 网络的 инфраструктура。它被设计为 dApp 的后端,dApp 需要与这些网络交互。
多链支持:与包括 Solana 和基于 EVM 的链在内的多个区块链网络交互。
交易中继:高效地将交易提交到受支持的区块链网络。
交易签名:使用可配置的密钥管理安全地签署交易。
交易费用预估:预估交易费用,以更好地进行成本管理。
Solana Gasless 交易:支持 Solana 上的 gasless 交易,使用户无需交易费用即可进行交互。
交易 Nonce 管理:处理 nonce 管理以确保交易顺序。
交易状态监控:跟踪已提交交易的状态。
SDK 集成:通过我们的配套 JavaScript/TypeScript SDK 轻松与 relayer 交互。
可扩展的架构:轻松添加对新区块链网络的支持。
可配置的网络策略:定义和强制执行特定于网络的交易处理策略。
指标和可观察性:使用 Prometheus 和 Grafana 监控应用程序性能。
Docker 支持: 使用 Docker 部署 relayer,用于开发和生产环境。
插件:使用 TypeScript 函数扩展 relayer 的功能,添加自定义逻辑。
OpenZeppelin Relayer 通过灵活的基于 JSON 的配置系统支持多个区块链网络。 网络在配置文件中定义,允许你配置:
任何与 EVM 兼容的网络(Ethereum、Polygon、BSC、Arbitrum、Optimism 等)
Solana 网络(mainnet-beta、devnet、testnet、自定义 RPC 端点)
Stellar 网络(Pubnet、Testnet、自定义网络)
创建自定义网络配置,包括特定的 RPC 端点、链 ID 和网络参数
使用继承来创建从基本配置继承的网络变体
网络类型 | 描述 |
---|---|
evm |
以太坊虚拟机兼容网络。通过配置链 ID、RPC URL 和网络特定参数来支持任何 EVM 链。 |
solana |
Solana 区块链网络。 支持所有 Solana 集群和自定义 RPC 端点。 |
stellar |
Stellar 区块链网络(部分支持)。支持 Stellar 公共网络和测试网。 |
可以从以下位置加载网络:
JSON 数组:配置文件中的直接网络定义
文件目录:多个 JSON 文件,每个文件都包含网络定义
有关详细的网络配置选项和示例,请参阅网络配置页面。
有关我们的开发计划和即将推出的功能的信息,请参阅项目路线图。 |
要立即开始使用,请参阅快速入门。 |
外部系统
OpenZeppelin Relayer
客户端
API 层
领域层
基础设施
服务层
配置
HTTP 请求
处理请求
验证 & 路由
调用
使用
执行
处理
交互
签名
通过以下方式连接
将作业排队
通知
收集
可以使用
存储数据
异步处理
密钥管理
交互
配置
配置
区块链网络
Redis
HashiCorp Vault
Prometheus/Grafana
通知服务
配置文件
环境变量
交易服务
Vault 服务
Webhook 通知
监控 & 指标
存储库
作业队列系统
签名者服务
网络提供商
领域逻辑
Relayer 服务
策略执行
API 路由 & 控制器
中间件
插件
API/SDK
该项目遵循标准的 Rust 项目布局:
openzeppelin-relayer/
├── src/
│ ├── api/ # 路由和控制器逻辑
│ ├── bootstrap/ # 服务初始化逻辑
│ ├── config/ # 配置逻辑
│ ├── constants/ # 系统中使用的常量值
│ ├── domain/ # 领域逻辑
│ ├── jobs/ # 异步处理逻辑(排队)
│ ├── logging/ # 日志文件轮换逻辑
│ ├── metrics/ # 指标逻辑
│ ├── models/ # 数据结构和类型
│ ├── repositories/ # 配置存储
│ ├── services/ # 服务逻辑
│ └── utils/ # 辅助函数
│
├── config/ # 配置文件
├── tests/ # 集成测试
├── docs/ # 文档
├── scripts/ # 实用程序脚本
├── examples/ # 配置示例
├── helpers/ # Rust 辅助脚本
├── plugins/ # 插件目录
└── ... 其他根文件 (Cargo.toml, README.md, 等)
有关每个目录及其内容的详细信息,请参阅项目结构详细信息。
Rust 2021 版本
Docker(可选,用于容器化部署)
Node.js、typescript 和 ts-node(可选,用于插件)
现成的示例配置<br>如需使用各种配置进行快速设置,请查看我们 GitHub 存储库中的 examples directory:<br>- basic-example :使用 Redis 的简单设置<br> <br>- basic-example-logging :使用基于文件的日志记录的配置<br> <br>- basic-example-metrics :使用 Prometheus 和 Grafana 指标的设置<br> <br>- vault-secret-signer :使用 HashiCorp Vault 进行密钥管理<br> <br>- vault-transit-signer :使用 Vault Transit 进行安全签名<br> <br>- evm-gcp-kms-signer :使用 Google Cloud KMS 进行 EVM 安全签名<br> <br>- evm-turnkey-signer :使用 Turnkey 进行 EVM 安全签名<br> <br>- solana-turnkey-signer :使用 Turnkey 进行 Solana 安全签名<br> <br>每个示例都包含一个 README,其中包含分步说明和 Docker Compose 配置。 |
git clone https://github.com/openzeppelin/openzeppelin-relayer
cd openzeppelin-relayer
从此处安装稳定的 libsodium 版本。
按照 libsodium 安装指南中的步骤操作。
cargo build
cargo run
在执行命令之前,请确保 .env 和 config.json 文件已按照配置参考部分中的详细说明进行配置。 |
Relayer 可以使用相应的 Dockerfile(Dockerfile.development
或 Dockerfile.production
)作为开发或生产容器运行。
编辑存储库根目录下的 .env
以调整环境变量
相应的 .env 文件将在镜像构建期间包含在内
你可以使用 Docker Compose (v2) 进行构建。
## 默认构建
docker compose build
## 或者,对于更精简的镜像(并使用 Dockerfile.production)
DOCKERFILE=Dockerfile.production docker compose build
使用 Docker Compose 运行容器:
docker compose up -d
对于生产运行,你可以使用:
DOCKERFILE=Dockerfile.production docker compose up -d
OpenZeppelin Relayer 在启动前需要正确的配置。 配置系统使用两个主要文件:
config.json
: 包含 relayer 定义、签名者配置和网络策略
.env
: 包含环境变量,如 API 密钥和连接字符串
必须在启动应用程序之前正确设置这两个配置文件。 对任一文件的更改都需要重新启动容器才能生效。<br>有关使用预配置文件的快速设置示例,请参阅我们 GitHub 存储库中的 examples directory。 |
有关全面的配置详细信息,包括:
环境变量及其设置
主配置文件结构
签名者配置(本地、vault、云 KMS 等)
通知设置
Relayer 策略和网络设置
插件配置
完整的配置示例
请参阅专门的配置指南。
此软件处于 alpha 阶段。在生产环境中使用风险自负。 |
OpenZeppelin Relayer 设计为作为后端服务运行,不应直接暴露于公共互联网。 为了保护服务免受未经授权的访问,请将其部署在你自己的安全后端 инфраструктура(例如反向代理或防火墙)后面,并将访问限制为仅受信任的内部组件。 直接暴露会增加遭到利用和安全漏洞的风险。 |
如需支持或咨询,请通过 Telegram 联系我们。
本项目根据 GNU Affero General Public License v3.0 获得许可 - 有关详细信息,请参阅 LICENSE 文件。
有关安全问题,请参阅我们的 Security Policy。
- 原文链接: docs.openzeppelin.com/re...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!