eRPC配置指南:YAML/TypeScript配置文件与validate、dump命令完全掌握
【免费下载链接】erpceRPC — fault-tolerant evm rpc proxy项目地址: https://gitcode.com/gh_mirrors/erpc1/erpc
eRPC 是一个容错型 EVM RPC 代理,它的核心就是一份配置文件:你可以用 YAML 或 TypeScript 描述上游节点、网络、缓存与限流策略,然后用validate命令在部署前查错、用dump命令查看引擎实际加载的最终配置。这篇 eRPC 配置指南带你快速上手这两类配置文件和这两个命令。
eRPC 配置文件如何被找到?
eRPC 启动时会按固定顺序自动查找配置文件,找到第一个存在的即使用:
| 优先级 | 文件位置 |
|---|---|
| 1 | 当前目录下的erpc.yaml、erpc.yml、erpc.ts、erpc.js |
| 2 | 根目录/erpc.yaml、/erpc.yml、/erpc.ts、/erpc.js |
| 3 | /root/erpc.yaml等同类文件 |
你也可以用--config指定任意路径,或通过第一个位置参数直接传入(如erpc validate ./config.yaml)。如果什么都没找到,eRPC 会回退到内置的公共 RPC 端点——生产环境建议加上--require-config强制显式配置。
自动发现逻辑在 cmd/erpc/main.go 的getConfig函数中实现。
两种配置格式:YAML 与 TypeScript
YAML(推荐入门):项目自带完整示例 erpc.dist.yaml,涵盖日志级别、JSON-RPC 缓存、限流预算、项目与上游等全部模块,复制后填入 API Key 即可使用。YAML 支持$VAR/${VAR}环境变量展开,密码类字段建议加引号,例如:
redis: addr: "${REDIS_URL}"TypeScript(推荐进阶):erpc.dist.ts 展示了如何用createConfig构造配置。TS 配置的优势是可以用process.env注入密钥、在selectionPolicy.evalFunc里编写自定义路由函数。两个注意事项:
export default必须是文件最后一条语句,否则配置对象会被覆盖丢失;- TS 函数在加载时会被转成
__ts_fn__:fn_N哨兵标记——这正是dump命令的用途。
用 validate 命令做部署前体检
validate会加载配置、检查未知字段(YAML 严格模式,拼错 key 直接报错)、孤儿限流预算、公共端点等静态问题,输出包含errors、warnings、notices、resources四类信息的报告,并以退出码为准:无错误退出 0,有错误退出 1——天然适合接入 CI 流水线:
# JSON 报告,只看错误列表 erpc validate --config ./erpc.yaml --format json | jq .errors # Markdown 报告,适合贴进 PR 评论 erpc validate --config ./erpc.ts --format md注意:validate会静默所有日志,问题都体现在输出里,不用担心 stderr 干扰。校验报告由 erpc/config_analyzer.go 生成。
用 dump 命令查看"真实生效"的配置
配置文件里大量字段省略了默认值,TS 函数也不会原样出现在配置里——dump命令解决的就是"我到底在跑什么"这个疑问。它会:
- 补全所有默认值(
SetDefaults同款逻辑); - 把每个网络的
selectionPolicy填充为引擎实际使用的有效策略; - 将 TS 函数解析回源码形态,让你确认闭包是否被正确识别。
# 默认输出 YAML erpc dump --config ./erpc.ts --format yaml # 输出 JSON,方便做程序化 diff erpc dump --config ./erpc.ts --format json | jq .调试 TypeScript 配置时,先在 dump 输出里看到__ts_fn__:fn_0这样的哨兵,就能确认函数没有被静默丢弃。
环境变量:密钥不要写进配置文件
eRPC 启动时会自动加载当前目录的.env文件,之后 YAML 里的$VAR占位符会被展开。常用变量:
| 变量 | 作用 |
|---|---|
LOG_LEVEL | 运行时覆盖配置中的logLevel,线上排障神器 |
LOG_WRITER=console | 本地开发时切换为人类可读日志 |
INSTANCE_ID | 多副本部署时标识实例,避免共享状态冲突 |
避坑清单
- YAML 拼错字段名 = 启动失败:严格模式拒绝未知字段,是特性不是缺陷,
validate能第一时间抓出; - 含特殊字符(
:、{)的展开值必须加引号,否则 YAML 解析静默出错; --config指定的路径不存在时直接以 1001 退出,不会回退到自动发现;--set覆盖参数目前未实现,想临时改值请改文件或走环境变量;- 退出码约定:
1001表示配置加载或启动失败,1002表示 HTTP/gRPC 服务致命错误,便于脚本判断。
小结
一份erpc.yaml(或erpc.ts)定义全部行为,validate保证它没有拼写和引用错误,dump让你看到最终生效的完整形态——这三步组合起来,就是 eRPC 配置从编写到上线的完整闭环。配置生效后,还能配合监控面板观察每个上游的错误率与请求分布,随时校准你的 failsafe 策略(hedge、retry、timeout 等)。
【免费下载链接】erpceRPC — fault-tolerant evm rpc proxy项目地址: https://gitcode.com/gh_mirrors/erpc1/erpc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考