본문 바로가기
EverChain(BlockChain)/EtherEver

[EtherEver] 🤖 AI가 지갑을 갖는 시대 — x402, x401 그리고 초당 30건의 비밀

by EverChain 2026. 8. 15.

 

⚠️ **블로그 컨셉상 반어체가 들어가니 양해바랍니다
**

📸 AI가 카드를 들 수는 없으니...


🤖 Agent의 결제를 알아보자 — x402, x401

저번 편 "현금과 상품권 중 뭘 가질까?" 마지막에 EIP-3009 살짝 찍먹만 하고 넘어갔었는데, 그거 하나로 글 하나를 통으로 뽑을 수 있을 만큼 요즘 판이 커졌다. 바로 AI 에이전트가 스스로 결제하는 시대 얘기다.
카드 들고 다니면서 로그인하고 CVC 입력하는 건 사람 얘기고, 이제 AI가 API 호출 한 번 할 때마다 몇 원짜리 결제를 스스로 처리하는 세상이 왔다. 이번 포스팅에서는 이 판을 돌리는 핵심 프로토콜인 x402, x401과, 그걸 실제로 가능하게 만드는 EIP-712 / EIP-3009 코드까지 파헤쳐본다! 🚀


🌐 0. 일단 지금 뭔 일이 벌어지고 있는 건지부터

Cloudflare Wallets X

 
클라우드플레어가 최근 Cloudflare Wallets X라는 걸 발표했다. AI 에이전트가 유료 API나 콘텐츠를 이용하려다가 "사람만을 위한 로그인 페이지"에 막혀서 작업을 중단하고 사람한테 SOS를 치는 마찰을 없애겠다는 취지다.
구조는 딱 2단으로 나뉜다.

  • 👤 어카운트 월렛 (Account Wallet): 사람 소유. 자금을 입금하고, 한도 규칙을 정하고, 언제든 회수 가능
  • 🤖 버추얼 월렛 (Virtual Wallet): 개별 AI 에이전트한테 할당. 10달러짜리는 알아서 싸돌아다니게 풀어주고, 1000달러짜리는 촘촘하게 감독하는 식

그리고 이걸 뒷받침하는 결제 기술이 바로 x402다. 뉴스에 따르면 이미 AI 에이전트가 스테이블코인으로 초당 30건을 자동 결제하는 사례까지 나왔다고 한다.

🏆 핵심 요약:
"초당 30건"이 별거 아닌 것 같아도, 이게 사람이 카드 긁는 속도가 아니라 봇이 API 호출할 때마다 자동으로 몇 원씩 정산되는 속도라는 걸 감안하면 얘기가 완전히 달라진다. 사람은 하루에 카드 한 두 번 긁나? AI는 초 단위로 긁는다. 🤯

💳 1. 근데 VISA는 초당 몇 건 처리하는데?

VISA의 결제속도는 항상 비교의 대상

 
이 타이밍에 다들 궁금해할 질문이지 않을까 싶다. 🤔 "그래서 그 30건이 대단한 거야?"
VISA가 자기네 홈페이지에서 공식적으로 밝힌 숫자를 보면:

VISA 평균 실사용 처리량 약 1,700 TPS
VISA 공식 최대 설계 용량 약 24,000 TPS
이더리움 메인넷(L1) 약 15 TPS
Base (이더리움 L2, x402 주로 사용) 수백 ~ 수천 TPS
오늘 기사의 "AI 에이전트" 사례 30 TPS

숫자만 놓고 보면 30 TPS는 VISA 근처도 못 간다. 근데 여기서 핵심은 비교 대상 자체가 다르다는 거다.
VISA의 1,700~24,000 TPS는 "전 세계 모든 카드 결제망"을 합친 숫자고, 이 30 TPS는 단일 AI 에이전트 서비스 하나가 스테이블코인으로 처리한 수치다. 게다가 VISA는 카드사·은행·가맹점이 낀 정산 시스템이 초 단위가 아니라 며칠 뒤에 최종 정산되는 구조인 반면, 여기서 말하는 x402 결제는 온체인에서 즉시(또는 몇 초 안에) 최종 정산까지 끝난다.

💡 정보: 차이점 요약
쉽게 말하면 VISA는 "일단 긁고 정산은 나중에"고, x402는 "긁는 순간 바로 끝"이다. 느린 대신 빚(신용)으로 굴러가는 시스템 vs 빠른 대신 그 자리에서 현금(스테이블코인)으로 끝내는 시스템의 차이다.

