Skip to main content
本指南演示如何使用 x402 支付和 Monad 的 facilitator 设置可付费的端点。它可在 Monad 测试网/主网上运行。

什么是 x402?

x402 是让 HTTP 402 “Payment Required” 状态码重新焕发生机,成为一个用于互联网原生微支付的极简协议。 x402 不再需要订阅或要求账户的付费墙,而是让任何 HTTP 端点即刻可付费:
  1. 客户端请求一个资源
  2. 服务器以 402 响应,并附带一个小的 JSON 支付要求
  3. 客户端签署一个支付授权并重新发送请求
  4. 服务器验证并提供内容

超越传统限制

x402 是为现代互联网经济而设计,解决了传统系统的关键限制:
  • 降低手续费和摩擦: 无需中介、高额手续费或手动设置的直接链上支付。
  • 微支付与基于用量的计费: 按调用或功能收费,简单可编程的按用付费流程。
  • 机器对机器交易: 让 AI 代理自主付费和访问服务,无需密钥或人类介入。

为什么在 Monad 上使用 x402?

Monad 是一个完全兼容 EVM 的 Layer 1,具有:
  • 10,000 TPS
  • 约 0.3 秒的出块时间
  • 单槽最终性
  • 并行执行
  • 极低的手续费
这些特性使 Monad 成为真正的微支付和代理间商务的理想环境。支付以极低成本立即结算,并避免 mempool 拥堵,非常适合大量 AI 代理按 API 调用付费的场景。

核心流程(直接支付)

Facilitator 流程(生产环境推荐)

facilitator 服务是可选的,但在生产环境中推荐使用。Facilitator 可以批量处理交易、承担 gas 费、处理退款,并简化客户端逻辑。

使用 Monad x402 facilitator 构建基于 x402 的应用

前置条件

  • Node.js 18+
  • 一个 EVM 钱包
  • 访问 Monad 测试网资金(下方的 USDC 测试代币)
Monad Facilitator 仅支持 x402 v2 及以上版本。迁移指南说明了差异:https://docs.x402.org/guides/migration-v1-to-v2
您可以使用 Circle 的水龙头为 Monad 测试网获取 USDC 代币:
  1. 访问 https://faucet.circle.com
  2. 选择 USDC 作为代币
  3. 从 Network 下拉菜单中选择 Monad Testnet
  4. 输入您的钱包地址
  5. 点击 Send 1 USDC
限制: 每对(稳定币,测试网)每 2 小时一次请求circle_faucet您还需要测试网 MON 代币用于 gas 费。请从 Monad 水龙头 获取。

步骤 1:初始化一个 Next.js 应用

创建一个新的 Next.js 项目:
提示时选择以下选项:
  • ✅ TypeScript
  • ✅ ESLint
  • ✅ Tailwind CSS
  • src/ 目录
  • ✅ App Router
  • ✅ 自定义默认导入别名:@/*(默认)
进入您的项目:
安装 x402 相关包:
使用 @x402/evm >= 2.22.0。它自带内置的 Monad 主网 USDC 配置,具有正确的 EIP-712 域名,并引用了正确的 upto 代理。详情参见支持的支付方案
为您的环境变量创建 .env.local 文件:

步骤 2:创建 payTo 地址

payTo 地址用于接收支付并从后端与区块链交互。 复制钱包地址并将其作为 PAY_TO_ADDRESS 添加到您的 .env.local 文件中

步骤 3:创建服务端可付费端点

src/app/api/premium/route.ts

步骤 4:客户端设置(消费付费端点)

以下是使用 Next.js 应用消费付费端点的示例,然而该端点也可以通过代理脚本消费。
src/app/page.tsx

运行您的 x402 应用

现在您已经准备好测试您的 x402 支付流程了:
  1. 启动开发服务器:
  2. 在浏览器中打开 http://localhost:3000
  3. 点击”Pay & Unlock Content”
  4. 连接您的钱包
  5. 批准 USDC 支付
  6. 立即看到内容解锁!

Facilitator API

对于希望使用基本 Facilitator API 的开发者,以下是支持的端点及示例。 Facilitator URL:https://x402-facilitator.molandak.org 网络支持:主网(eip155:143,USDC 0x754704Bc059F8C67012fEd69BC8A327a5aafb603)和测试网(eip155:10143,USDC 0x534b2f3A21130d7a60830c2Df862319e593943A3)。 @x402/evm >= 2.22.0 上,主网 USDC 从 SDK 的内置资产表中解析。测试网没有内置条目,需要上面快速入门中所示的自定义 money parser。

支持的支付方案

Monad facilitator 通过 GET /supported 公布两种 x402 v2 方案: 对于 Monad 上的 USDC,按照 x402 规范推荐使用 exact 方案。Upto 需要位于 0x4020A4f3b7b90ccA423B9fabCc0CE57C6C240002 的规范 x402UptoPermit2Proxy(参见规范合约),以及由 facilitator 公布的 extra.facilitatorAddress,客户端必须将其绑定到 Permit2 witness 中。
对于 upto 方案,请使用 @x402/evm >= 2.12.0(推荐 >= 2.22.0)。 2.9.0–2.11.0 版本包含 upto 模块,但引用的代理地址(0x402039b3d6E6BEC5A02c2C9fd937ac17A6940002)并未部署在 Monad 上。支付将在结算时失败,且没有明确的错误。正确的地址(0x4020A4f3b7b90ccA423B9fabCc0CE57C6C240002)最早出现在 2.12.0 中,2.22.0 引用相同的代理,并增加了带有正确 EIP-712 域名的内置 Monad 主网 USDC 配置。如果您将来升级到更新的版本,请在部署到生产环境之前确认它引用了相同的代理地址。

可能的 HTTP 状态码

除了标准的 200 / 4xx / 5xx 代码外,facilitator 还可能返回:
  • 412 PRECONDITION_FAILED —— 当 Permit2 支付因用户对代理合约的 Permit2 授权额度不足而无法进行时返回(PERMIT2_ALLOWANCE_REQUIRED)。客户端必须通过 Permit2 授权代理并重试。这与 400(请求体格式错误)和 402(资源服务器的支付要求响应)不同。

GET /supported

返回支持的网络、方案和签名者地址。

POST /verify

验证支付签名。

POST /settle

在链上执行支付。Facilitator 支付 gas 费。

下一步做什么?

您已成功在 Monad 上构建了一个启用 x402 支付的应用!以下是一些扩展您实现的想法:
  • 添加更多可付费端点 - 为不同的内容或 API 调用创建不同的价格层
  • 构建 AI 代理集成 - 使自主代理能够为访问您的 API 付费

资源

需要帮助?

如果您遇到问题或有疑问,请加入 Monad 开发者 Discord 祝您构建愉快!