本文介绍了OpenZeppelin Relayer,一个用于向EVM和非EVM网络中继交易的基础设施服务。主要功能包括多链支持、交易中继、安全签名、费用估算、Gasless交易、Nonce管理、状态监控、SDK集成、可扩展架构、网络策略配置、指标监控、Docker支持和插件扩展。支持包括以太坊、Solana、Stellar在内的多种网络,通过灵活的JSON配置系统进行管理。
该软件处于 alpha 阶段。在生产环境中使用风险自负。 |
OpenZeppelin Relayer 是一项服务,提供将交易 relay 到 EVM 和 Non-EVM 网络的 инфраструктура。它旨在用作需要与这些网络交互的 dApp 的后端。
多链支持:与包括 Solana 和基于 EVM 的链在内的多个区块链网络交互。
交易 Relaying:高效地将交易提交到受支持的区块链网络。
交易签名:使用可配置的密钥管理安全地签署交易。
交易费用估算:估算交易费用,以便更好地进行成本管理。
Solana Gasless 交易:支持 Solana 上的 gasless 交易,使用户无需支付交易费用即可进行交互。
交易 Nonce 管理:处理 nonce 管理,以确保交易顺序。
交易状态监控:跟踪已提交交易的状态。
SDK 集成:通过我们的配套 JavaScript/TypeScript SDK 轻松与 relayer 交互。
可扩展的架构:轻松添加对新区块链网络的支持。
可配置的网络策略:定义和实施特定于网络的交易处理策略。
指标和可观察性:使用 Prometheus 和 Grafana 监控应用程序性能。
Docker 支持:使用 Docker 部署 relayer,以用于开发和生产环境。
插件:使用 TypeScript 函数扩展 relayer 的功能,实现自定义逻辑。
OpenZeppelin Relayer 通过灵活的基于 JSON 的配置系统支持多个区块链网络。网络在配置文件中定义,允许你配置:
任何兼容 EVM 的网络(以太坊、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 文件。
有关安全问题,请参阅我们的 安全策略。
- 原文链接: docs.openzeppelin.com/re...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!