Machine Payments Protocol (MPP)
MPP(Machine Payments Protocol,机器支付协议)是一个开放标准,用于在请求 HTTP 资源的同一请求中完成对该资源的付款。它扩展了 x402,新增了支付意图(charge、subscription、session)、多通道支持(稳定币、银行卡、Lightning)、生产特性(幂等性、正文摘要绑定、过期机制)以及额外的传输方式(MCP、WebSocket)。该协议处于 IETF 标准跟踪进程中。
MPP 与 x402
MPP 客户端向后兼容:MPP 客户端无需任何更改即可调用现有的 x402 服务器。两种协议的差异之处:
| 方面 | x402 | MPP |
|---|---|---|
| 支付意图 | 按请求收费 | Charge、subscription、session |
| 通道 | 仅区块链 | 稳定币、银行卡、Lightning、自定义 |
| 生产特性 | 有限 | 幂等性、正文摘要绑定、过期机制 |
| 传输方式 | HTTP | HTTP、MCP/JSON-RPC、WebSocket |
| 标头(客户端 ↔ 服务器) | PAYMENT-REQUIRED / PAYMENT-SIGNATURE / PAYMENT-RESPONSE | WWW-Authenticate / Authorization / Payment-Receipt |
| 治理 | 社区协议 | IETF 标准跟踪 |
| 方法编写权 | 由基金会控制 | 无需许可 |
挑战、凭证、收据
MPP 将每个付费请求封装成客户端与资源服务器之间的三步交换:
- 挑战(Challenge)。 服务器返回
402 Payment Required以及一个WWW-Authenticate标头,其中列出所支持的方法、金额和过期时间。 - 凭证(Credential)。 客户端选择一种方法,对支付凭证进行签名,并附带一个携带序列化凭证的
Authorization标头重新提交请求。 - 收据(Receipt)。 服务器验证凭证、结算付款,并在响应中返回一个包含结算引用的
Payment-Receipt标头。
挑战可以通过正文摘要在密码学上绑定到请求正文,因此为某个请求签名的凭证无法在另一个不同的请求上重用。
支付意图
Charge(收费)。 针对单个资源的一次性付款。凭证授权一次精确金额的转账。
Subscription(订阅)。 在单个受限范围凭证下的周期性付款。凭证授权在一个计费周期内重复收费,由通道强制执行续订节奏。
Session(会话)。 使用链下凭单的按量付费。客户端先将资金存入托管一次,然后为每个请求签名低成本的链下凭单。只有净额在链上结算。详见 MPP 会话。
传输方式
MPP 在多种传输方式上定义了相同的挑战 / 凭证 / 收据交换:
- HTTP。 默认方式。标头如上所列。
- MCP / JSON-RPC。 让 MCP 服务器能够对单个工具调用进行变现。AI 客户端在调用工具前签名一份凭证。
- WebSocket。 持久连接,支持带内凭单充值,专为流式会话设计。
Stable 上的 MPP
MPP 并未自带 Stable 支付方法。mppx SDK(wevm/mppx)包含针对 Tempo 和 Stripe 的方法,而 mpp.dev 列出了 Tempo、Stripe、Lightning、Solana、Stellar、Monad 和 RedotPay。目前这两个列表中都没有 Stable。
该标准无需许可,因此你可以编写自己的方法。对于 Stable 上的 USDT0,verify() 钩子是针对 ERC-3009 的签名验证,结算则委托给现有的结算服务:诸如 Semantic Pay 或 Heurist 这样的 x402 facilitator,或 Stable 自有的 Gas 豁免。完整演练请参阅 在 Stable 上构建 MPP 端点。
推荐后续
- 在 Stable 上构建 MPP 端点 — 为 USDT0 编写三个 MPP 自定义方法钩子并结算一笔真实付款。
- MPP 会话 — 使用链下凭单进行微支付流式传输,并一次性净额结算。
- x402 — 阅读 MPP 所泛化的原始 HTTP-402 协议。

