关于 x402 Ethereum RPC
x402 Ethereum RPC 是用于向 Ethereum 节点出售 JSON-RPC 访问权的 Cloudflare Worker 模板,按次以 Base 上的 USDC 收费。它按请求工作量定价,并检查请求和节点错误,避免无法提供答案时收费。
主要功能
- 01按方法和请求收费
- 02根据请求工作量调整价格
- 03付款前拒绝无效请求
- 04将节点拒绝转换为不收费错误
- 05通过公共 RPC 转发原始交易
适用场景
- 01提供 Ethereum 节点的付费访问
- 02按工作量为高成本 RPC 方法定价
- 03在主节点后设置付费备用 RPC
- 04节点无法响应时避免收费
MCP 相关
网关包含 MCP 服务,供 Agent 将 RPC 服务作为工具使用。README 未说明 MCP 端点或配置方式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
x402-rpc-gateway
一个 Cloudflare Worker,可通过 x402 按次出售对自有 Ethereum 节点的 JSON-RPC 访问权限。无需账户、API 密钥或账单:调用方在 Base 上签署 USDC 授权,即可在同一次交互中获得响应。
正在 402rpc.com 上运行。
为什么要做这个项目
出售 RPC 访问权限通常意味着还没处理第一个请求,就得先搭建注册、计费、密钥轮换和速率套餐。x402 免去了这些工作——但只按次收费的简单网关会带来两个新问题,本模板解决了这两个问题。
调用方绝不能为无法提供的响应付费。 每个请求都会在付费墙之前进行检查。被屏蔽的命名空间、低于历史区块下限的区块、范围过宽的日志请求——这些都会返回 HTTP 400;对于 400 或更高的响应,x402 不会结算。节点故障也会出于同样的原因返回 502。
统一定价会造成亏损。 eth_getLogs 跨越一万个区块的成本,是 eth_blockNumber 的数百倍。这里的价格会根据方法的实际开销调整。
节点自身的拒绝会以 HTTP 200 返回。 节点表示“该区块没有可用状态”或“单次响应中的日志过多”时,会返回状态码为 200 的 JSON-RPC 错误;而 x402 会对 200 响应进行结算。如果不加处理,客户就会为你无法提供的结果付费。本模板会将这类错误转换为 4xx,避免结算。真正的答案类错误,例如 execution reverted,仍然会收费。
你将获得
- 可配置的按方法定价,并设有上限,避免批量请求造成意外费用
- 在收费前拒绝请求的策略层,并提供调用方可据此采取行动的原因
- 通过公共 RPC 中继原始交易,而非使用你自己的节点——请参阅“隐私”
- 发现元数据,方便 Agent 无需人工介入即可找到并使用服务
- 通过
Accept标头为人类提供落地页,为机器提供 JSON - MCP 服务,任何 Agent 都能将其用作工具
- 一个回退示例:只需一行,即可将网关添加为主服务之后的付费备用服务
设置
npm install
cp wrangler.jsonc.example wrangler.jsonc # edit the vars
npx wrangler deploy
至少需要设置 PAY_TO_ADDRESS、ORIGIN_URL 和 PUBLIC_URL。其他所有配置都有可用的默认值。
对于主网,你需要 Coinbase CDP 凭据——公共 x402.org facilitator 仅服务于测试网:
npx wrangler secret put CDP_API_KEY_ID
npx wrangler secret put CDP_API_KEY_SECRET
没有这些凭据时,Worker 会有意返回 503,而不会发出无法结算的付款挑战。
文档不会告诉你的三件事
facilitator 设有未公开的最低金额。 约 $0.0002 的金额会被拒绝,并返回 amount_too_low;$0.001 则可以通过。因此,差异化定价只能从约十分之一美分起向上设置。
Bazaar 只索引 x402 version 2。 我检查的 20 个资源全部运行 v2,没有一个运行 v1。如果你基于 v1 包(x402-hono、x402-fetch——最后发布于 2026 年 4 月)构建,服务虽然可以运行,但在 Agent 实际查询的发现层中不可见。本模板全程使用 v2。
将 resource 固定为你的公共 URL。 如果让中间件从请求中推导该值,它会把 Worker 的内部主机名——其中包含你的 Cloudflare 账户名称——放入每个付款挑战中,就在收款地址旁边。
验证你自己的承诺
本模板写入付款条款和落地页的所有内容,都是对付费用户作出的承诺。请根据节点的实际行为进行测试,而不是根据你认为它会如何工作来判断。以下三点曾让我们吃过亏:
- “从区块 N 开始提供历史数据”——检查区块 N 和 N-1。
- “历史状态调用会被拒绝,而不会收费”——节点自身的拒绝会以 HTTP 200 返回,因此未经转换就会结算。请参阅
policy.ts中的nodeRefusal。 - “
eth_getLogs最多支持 N 个区块”——你的客户端对单次响应中的日志数量也有上限(Nethermind 默认值为 20,000),远在区块数限制生效之前就会触发。
提高曝光度
在 Bazaar 中,排名由实际使用情况决定——l30DaysTotalCalls 和
l30DaysUniquePayers——而不是由描述写得有多好决定。在花一下午斟酌文案之前,值得了解这一点。
还有一点也值得了解:截至 2026 年 8 月,整个可见的 Bazaar 在三十天内共处理了大约 1,200 次付费调用,分布于八十个服务中。其中最繁忙的 Ethereum RPC 处理了十四次。请为市场将来的样子构建,而不是为它现在的样子构建。
无论如何,这个模板会为你提供:一个 bazaar 发现扩展,让你能被索引;一个 iconUrl;以及在 Base、Polygon 和 Arbitrum 上接受付款的能力,让更多钱包可以访问你。它刻意不做的一件事,是虚增你自己的调用次数——那只会让你用自己的钱挤进一个目前还没人看的榜单。
保护你的源站
将 ORIGIN_TOKEN 设为密钥,并让你的源站要求提供匹配的
X-Origin-Token 请求头。没有它,任何知道你源站主机名的人都能免费使用你的节点,付费墙也就形同虚设。最简参考代理位于
examples/origin-proxy.py。
隐私
收款地址必然是公开的:它出现在每个付款挑战中。你的节点 IP 也是公开的,因为它参与了点对点网络。你需要保护的是两者之间的关联。
有人通过你的网关提交交易并观察哪个 IP 最先广播交易,就能知道你的服务实际运行在哪里。设置 RELAY_URLS,通过公共端点发送原始交易,这条踪迹就会消失。其他所有方法都只返回答案,不会泄露任何信息。
客户端用法
任何 x402 客户端都会自动付款并重试:
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
const x402 = new x402Client().register("eip155:8453", new ExactEvmScheme(account));
const fetchWithPay = wrapFetchWithPayment(fetch, x402);
await fetchWithPay("https://your-gateway/rpc", { method: "POST", body });
将其作为你自己的节点之后的付费备用方案——参见 examples/fallback.mjs:
transport: fallback([
http(YOUR_OWN_RPC),
http("https://your-gateway/rpc", { fetchFn: fetchWithPay }),
], { retryCount: 0 })
从不使用的备用方案不花一分钱。这是订阅服务无法提供的特性,也是运行这类服务最有力的理由。
许可证
MIT。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。