OpenZeppelin Relayer - OpenZeppelin 文档

本文介绍了OpenZeppelin Relayer,一个用于向EVM和非EVM网络中继交易的基础设施服务。主要功能包括多链支持、交易中继、安全签名、费用估算、Gasless交易、Nonce管理、状态监控、SDK集成、可扩展架构、网络策略配置、指标监控、Docker支持和插件扩展。支持包括以太坊、Solana、Stellar在内的多种网络,通过灵活的JSON配置系统进行管理。

OpenZeppelin Relayer

概述

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

本地安装

  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 文件。

安全

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

快速入门 →

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

0 条评论

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