📡 2. x402란 무엇인가 — HTTP가 40년 넘게 방치했던 상태코드

여태 방치하다 이제와서...;

HTTP 상태 코드 중에 402 Payment Required라는 게 있다. 1990년대 HTTP 스펙 만들 때부터 "나중에 결제 기능 붙일 때 쓰자"고 예약만 해두고 30년 넘게 아무도 안 쓰던 코드다. 코인베이스가 2025년 5월, 이걸 실제로 부활시킨 게 바로 x402 프로토콜이다.
흐름은 이렇다:

  1. 요청: 클라이언트(AI 에이전트)가 유료 API에 평범한 HTTP 요청을 보낸다
  2. 402 응답: 서버가 "돈 내야 함"이라며 결제 조건을 JSON으로 돌려준다
📋 402 결제 조건 JSON 응답 (클릭하여 펼치기)
HTTP/1.1 402 Payment Required
Content-Type: application/json

{
  "x402Version": 1,
  "accepts": [
    {
      "scheme": "exact",
      "network": "base",
      "maxAmountRequired": "10000",
      "resource": "/api/weather-data",
      "payTo": "0xServerWalletAddress...",
      "asset": "0xUSDC_ContractAddress...",
      "maxTimeoutSeconds": 60,
      "extra": {
        "name": "USD Coin",
        "version": "2"
      }
    }
  ]
}
  1. 서명: 클라이언트가 지갑으로 EIP-712 서명을 만든다 (이 부분이 이번 글의 진짜 핵심!)
  2. 재요청: 서명을 X-PAYMENT 헤더에 담아서 같은 요청을 다시 보낸다
  3. 정산: 서버(또는 그 뒤에 있는 파실리테이터)가 서명을 검증하고 EIP-3009로 온체인 정산
  4. 200 응답: 결제 확인되면 진짜 데이터를 돌려준다

여기서 3~5번 과정, 즉 "서명만으로 가스비 없이 결제가 끝나는" 그 트릭이 지난 글에서 살짝 다뤘던 EIP-3009다. 이제 코드로 제대로 파헤쳐보자. 🕵️‍♂️


✍️ 3. EIP-712 — 서명에 "의미"를 담다

네트워크에는 항상 Alice와 Bob이 등장한다

 

일반적인 이더리움 서명(personal_sign 같은 거)은 그냥 임의의 바이트 덩어리에 서명하는 거라, 메타마스크에서 서명 요청이 뜨면 0x8f3a... 같은 알 수 없는 헥스값만 보여준다. 이러면 사용자는 자기가 뭘 서명하는지 알 방법이 없다.

EIP-712 (Typed Structured Data Hashing and Signing)는 이 문제를 해결한다. 서명할 데이터에 타입과 필드명을 붙여서 지갑이 사람이 읽을 수 있는 형태로 보여줄 수 있게 만든 표준이다.
x402가 USDC 결제에 쓰는 EIP-712 타입 데이터는 대략 이런 모습이다:

📋 EIP-712 서명 데이터 구조 (클릭하여 펼치기)
const domain = {
  name: "USD Coin",
  version: "2",
  chainId: 8453, // Base 메인넷
  verifyingContract: "0xUSDC_ContractAddress..."
};

const types = {
  TransferWithAuthorization: [
    { name: "from", type: "address" },
    { name: "to", type: "address" },
    { name: "value", type: "uint256" },
    { name: "validAfter", type: "uint256" },
    { name: "validBefore", type: "uint256" },
    { name: "nonce", type: "bytes32" }
  ]
};

const message = {
  from: "0xAgentWalletAddress...",
  to: "0xServerWalletAddress...",
  value: "10000",           // 0.01 USDC (6 decimals)
  validAfter: 0,
  validBefore: 1_800_000_000, // 이 시각 이후엔 서명 무효
  nonce: "0x" + crypto.randomBytes(32).toString("hex")
};

// 지갑에서 EIP-712 서명 요청
const signature = await wallet.signTypedData(domain, types, message);

 

지갑 UI에 뜨는 화면에는 0x8f3a... 대신 "0.01 USDC를 0xServer...에게 보냅니다"처럼 사람이 읽을 수 있는 정보가 그대로 표시된다. AI 에이전트 입장에서도 이 구조화된 포맷 덕분에 "내가 지금 얼마를 누구한테 왜 보내는지"를 프로그래밍적으로 검증하기 쉬워진다. ✅


