协议
本协调器通过 HTTP 使用 x402 第 2 版。链绑定是 Cosmos exact,由客户端签署 TxRaw。
网络绑定
| x402 版本 | 2 |
|---|---|
| 方案 | exact |
| 网络 | cosmos:gonka-mainnet(CAIP-2) |
| 转账方式 | signed-tx — 客户端签名,协调器广播 |
| 支付流程 | upfront — 先结算再提供。/verify 对该顺序不是必须的。 |
通用协议见 docs.x402.org 和 v2 规范。本页是 Gonka 绑定。
请求头
PAYMENT-REQUIRED | 服务器 → 客户端。Base64 JSON PaymentRequired。出现在 402。 |
|---|---|
PAYMENT-SIGNATURE | 客户端 → 服务器。Base64 JSON PaymentPayload。 |
PAYMENT-RESPONSE | 服务器 → 客户端。Base64 JSON 结算结果。每次尝试后都会发送,无论成败。 |
编码是 UTF-8 JSON 的标准 base64,不是 base64url。CORS 暴露这些支付头,以便浏览器读取。
PaymentRequired
{
"x402Version": 2,
"error": "PAYMENT-SIGNATURE header is required",
"resource": {
"url": "https://example/demo",
"description": "…",
"mimeType": "application/json",
"serviceName": "x402-gonka",
"tags": ["gonka", "x402", "usdc"]
},
"accepts": [ { "scheme": "exact", "network": "cosmos:gonka-mainnet", "amount": "1000", "asset": "ngonka", "payTo": "gonka1…", "maxTimeoutSeconds": 60, "extra": {} } ],
"extensions": {}
}本网络上的 accepts[].extra 包含 name、decimals、assetTransferMethod 和 paymentFlow。
支付载荷
PAYMENT-SIGNATURE 内的对象:
x402Version | 2 |
|---|---|
accepted | 你所满足的 PaymentRequirements。 |
payload.signedTx | Base64 protobuf TxRaw(body、auth info、签名)。 |
payload.signature | 64 字节 secp256k1 签名的 base64(与 TxRaw 中相同)。 |
payload.authorization.from | 付款人 gonka1…。必须与交易签名者一致。 |
payload.authorization.to | 必须等于 accepted.payTo。 |
payload.authorization.amount | 原子单位。交易金额必须 ≥ 此值且 ≥ accepted.amount。 |
payload.authorization.denom | ngonka 或 USDC 合约。 |
payload.authorization.timeoutAt | Unix 秒。若已过期则拒绝。 |
交易形状
GNK
第一条(也是唯一一条)消息:/cosmos.bank.v1beta1.MsgSend,单枚硬币 {denom: "ngonka", amount}。
USDC
第一条消息:/cosmwasm.wasm.v1.MsgExecuteContract。contract 是 USDC CW-20。msg 是 JSON {"transfer":{"recipient":"…","amount":"…"}}。
Auth info
一名签名者,/cosmos.crypto.secp256k1.PubKey,SIGN_MODE_DIRECT(模式 1),手续费 0ngonka,gas 上限通常 120000。SignDoc 为 body_bytes || auth_info_bytes || chain_id || account_number,再做 SHA-256。
verify 检查项
- 版本、方案和网络。
signedTx能解码为受支持的消息。- 收款人、资产和金额符合要求。
- authorization 的
from与签名者地址一致。 - 链上账户编号 / sequence 与已签交易一致。
- 签名对 SignDoc 验证通过。
- 仅
/verify:付款人余额 ≥ 金额。 - 仅
/settle:该TxRaw尚未结算,然后广播并等待出块。
拒绝码见 错误。