OpenZeppelin Relayer - OpenZeppelin 文档

本文档介绍了 OpenZeppelin Relayer,一个为 dApp 提供与 EVM 和非 EVM 网络交互的基础设施服务。它支持多链交互、交易转发、签名、费用估算、Gasless 交易等功能,并提供了 SDK 集成、可扩展架构和配置化的网络策略。文档还包括了技术概述、项目结构、入门指南、配置说明、部署注意事项以及支持和许可信息。

OpenZeppelin Relayer

概述

OpenZeppelin Relayer 是一种服务,提供基础设施以将交易中继到 EVM 和非 EVM 网络。它旨在用作需要与这些网络交互的 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 版本,版本 1.86 或更高版本

  • 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>- redis-storage: 使用 Redis 进行存储<br> <br>- network-configuration-config-file: 通过配置文件使用自定义网络配置<br> <br>- network-configuration-json-file: 通过 JSON 文件使用自定义网络配置<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 密钥和连接字符串

基于 API 的配置: - 通过 REST API 进行运行时配置管理 - 配置更改无需重启服务 - 完整的 relayer、签名者和通知的 CRUD 操作

这两种方法可以一起使用。 基于文件的配置在启动时加载,而 API 更改提供运行时灵活性。 对环境变量(.env)的更改始终需要重启容器。<br> 一起使用时,API 更改不会同步到基于文件的配置。 使用持久存储模式时,基于文件的配置仅加载一次。<br> 有关使用预配置文件的快速设置示例,请参阅我们的 GitHub 存储库中的 examples directory

有关全面的配置详细信息,包括:

  • 环境变量及其设置

  • 主配置文件结构

  • 签名者配置(本地、vault、云 KMS 等)

  • 通知设置

  • Relayer 策略和网络设置

  • 插件配置

  • 完整的配置示例

请参阅专门的 配置指南

重要注意事项

部署注意事项

OpenZeppelin Relayer 旨在用作后端服务,不应直接暴露于公共互联网。 为了保护服务免受未经授权的访问,请将其部署在你自己的安全后端基础设施(例如反向代理或防火墙)之后,并将访问权限限制为仅受信任的内部组件。 直接暴露可能会增加被利用和安全漏洞的风险。

支持

如需支持或咨询,请通过 Telegram 与我们联系。

许可证

本项目根据 GNU Affero General Public License v3.0 获得许可 - 有关详细信息,请参阅 LICENSE 文件。

安全

有关安全问题,请参阅我们的 安全策略

快速入门 →

  • 原文链接: docs.openzeppelin.com/re...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

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