如何使用 x402 支付访问 Quicknode 终端节点

Quicknode 推出了基于 x402 协议的区块链基础设施访问方式,允许开发者和 AI 代理通过钱包以按需付费的模式访问 130 多个区块链网络。用户可以使用 USDC 进行支付,无需 API 密钥或订阅。文章介绍了 x402 on Quicknode 的工作原理、适用场景,并提供了 JSON-RPC 示例。

概述

Quicknode 的基础设施为超过 130 个区块链网络提供数十亿次的请求支持。通过 Quicknode 上的 x402,任何拥有钱包的客户端都可以通过基于 x402 协议 构建的按请求付费模式访问相同的基础设施。使用你的钱包进行身份验证,跨任何支持的网络进行调用(例如,RPC、REST、gRPC-Web、WebSocket),并使用 Base 上的 USDC 进行支付。无需帐户、API 密钥或订阅。

这为 开发者AI 代理 如何使用区块链基础设施开辟了新的可能性。无需预先配置端点,你只需连接一个钱包,立即开始跨 JSON-RPC、REST、gRPC-Web 和 WebSocket 协议进行调用。

本指南将引导你了解 Quicknode 上的 x402 的工作原理、适用对象以及如何发出你的第一个由 x402 驱动的 RPC 请求。

Alpha 版本

Quicknode 上的 x402 目前处于 alpha 阶段。它专为实验和早期采用而设计。虽然底层基础设施与 Quicknode 平台所使用的生产级系统相同,但 x402 访问层是新的且在不断发展。随着产品的成熟,预计会出现潜在的 API 变更、不断变化的速率限制以及持续的功能改进。

  • 了解 x402 如何支持基于钱包的 Quicknode 端点访问(包括 RPC、REST、gRPC-Web 和 WebSocket)
  • 了解身份验证和支付流程(SIWE、JWT、积分、x402 结算)
  • 运行 JSON-RPC 示例以在 Base Sepolia 上进行你的首次 x402 驱动的调用
  • 探索跨 JSON-RPC、REST、gRPC-Web 和 WebSocket 的多协议示例

Quicknode

使用 x402 支付访问区块链数据

Quicknode

在 YouTube 上观看

/

订阅我们的 YouTube 频道以获取更多视频! 订阅

你将需要什么

  • Node.js(v18 或更高版本)和 npm
  • 对区块链概念的基本熟悉

就是这样。你不需要 Quicknode 帐户、API 密钥,甚至不需要预先存在的钱包。示例脚本会自动处理钱包生成、SIWE 身份验证和测试网 USDC 资金。

为什么选择 Quicknode 上的 x402

x402 增加了一种与现有计划一起使用 Quicknode 基础设施的新方法。它专为那些基于钱包的按需访问比传统帐户设置更合适的用例而设计:

  • 需要在没有人为干预的情况下进行身份验证和支付的 AI 代理和自主机器人。代理只需要一个带有 USDC 的钱包即可开始进行调用。
  • 构建基于代理的工具的开发者,最终用户无需拥有自己的帐户即可与 Quicknode 基础设施交互。
  • 想要偶尔访问多个链上的高质量端点而又不想承诺长期计划的 低使用量开发者
  • 注重隐私的用户,他们更喜欢基于钱包的访问而不是帐户注册。
  • 实验和原型设计,开发者希望快速跨网络进行测试而无需设置开销。

关键区别:现有计划针对具有可预测计费的可持续使用进行了优化。x402 针对按需访问进行了优化,其中每个请求都单独提供资金。

它是如何工作的

Quicknode 上的 x402 遵循扣除信用模型:使用你的钱包进行身份验证,支付 USDC 以获得积分,然后在请求中使用这些积分。当积分用完时,将自动触发另一笔付款。

Quicknode Endpointsx402 FacilitatorQuicknode x402 ProxyClient (Agent or Dev)Quicknode Endpointsx402 FacilitatorQuicknode x402 ProxyClient (Agent or Dev)当积分用完时,返回到步骤 21\. SIWE 身份验证JWT Token(1 小时有效期)2\. 请求(带有 JWT)HTTP 402 需要付款3\. 使用 x402 支付重试(USDC)结算支付已确认转发请求响应响应 + 积分4\. 后续请求(带有 JWT)转发请求(扣除积分)响应响应

分步细分

在这些示例中,你将在自己的辅助逻辑中处理 SIWE 身份验证和 JWT 附加。然后,@x402/fetch 库处理 x402 特定的支付和重试流程,因此你可以继续进行正常的获取调用。尽管如此,以下是幕后发生的事情:

1. 使用 SIWE 进行身份验证