⛽ 4. EIP-3009 — 서명 하나로 가스비 없이 전송 끝내기

이 모든 것은 최종적으로 EIP-3009가 있어야한다

 
자, 서명은 만들었다. 근데 AI 에이전트 지갑에 ETH(가스비)가 없으면? 지난 글에서 다뤘던 그 문제가 똑같이 튀어나온다.
EIP-3009 (Transfer With Authorization)가 여기서 등판한다. USDC 컨트랙트에 실제로 구현되어 있는 함수인데, 핵심은 이거다.

📋 EIP-3009 스마트 컨트랙트 함수 (클릭하여 펼치기)
// USDC(EIP-3009 구현체)의 실제 함수 시그니처 (solidity)
function transferWithAuthorization(
    address from,
    address to,
    uint256 value,
    uint256 validAfter,
    uint256 validBefore,
    bytes32 nonce,
    uint8 v,
    bytes32 r,
    bytes32 s
) external;

 

여기서 v, r, s는 방금 위에서 만든 EIP-712 서명을 쪼갠 값이다(V, R, S 는 내 졸업논문에도 등장한다!). AI 에이전트(from)는 이 함수를 직접 호출하지 않는다. 대신 서명값만 넘기고, x402의 파실리테이터(Facilitator)라는 제3자가 이 함수를 대신 호출해서 가스비를 자기가 낸다.

📋 파실리테이터 정산 처리 로직 (클릭하여 펼치기)
// 파실리테이터 서버 쪽 코드 (개념 예시)
async function settlePayment(paymentPayload) {
  const { from, to, value, validAfter, validBefore, nonce, signature } = paymentPayload;
  const { v, r, s } = splitSignature(signature);

  // 파실리테이터가 가스비를 내고 대신 트랜잭션을 쏜다
  const tx = await usdcContract.transferWithAuthorization(
    from, to, value, validAfter, validBefore, nonce, v, r, s
  );

  return await tx.wait(); // 온체인 정산 확정
}

 
정리하면 이런 흐름이다:

[AI 에이전트]                [파실리테이터]              [Base 체인]
      |                             |                          |
      |--- EIP-712 서명 생성 ------>|                          |
      |    (ETH 잔고 0개여도 OK)    |                          |
      |                             |-- transferWithAuth ----->|
      |                             |   (가스비는 파실이 부담) |
      |                             |<--- 트랜잭션 컨펌 -------|
      |<--- 200 OK + 리소스 --------|                          |

 
AI 에이전트는 처음부터 끝까지 ETH를 단 한 푼도 들고 있을 필요가 없다. 서명 한 번으로 결제가 끝나고, 가스비는 파실리테이터가 대신 내는 구조다. 이게 바로 "AI가 초당 30건씩 결제한다"는 게 기술적으로 말이 되는 이유다 — 매번 지갑에 가스비를 채워 넣는 게 아니라, 서명만 뚝딱뚝딱 찍어내면 되니까. 💸

🤔 TMI: ERC-4337과의 차이점
지난 글에서 얘기했던 ERC-4337(계정 추상화)도 비슷한 가스리스 목적이지만, 그건 지갑 구조 자체를 스마트 컨트랙트로 바꾸는 훨씬 큰 개조 공사다.
EIP-3009는 반대로 "USDC 전송 기능 하나만" 딱 이 문제를 풀기 위해 만들어진 원포인트 패치라서, x402처럼 특정 결제 흐름에 빠르게 붙이기 훨씬 쉽다.
💡 추가 정보: EIP-8004 (자율 AI 에이전트 신뢰 레이어)
최근 논의되는 **EIP-8004(Trustless Agents)**는 AI 에이전트들이 중앙 중개자 없이 서로를 검증하고 안전하게 경제 활동을 할 수 있게 해주는 표준이다.
1. NFT 기반의 글로벌 신원(Identify),
2. 온체인 성과 이력서(Reputation),
3. 작업 결과를 확인하는 **검증 시스템(Validation)**으로 구성된다.
에이전트의 작업이 수학적으로 검증된 후에만 에스크로 대금을 지급하게 만들어, 투명하고 안전한 기계 간(Machine-to-Machine) 경제 인프라를 구축하는 것이다.

