x402 Protocol Guide
x402は、長年休眠状態だったHTTP 402「Payment Required」ステータスコードを活用し、ブロックチェーンベースの直接決済をHTTP上で実現するオープンなインターネットネイティブ決済標準です。
決済フロー
6ステップで完結する決済ライフサイクル
1
HTTPリクエスト
クライアントブラウザまたはAIエージェントがAPIリクエストを送信
2
402 Payment Required
サーバーサーバーがPAYMENT-REQUIREDヘッダーで価格・通貨・ネットワーク・受取アドレスを返却
3
決済ペイロード生成
クライアントクライアントがEIP-3009署名付き決済ペイロードを生成し、X-PAYMENTヘッダーで再送信
4
決済検証
ファシリテーターファシリテーターが署名・金額・アドレス・残高を検証(約100ms)
5
オンチェーン決済
ブロックチェーンファシリテーターがトランザクションを送信(Baseで約2秒のファイナリティ)
6
リソース配信
サーバーサーバーが200 OKとPAYMENT-RESPONSEヘッダー(トランザクション確認)を返却
HTTPヘッダー仕様
x402プロトコルで使用される3つの主要ヘッダー
PAYMENT-REQUIREDStep 2サーバーが返す402レスポンスに含まれる。スキーム、ネットワーク、金額、受取アドレス、リソース情報をBase64エンコードしたJSON。
{
"x402Version": 1,
"accepts": [{
"scheme": "exact",
"network": "base-sepolia",
"maxAmountRequired": "1000",
"resource": "https://api.example.com/data",
"description": "API access fee",
"mimeType": "application/json",
"payTo": "0x1234...abcd",
"extra": {
"name": "USDC",
"version": "2"
}
}]
}X-PAYMENTStep 3クライアントが再送信時に付与。x402バージョン、スキーム、ネットワーク、EIP-3009認可情報(署名、from/toアドレス、金額、有効期限、nonce)を含む。
{
"x402Version": 1,
"scheme": "exact",
"network": "base-sepolia",
"payload": {
"signature": "0xabc1234...",
"authorization": {
"from": "0xBuyer...",
"to": "0xSeller...",
"value": "1000",
"validAfter": "0",
"validBefore": "1700000000",
"nonce": "0x..."
}
}
}PAYMENT-RESPONSEStep 6サーバーが成功時に返却。決済ステータスとトランザクションハッシュを含む。
{
"x402Version": 1,
"scheme": "exact",
"network": "base-sepolia",
"payload": {
"success": true,
"transactionHash": "0xtxhash..."
}
}EIP-3009: Transfer With Authorization
x402はEIP-3009を活用し、ガスレスのUSDC送金を実現します。
ユーザーはUSDCのみ保持すればよく、ETH/SOLは不要
署名はオフチェーンで生成 — ガスコスト不要
validBefore/validAfterパラメータで署名の有効期限を制御
ユニークなnonceによりリプレイ攻撃を防止
Solidity Interface
// EIP-3009: Transfer With Authorization
function transferWithAuthorization(
address from,
address to,
uint256 value,
uint256 validAfter,
uint256 validBefore,
bytes32 nonce,
uint8 v, bytes32 r, bytes32 s
) external;