客户端使用他们的钱包签署 以太坊登录 (SIWE) 消息。这证明了钱包地址的所有权,而不会暴露任何私钥。代理返回一个 JWT Token(有效期为一小时),客户端将其包含在后续请求中。

2. 第一个请求返回 402

当你进行第一次调用(或任何积分余额为零的调用)时,代理会响应 HTTP 402 Payment Required。此响应包括遵循 x402 v2 规范 的支付要求,指定要支付多少 USDC 以及在哪个网络上支付。

3. 支付并接收积分

客户端签署 USDC 支付授权 (EIP-712),并使用支付标头重试请求。x402 促进者在链上结算支付,代理为你的帐户记入一个请求包。

4. 消耗积分

从那时起,每个请求都会扣除一个积分。当余额达到零时,下一个请求会触发另一个 402,并且循环重复。代理背后的基础设施是为所有 Quicknode 端点提供支持的相同的生产系统。

支付选项

Quicknode 上的 x402 仅在 Base 上处理付款,并支持两种支付路径:

选项 最适合 定价
Base Sepolia USDC 测试和实验 $0.01 100 积分,每 $1.00 最多 10,000 积分
Base Mainnet USDC 生产使用 $10 1,000,000 积分

这种双重方法使开发者和代理可以在测试环境中与 x402 流程进行交互而无需冒真实资金的风险,然后在准备就绪时无缝过渡到主网。

注意: 即将支持通过 Solana USDC 付款,并且我们计划随着时间的推移根据需求添加对其他支付网络的支持。

通过 x402 支持的网络

一旦你通过 x402 付款,你就可以使用你的积分在 Quicknode 支持的 130 多个区块链网络上进行调用,包括以太坊、Base、Solana、Arbitrum、Polygon、Aptos、Flow 等等。

有关支持链的完整列表,请参阅 Quicknode 的支持链页面

多协议支持

Quicknode 上 x402 最强大的方面之一是它可以跨多个协议工作。无论你是进行标准 JSON-RPC 调用、查询 REST API、通过 gRPC 流式传输数据还是通过 WebSocket 订阅实时事件,都适用相同的基于钱包的身份验证和支付流程。

