OpenZeppelin Relayer - OpenZeppelin 文档

OpenZeppelin Relayer 是一个为EVM和非EVM网络提供交易中继基础设施的服务。它支持多链交互、交易签名、费用估算、Gasless交易等功能。可以通过SDK集成,并支持Docker部署和插件扩展,允许开发者构建自定义逻辑。支持EVM、Solana, Stellar等多种区块链网络。

OpenZeppelin Relayer

概述

此软件处于 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 配置。

本地安装

  1. 克隆存储库:
git clone https://github.com/openzeppelin/openzeppelin-relayer
cd openzeppelin-relayer
  1. 验证你是否已安装 sodium 库。 如果没有,请按照以下说明操作:
  1. 安装依赖项:
cargo build

运行 Relayer

选项 1:本地运行

cargo run
在执行命令之前,请确保 .envconfig.json 文件已按照配置参考部分中的详细说明进行配置。

选项 2:使用 Docker 运行

Relayer 可以使用相应的 Dockerfile(Dockerfile.developmentDockerfile.production)作为开发或生产容器运行。

步骤 1:配置环境
  • 编辑存储库根目录下的 .env 以调整环境变量

  • 相应的 .env 文件将在镜像构建期间包含在内

步骤 2:构建镜像

你可以使用 Docker Compose (v2) 进行构建。

## 默认构建
docker compose build

## 或者,对于更精简的镜像(并使用 Dockerfile.production)
DOCKERFILE=Dockerfile.production docker compose build
步骤 3:运行容器

使用 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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
OpenZeppelin
OpenZeppelin
江湖只有他的大名,没有他的介绍。