fullnode-proxy

Blockchain JSON-RPC Proxy

让全节点流量更稳、更可控。

fullnode-proxy 是一个用 Go 编写的区块链全节点 JSON-RPC 代理服务,优先路由到健康的自建节点,并在节点异常、停滞或落后时自动摘除。

$ curl /ethereum/<api-key>
{ "method": "eth_blockNumber" }

route self/local-1
state healthy
latency 42ms

生产友好的代理层

HTTP 与 WebSocket 共用路径风格,PostgreSQL 保存低频配置,Prometheus 暴露运行指标,管理页面用于日常运维。

HTTP/WSJSON-RPC 统一入口
5s默认动态配置 reload
Health区块高度与同步状态检查
Fallback支持商用 RPC 兜底

核心能力

围绕全节点稳定性、可观测性和低成本兜底设计。

健康感知路由

定期检查 eth_blockNumbereth_syncing,按健康状态、优先级和权重选择上游。

动态配置

节点和 API Key 写入 PostgreSQL,服务定时 reload,管理 API 和页面修改后立即生效。

商用服务商兜底

支持 HTTPS 上游、自定义 Header、超时配置和 fallback-only,用于自建节点不可用时接管流量。

WebSocket 桥接

为 WebSocket 请求选择健康上游,并将 HTTP/HTTPS 地址转换为 WS/WSS 后双向转发消息。

管理页面

查看节点状态、最新高度、延迟、连续成功/失败次数,并完成新增、禁用、删除和权重调整。

Prometheus 指标

暴露请求量、延迟、上游健康状态、节点高度和链级最佳观测高度,方便接入监控告警。

快速开始

一个 Go 二进制配合 PostgreSQL,即可运行全节点代理和内置管理页面。

1

启动数据库

docker compose -f deploy/postgres.compose.yaml up -d

2

准备配置

cp config.example.toml config.toml

3

运行服务

go run . -config config.toml

4

接入流量

在管理页面新增 upstream 和 API Key,然后通过 /:chain/:apiKey 调用 JSON-RPC。