协议 用例
JSON-RPC 标准 RPC 调用(例如,eth_blockNumbergetBlock
REST HTTP GET 端点(例如,/v1/blocks/by_height
gRPC-Web 用于高性能链的单项调用和服务器端流式传输(例如,GetLatestBlock
WebSocket 实时订阅(例如,eth_subscribeaccountSubscribe

这意味着单个钱包和单个身份验证流程可以让你通过 JSON-RPC 访问 EVM 链,通过 REST 访问 Aptos,通过 gRPC 访问 Flow,以及通过 WebSocket 访问实时以太坊数据。x402 支付层在所有这些协议中都以相同的方式工作。

qn-x402-examples 仓库 包含每个协议的工作脚本。在下一节中,我们将逐步介绍 JSON-RPC 示例,你可以按照自己的节奏探索其他示例。

入门:JSON-RPC 示例

体验 Quicknode 上的 x402 最快的方法是通过 qn-x402-examples 仓库 中的示例脚本。这些脚本会自动处理所有事情:钱包生成、SIWE 身份验证、测试网 USDC 资金和付费 RPC 调用。

我们将介绍 JSON-RPC 示例 (jsonrpc.ts),该示例在 Base Sepolia 上进行 eth_blockNumber 调用,直到积分耗尽,从而显示完整的身份验证和支付周期。

步骤 1:克隆仓库并安装依赖项

git clone https://github.com/quiknode-labs/qn-x402-examples.git
cd qn-x402-examples
npm install

步骤 2:运行 JSON-RPC 示例

npm run start:jsonrpc

就是这样。首次运行时,脚本将:

  1. 生成一个新的钱包 并将私钥保存到 .env(在后续运行中重复使用)
  2. 通过 SIWE 进行身份验证,方法是使用生成的钱包签署消息并将其交换为 JWT Token
  3. 检查 USDC 余额 并在需要时从 /drip 水龙头请求测试网 USDC
  4. 在一个循环中 进行 eth_blockNumber 调用,显示每个请求的信用消耗
  5. 当积分用完时 自动处理 402 支付,签署 USDC 支付并继续
  x402 示例 - 付费 JSON-RPC 请求(SIWE + JWT 身份验证)

============================================================
   生成了一个新的钱包并保存到 .env
   钱包:0x3a97eEe611FedadB8fcFe436c4126cA6438Af34f

   正在使用 SIWE 进行身份验证...
   已通过身份验证为 eip155:84532:0x3a97eee611fedadb8fcfe436c4126ca6438af34f
   Token到期时间:2026-02-10T11:20:28.000Z
   USDC 余额:0 USDC

   USDC 不足(需要 >= 0.005 USDC)
   正在从 x402 水龙头请求 USDC...
   水龙头请求成功:tx 0x2866fd18e94804335c6e7c5c5eca73f2f346a5f87941455a97226d6c93299d92
   正在等待 USDC 余额 >= 0.005 USDC...
   当前余额:0 USDC
   当前余额:1 USDC
   已更新 USDC 余额:1 USDC

============================================================
   检查积分...
   帐户:eip155:84532:0x3a97eee611fedadb8fcfe436c4126ca6438af34f
   积分:0
============================================================

-- JSON-RPC 信用消耗循环 (base-sepolia) --
   模式:独立(最多 1 次支付)
   没有积分 — 首次请求将触发 x402 支付

   支付响应 #1 - 成功 tx:0x73fae815b5aa7d559f...
   10:20:42.171 请求 #1:区块 37475276 | 积分:99 (+99)
   10:20:42.505 请求 #2:区块 37475277 | 积分:98 (-1)
   10:20:42.785 请求 #3:区块 37475277 | 积分:97 (-1)
   10:20:43.083 请求 #4:区块 37475277 | 积分:96 (-1)
   10:20:43.354 请求 #5:区块 37475277 | 积分:95 (-1)
   # ... 继续,直到积分再次耗尽或脚本停止

了解代码

让我们看一下该示例如何工作的关键部分。完整源代码可在 qn-x402-examples 仓库 中找到。

SIWE 身份验证(来自 lib/x402-helpers.ts

authenticate 函数创建一个 SIWE 消息,使用钱包对其进行签名,并将其交换为 JWT:

export async function authenticate(
    walletClient: WalletClient,
    tokenRef: TokenRef
): Promise<string> {
    const siweMessage = new SiweMessage({
        domain: new URL(X402_BASE_URL).host,
        address: walletClient.account!.address,
        statement: SIWX_STATEMENT,
        uri: X402_BASE_URL,
        version: '1',
        chainId: BASE_SEPOLIA_CHAIN_ID,
        nonce: generateNonce(),
        issuedAt: new Date().toISOString(),
    })

    const message = siweMessage.prepareMessage()
    const signature = await walletClient.signMessage({
        account: walletClient.account!,
        message,
    })

    const response = await fetch(X402_AUTH_URL, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ message, signature }),
    })

    const { token, accountId, expiresAt } = await response.json()
    tokenRef.value = token
    return token
}

SIWE 消息包括钱包地址、用于重放保护的随机数以及接受 Quicknode 服务条款的声明。签名的消息在 /auth 端点处交换为 JWT,有效期为一小时。

创建启用 x402 的 Fetch(来自 lib/x402-helpers.ts

createX402Fetch 函数使用 JWT 注入和自动 x402 支付处理功能包装标准 fetch

export function createX402Fetch(
    walletClient: WalletClient,
    tokenRef: TokenRef,
    tracker: PaymentTracker
): typeof globalThis.fetch {
    // 注入 JWT 的基础 fetch
    const authedFetch = async (
        input: RequestInfo | URL,
        init?: RequestInit
    ): Promise<Response> => {
        const headers = new Headers(init?.headers)
        if (tokenRef.value) headers.set('Authorization', `Bearer ${tokenRef.value}`)
        return fetch(input, { ...init, headers })
    }

    // x402 v2 支付处理
    const evmSigner = toClientEvmSigner({
        address: walletClient.account!.address,
        signTypedData: params =>
            walletClient.signTypedData(
                params as Parameters<typeof walletClient.signTypedData>[0]
            ),
    })
    const client = new x402Client().register(
        BASE_SEPOLIA_CAIP2,
        new ExactEvmScheme(evmSigner)
    )
    const x402Fetch = wrapFetchWithPayment(authedFetch, client)

    return x402Fetch
}

这就是 x402 魔法发生的地方。@x402/fetch 中的 wrapFetchWithPayment 函数拦截任何 402 Payment Required 响应,使用 @x402/evm 自动签署 EIP-712 USDC 支付授权,并使用支付标头重试请求。authedFetch 层确保每个请求都包含用于身份验证的 JWT。

进行 JSON-RPC 调用(来自 jsonrpc.ts

通过启用 x402 的获取功能,进行付费 JSON-RPC 调用看起来就像任何标准请求:

const JSONRPC_URL = `${X402_BASE_URL}/${JSONRPC_NETWORK}`

async function jsonRpc(
    x402Fetch: typeof globalThis.fetch,
    method: string,
    params: unknown[] = []
): Promise<unknown> {
    const response = await x402Fetch(JSONRPC_URL, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({
            jsonrpc: '2.0',
            id: Date.now(),
            method,
            params,
        }),
    })

    const data = await response.json()
    if (data.error) throw new Error(data.error.message)
    return data.result
}

// 在主循环中使用
const result = await jsonRpc(x402Fetch, 'eth_blockNumber')
const blockNumber = BigInt(result as string)

应用程序代码不需要了解支付信息。使用 URL 格式 ${X402_BASE_URL}/${network} 通过代理定位不同的链。

探索其他请求类型

运行 JSON-RPC 示例后,探索其他脚本以查看 x402 在不同协议和链中的实际应用。

REST API

rest.ts 脚本演示了在 Aptos Mainnet 上使用 REST API 端点的 x402。它向诸如 /v1/(账本信息)、/v1/blocks/by_height/{h}/v1/accounts/0x1 之类的端点发出标准 HTTP GET 请求。与 JSON-RPC 相同,x402 获取包装器处理 REST 调用的身份验证和支付。

npm run start:rest

gRPC-Web

grpc.ts 脚本使用 @connectrpc/connect-web 展示了 Flow Mainnet 上的一元调用(PingGetLatestBlock)和服务器端流式传输(SubscribeBlocksFromLatest)。x402 获取包装器直接与 Connect-RPC 传输集成,因此 gRPC 调用与任何其他请求都经过相同的支付流程。

npm run start:grpc

WebSocket:以太坊实时订阅

websocket.ts 脚本通过 eth_subscribe 订阅 Base Mainnet 上的 newHeads,从而接收到实时生成的区块头。它使用非阻塞信用轮询器来跟踪剩余信用,而不会中断数据流。当信用耗尽时,连接会处理 4402 关闭代码,并可以自动重新进行身份验证。

npm run start:ws

有关每个脚本的完整详细信息,包括配置选项和网络覆盖,请参阅 README

Quicknode 的代理就绪基础设施

x402 是 Quicknode 为使 AI 代理和 LLM 驱动的工具可以访问区块链基础设施而进行更广泛投资的一部分。如果你正在构建基于代理的应用程序,则这些资源值得探索:

Quicknode MCP(模型上下文协议)

Quicknode MCP 集成使 Claude 和 Cursor 等 AI 助手可以通过自然语言管理 Quicknode 基础设施。通过对话命令而不是仪表板导航来创建端点、监视使用情况和配置安全设置。有关 Quicknode MCP 的更多详细信息,请参阅 使用 AI 和 MCP 管理你的区块链基础设施 指南。

LLM 优化文档

Quicknode 在平台的多个部分发布 llms.txt 索引。这些索引可帮助 LLM 发现不同类型 Quicknode 内容的正确来源,并帮助开发者更有效地使用 AI 进行构建:

用于区块链数据的 MCP 服务器

Quicknode 为 EVM 链Solana 提供了示例 MCP 服务器实现。这些服务器使 LLM 可以通过标准化工具界面直接访问链上数据(检查余额、分析合约、监控 gas 价格)。

这些工具共同涵盖了代理堆栈的不同层:x402 处理支付和访问,MCP 处理基础设施管理,MCP 服务器处理数据检索,llms.txt 处理文档发现。

下一步

既然你已经看到了 Quicknode 上的 x402 的实际应用,那么这里有一些进一步发展的方向:

迁移到主网

在 Base Sepolia 上测试完流程后,切换到主网 USDC 以进行生产使用。相同的身份验证和支付流程适用,只是使用真实资金和更高的吞吐量。

构建代理工作流程

将 x402 集成到你的 AI 代理或机器人中。@x402/fetch 库自动处理支付流程,因此可以使用最少的更改来调整任何使用 fetch 的应用程序。由于整个流程都是基于 HTTP 的,因此任何可以签署消息并发出 HTTP 请求的客户端都可以使用它。

深入研究 x402

有关 x402 协议本身的技术性深入探讨,请查看:

结论

Quicknode 上的 x402 开辟了一种使用区块链基础设施的新方法,该方法专为希望通过基于钱包的身份验证进行按需访问的代理、机器人和开发者而设计。使用钱包进行身份验证,使用 USDC 付款,并使用 JSON-RPC、REST、gRPC-Web 或 WebSocket 访问 130 多个网络。无需注册。

这是一个 alpha 版本,我们正在根据开发者和代理的反馈进行积极迭代。如果你有任何问题、想法或遇到问题,请通过我们的 Discord 服务器与我们联系,或使用下面的表格提供反馈。通过在 X 和我们的 Telegram 公告频道 上关注我们,来了解最新信息。

我们 ❤️ 反馈!

如果你有任何反馈或对新主题的请求,请 告诉我们。我们很乐意听取你的意见。

  • 原文链接: quicknode.com/guides/x40...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
QuickNode
QuickNode
江湖只有他的大名,没有他的介绍。