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_blockNumber、eth_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。