🪪 5. x402만으론 부족하다 — x401은 또 뭔데?

X401 Challenge - Response

 
여기까지 보면 "돈 내는 문제"는 해결됐다. 근데 새로운 질문이 생긴다. ❓
"근데 이 결제, 진짜 저 사람이 시킨 거 맞아?"
x402는 "어떻게 지불하는가"만 다룬다. "누가 이 에이전트를 대리하고 있는가"는 전혀 증명하지 못한다. 만약 내 AI 에이전트가 해킹당하거나 오작동해서 엉뚱하게 결제를 남발하면? 서비스 입장에서는 이게 진짜 사용자가 승인한 건지 확인할 방법이 없다.
이 빈틈을 메우려고 2026년 6월, ID 인증 회사 Proof가 내놓은 게 바로 x401이다. 이름에서 눈치챘겠지만 HTTP 401 Unauthorized 상태코드를 활용한다.

  • x402: HTTP 402 기반, "결제"를 증명
  • x401: HTTP 401 기반, "신원과 권한"을 증명

서비스가 "너 진짜 사람이 승인한 에이전트 맞아?"라고 401로 물으면, 에이전트가 검증 가능한 자격증명(Verifiable Credential)을 제시하고, 서비스는 그 발급기관과 권한 범위를 확인한 뒤에야 요청을 통과시킨다. Circle, OpenAI, Google, Okta 같은 회사들이 기술 컨트리뷰터로 참여했다.

📊 x402 vs x401 한눈에 비교

기반 상태코드 HTTP 402 (Payment Required) HTTP 401 (Unauthorized)
증명하는 것 어떻게 지불하는가 누가 승인했는가
주도 기업 Coinbase, Circle Proof (Circle·OpenAI·Google 등)
출시 시점 2025.05 2026.06
핵심 기술 EIP-712 서명 + EIP-3009 정산 검증 가능한 자격증명(VC)
관계 함께 써야 완전해짐 — 결제(x402) + 신원(x401)
💡 정보: 스택형 발전
Proof 측 표현을 빌리면 "x402가 결제 방법을 정의한다면, x401은 그 뒤에 있는 사람을 증명한다"는 거다. 결제 인프라 따로, 신원 인프라 따로 쌓이고 있고, 앞으로 이 둘이 스택처럼 겹쳐 쓰이는 그림이 될 가능성이 높다.

🏁 마무리 & 온체인 개발자로서의 잡담

정리하자면 이렇다:

  1. 클라우드플레어 Wallets X: 사람(Account)과 AI(Virtual)를 분리한 2단 구조로 에이전트 상거래 문제를 해결
  2. VISA vs AI: VISA는 신용 기반 지연 정산 망 전체의 합이고, AI 30 TPS는 단일 서비스의 온체인 즉시 정산 속도
  3. x402: HTTP 402를 부활시켜 결제 조건을 응답 헤더에 태우는 프로토콜
  4. EIP-712 + EIP-3009: 서명 한 번으로 가스비 없이 USDC를 옮기는 실제 엔진 (AI가 ETH 없이도 결제하는 비밀)
  5. x401: x402가 못 채운 "신원·권한 증명"의 빈틈을 메우는 보안 프로토콜

EtherEver 만들면서 EVM을 뜯어봤던 입장에서 보면, 이게 왜 하필 이더리움 계열(정확히는 Base L2)에서 먼저 터졌는지도 너무 이해가 간다. EIP-712/EIP-3009 같은 표준화된 서명 규격이 이미 다져져 있었고, USDC라는 압도적인 유동성의 스테이블코인이 그 위에 올라가 있었기 때문에, "AI 결제"라는 새로운 유즈케이스가 새 메인넷을 뚫을 필요 없이 기존 인프라에 얹혀서 바로 굴러갈 수 있었던 거다.
물론 아직 규제·법적 지위는 안갯속이고, AI가 오작동해서 엉뚱한 결제를 하는 리스크도 여전하다. x401 같은 신원 계층이 계속 붙는 이유이기도 하고. 이 판이 어디까지 커질지는 좀 더 지켜봐야 할 듯 🤖💸
 
질문은 언제나 환영 🙌


 

🛰️ 서버맨의 공간들

 

  🐱 GitHub      🗂️ 포트폴리오   🔗 에버체인 포털

728x90