작동 원리
x402는 HTTP 요청-응답 사이클 내에서 결제를 처리합니다. 클라이언트, 서버, 퍼실리테이터, 블록체인 4개의 구성 요소가 협력하여 빠르고 안전한 결제를 구현합니다.
클라이언트
서버
퍼실리테이터
블록체인
1
초기 요청
클라이언트 → 서버AI 에이전트가 보호된 리소스에 일반적인 HTTP GET 요청을 보냅니다.
GET /api/premium-data HTTP/1.1
Host: example.com
User-Agent: AI-Agent/1.0
Accept: application/json2
402 응답
서버 → 클라이언트서버가 결제가 필요함을 알리며, 결제 정보를 PAYMENT-REQUIRED 헤더에 담아 반환합니다.
HTTP/1.1 402 Payment Required
PAYMENT-REQUIRED: base64(...)
{
"x402Version": 2,
"accepts": [{
"scheme": "exact",
"network": "eip155:84532",
"amount": "10000",
"asset": "0x036CbD53...",
"payTo": "0x742d35Cc..."
}]
}3
EIP-712 서명 생성
클라이언트 → 클라이언트클라이언트가 USDC의 transferWithAuthorization을 위한 EIP-712 타입 데이터 서명을 생성합니다.
// EIP-712 Typed Data
{
"domain": {
"name": "USD Coin", // 주의: 토큰 심볼 "USDC"가 아닌 "USD Coin"
"version": "2",
"chainId": 84532,
"verifyingContract": "0x036CbD53..."
},
"message": {
"from": "0x390e4Ce3...",
"to": "0x742d35Cc...",
"value": "10000",
"validAfter": 0,
"validBefore": 1768474060,
"nonce": "0xabc123..."
}
}4
서명과 함께 재요청
클라이언트 → 서버생성한 결제 서명을 PAYMENT-SIGNATURE 헤더에 담아 원래 요청을 다시 보냅니다.
GET /api/premium-data HTTP/1.1
Host: example.com
PAYMENT-SIGNATURE: base64({
"signature": "0x...",
"authorization": {...}
})5
퍼실리테이터 검증
서버 → 퍼실리테이터서버가 퍼실리테이터에게 결제 서명의 유효성 검증을 요청합니다. 온체인 실행 없이 빠르게 검증됩니다.
POST /verify
{
"x402Version": 2,
"paymentPayload": "...",
"paymentRequirements": "..."
}
// Response
{
"isValid": true,
"payer": "0x390e4Ce3..."
}6
온체인 정산
퍼실리테이터 → 블록체인퍼실리테이터가 transferWithAuthorization을 호출하여 USDC를 실제로 전송합니다.
// USDC Contract Call
USDC.transferWithAuthorization(
from: "0x390e4Ce3...",
to: "0x742d35Cc...",
value: 10000,
validAfter: 0,
validBefore: 1768474060,
nonce: "0xabc123...",
v, r, s // signature
)
// Transaction Hash
0xfd5a8643...7
콘텐츠 반환
서버 → 클라이언트결제가 확인되면 서버가 보호된 콘텐츠를 반환합니다.
HTTP/1.1 200 OK
PAYMENT-RESPONSE: base64({
"settled": true,
"txHash": "0xfd5a8643..."
})
{
"data": "프리미엄 콘텐츠..."
}핵심 포인트
가스비는 누가 내나요?
퍼실리테이터가 대신 트랜잭션을 전송합니다. 가스비는 결제 금액에서 차감되거나 퍼실리테이터가 부담합니다.
실패하면 어떻게 되나요?
결제는 온체인에서 원자적으로 실행됩니다. 실패하면 토큰이 전송되지 않고, 콘텐츠도 제공되지 않습니다.
얼마나 빠른가요?
검증(Step 5)은 ~100ms, 온체인 정산(Step 6)은 ~2초 소요됩니다. 클라이언트 관점에서 전체 흐름은 2-3초 내에 완료됩니다.
replay attack 방지는?
각 서명에 고유한 nonce가 포함되어 있고, validBefore 타임스탬프로 유효 기간이 제한됩니다.
직접 결제 플로우를 시각화로 확인해보세요
결제 플로우 시각화 보기