接入30+主流RPC供应商:eRPC上游Provider配置完整实战
【免费下载链接】erpceRPC — fault-tolerant evm rpc proxy项目地址: https://gitcode.com/gh_mirrors/erpc1/erpc
如果你正在用 eRPC 搭建容错 RPC 代理,那么上游 Provider 配置一定是上手的第一站。eRPC 内置了 Alchemy、Infura、QuickNode 等 23 个主流 RPC 供应商集成插件,只需一行 API Key 就能自动覆盖该供应商支持的所有 EVM 链,配合 4000+ 个公共免费端点,一条配置就能把多个供应商统一到一个端点后面,自动完成故障转移、重试与负载均衡。
本文带你从零完成 eRPC 上游 Provider 配置:一行接入、字段精讲、链发现机制、高级覆盖调优与常见坑位。
为什么用 Provider 而不是逐个写上游?
传统做法是"每个供应商 × 每条链"各写一条 upstream 配置:3 个供应商 × 10 条链就是 30 条,而且每条链的端点 URL 都要手动查、手动填。
eRPC 的Provider 机制把这件事压缩成一行:
声明一个 provider → eRPC 在网络首次被请求时惰性生成该供应商支持的所有 upstream,并自动完成端点拼装、环境变量展开、供应商专属错误归一化。
没有配置任何 provider 或 upstream 时,eRPC 也会自动注入repository(公共端点目录)+envio两个零成本默认 provider,开箱即用。
第一步:用 URL 简写一行接入供应商
在upstreams里直接写供应商方案名的 URL,eRPC 会在加载配置时自动把它转换为ProviderConfig。以仓库自带的 erpc.dist.yaml 为例:
projects: - id: main upstreams: - endpoint: alchemy://XXXX_YOUR_ALCHEMY_API_KEY_HERE_XXXX - endpoint: infura://${YOUR_INFURA_API_KEY} - endpoint: chainstack://YOUR_CHAINSTACK_API_KEY - endpoint: tenderly://YOUR_TENDERLY_API_KEY常见简写形式(完整对照见文档站 Providers 页):
| 简写 | 含义 |
|---|---|
alchemy://<key> | 自动解析出apiKey,覆盖 Alchemy 全部支持链 |
quicknode://<key>?tagIds=1,2 | 附加端点分组过滤 |
chainstack://<key>?region=us-east-1 | 查询参数原样透传 |
envio://rpc.hypersync.xyz | 公共只读端点,仅放行 14 个读方法 |
支持简写的供应商共 20+ 个,注册表见thirdparty/vendors_registry.go,每个供应商一个插件文件(thirdparty/alchemy.go、thirdparty/quicknode.go、thirdparty/drpc.go等)。
内置 23 家供应商速览
按"链发现策略"分组,帮你选型 👇
| 发现策略 | 供应商 | 冷启动表现 |
|---|---|---|
| 代码内静态链表 | ankr、blastapi、blockdaemon、blockpi、dwellir、etherspot、infura、llama、onfinality | 零 I/O,冷启动即可用 |
| 远程目录 + 静态兜底 | alchemy(134 链兜底)、drpc(150 链兜底) | 首请求不阻塞,后台刷新 |
| 纯远程目录 | conduit、superchain、tenderly、quicknode、chainstack、repository | 冷启动返回ErrRemoteCacheCold,指数退避重试 |
实时eth_chainId探针 | envio、erpc、pimlico、routemesh、thirdweb | 首次探测约 10 秒超时窗口 |
选型建议:对冷启动延迟敏感的场景,优先选静态兜底组,再搭配一个远程目录供应商做补充(这是生产环境的常见组合)。
第二步:用providers声明式配置(进阶)
需要精细控制时,改用providers[]显式声明。核心字段(定义见common/config.go):
projects: - id: main providers: - id: alchemy vendor: alchemy # 必须是 23 个内置供应商名之一 settings: apiKey: ${ALCHEMY_KEY} onlyNetworks: [evm:1, evm:42161, evm:8453, evm:137] # 只跑这 4 条链 upstreamIdTemplate: "<PROVIDER>-<EVM_CHAIN_ID>" overrides: "evm:42161": rateLimitBudget: alchemy-global evm: getLogsAutoSplittingRangeThreshold: 1000字段速查:
vendor:必填,写错会直接启动失败并列出支持的供应商名单(见thirdparty/providers_registry.go)。settings:供应商自定义参数(apiKey、rootDomain、clientId 等),序列化时自动脱敏。onlyNetworks/ignoreNetworks:允许/拒绝名单,两者互斥;onlyNetworks设置后供应商自身的链探测会被跳过。overrides:按网络通配符(支持*、?、|、&、!)给自动生成的 upstream 注入基础配置,如限流预算、失败重试策略、方法过滤。upstreamIdTemplate:占位符<VENDOR>/<PROVIDER>/<NETWORK>/<EVM_CHAIN_ID>,用于生成可读的 upstream 名称。
让生成的上游更稳:限流与分数调权
多供应商混跑时,两个技巧值得配上:
- 限流预算隔离:给每个 provider 的
overrides挂独立的rateLimitBudget,在顶层rateLimiters.budgets中设置每秒/每小时上限,防止某个供应商吃光配额(示例见 erpc.dist.yaml 中的global-tenderly、global-quicknode预算)。 - 评分降权:用
routing.scoreMultipliers.overall给"主力"和"填量"供应商分层。例如 Alchemy 主力、dRPC/Envio 填量时,把填量供应商设为 0.2~0.3,延迟敏感方法自动优先走快节点,慢方法才降级使用。
配合失败保障(retry / hedge / timeout)后,即使某供应商整体宕机,请求也会自动漂移到健康上游:
验证与压测:上线前必做两步
① CLI 校验 + 展开默认值(定义见cmd/erpc/initflags.go):
erpc validate erpc.yaml # 检查配置错误、警告 erpc dump erpc.yaml # 输出填充完默认值后的最终配置② 流量模拟器压测:仓库自带erpc-simulator(源码在cmd/erpc-simulator/、internal/simulator/),可模拟上游故障、限流、区块延迟等场景,验证你的 provider 组合在故障下的表现:
5 个高频坑位(生产环境真实总结)
onlyNetworks与ignoreNetworks不能同时配,validation 会直接报错。overrides通配符不要混用:"*"和更具体的模式同 map 共存时,Go map 迭代顺序不确定,重启后结果可能不同——尽量用精确的evm:<chainId>键。- QuickNode 多个端点分组必须用不同 apiKey:端点快照缓存键只按 apiKey,共享 key 的分组会互相污染。
- 纯远程目录供应商冷启动有延迟:conduit、tenderly、quicknode 等首次请求可能短暂返回
ErrNetworkInitializing,可搭配静态兜底供应商缓解。 providers: []不能"禁用"默认注入:只要 upstream 和 provider 都为空,repository+envio默认 provider 仍会生效。
观察每个上游:Grafana 一把梭
所有 upstream 级指标都带vendor标签(来自供应商注册名或unknown-<域名>),核心三个:
| 指标 | 类型 | 用途 |
|---|---|---|
erpc_upstream_request_total | counter | 各供应商请求量 |
erpc_upstream_request_duration_seconds | histogram | 各供应商延迟分布 |
erpc_upstream_request_errors_total | counter | 各供应商错误率 |
仓库monitoring/grafana/目录内置了现成的 Dashboard 与告警规则,直接拷走即可看到每个上游供应商的实时吞吐、错误与延迟,方便及时发现"某家供应商在特定链上质量劣化"。
小结
- 一行接入:
alchemy://KEY这类 URL 简写适合大多数场景,等价于带"*"override 的完整 provider 声明。 - 声明式控制:需要链过滤、按链覆盖、限流调权时用
providers[]。 - 按策略选型:冷启动敏感选静态兜底供应商,覆盖面选远程目录供应商。
- 先验证后上线:
erpc validate+erpc dump+ 模拟器压测,三步走完再进生产。
掌握 eRPC 上游 Provider 配置后,你可以轻松把 30+ 主流 RPC 供应商编排成一个高可用端点——剩下的故障转移、重试、缓存,交给 eRPC 就好 🚀
【免费下载链接】erpceRPC — fault-tolerant evm rpc proxy项目地址: https://gitcode.com/gh_mirrors/erpc1/erpc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考