나의 AI 에이전트가 USDC 수익을 은행 계좌로 출금하는 방법
요약
수익을 창출하는 AI 에이전트가 획득한 USDC를 법정화폐로 변환하여 은행 계좌로 출금하는 기술적 워크플로우를 설명합니다. FiatDock과 x402 프로토콜을 활용하여 규제 준수(KYC/AML)를 유지하면서도 에이전트가 직접 자금을 관리하지 않고 인간 소유자에게 전달하는 안전한 설계 패턴을 제시합니다.
핵심 포인트
- 에이전트는 규제 대상인 KYC/AML 과정을 직접 수행할 수 없음
- FiatDock을 통해 자금을 수탁하지 않는 얇은 기술 계층 구현
- x402 프로토콜을 활용한 기계 간(M2M) 결제 및 인증 통합
- 에이전트 지갑과 은행 계좌 소유자의 동일성 유지 필수
나의 에이전트는 USDC를 법니다. x402로 가격이 책정된 API 호출을 판매하기 때문에, 아주 작은 결제 금액들이 에이전트의 지갑에 쌓이게 됩니다. 이는 결국 모든 "수익을 창출하는 에이전트" 데모들이 건너뛰는, 다소 현실적인 질문을 던지게 만듭니다: 그 USDC가 어떻게 사람이 슈퍼마켓에서 쓸 수 있는 돈이 되는가?
여기에 제가 찾아낸 패턴이 있습니다. 에이전트를 위한 거래소 계정이나 API 키가 필요하지 않으며, 무엇보다 중요한 점은 중간에 그 누구도 자금을 보유하지 않는다는 것입니다.
모든 것을 결정짓는 제약 조건
암호화폐를 법정화폐 (fiat)로 변환하는 모든 행위는 규제 대상 활동 (KYC/AML, 수탁 (custody), 결제 (payments))입니다. 자율 에이전트(autonomous agent)는 이 부분을 수행할 수 없으며, 수행해서도 안 됩니다. 따라서 설계는 다음과 같이 명확하게 나뉩니다:
- 에이전트 (The agent): 견적 (quotes), 세션 생성, 수수료 결제 및 상태 추적을 처리하며, 이 모든 과정은 기계 간 (machine-to-machine)으로 이루어집니다.
- 라이선스를 보유한 제공업체 (A licensed provider): (이 경우 Transak) 변환, KYC, 그리고 수탁 (custody)을 담당합니다.
- 인간 소유자 (The human owner): 세션당 한 번 최종 이체를 확인하며, KYC는 평생 단 한 번만 완료합니다.
이들을 하나로 묶어주는 서비스는 FiatDock입니다. 이는 자금에 절대 손을 대지 않는 얇은 기술 계층 (thin technology layer)입니다. 한 가지 구속력 있는 규칙을 미리 명시해 두는 것이 가치가 있습니다: USDC를 보내는 지갑과 법정화폐를 받는 은행 계좌는 반드시 동일한 인물, 즉 에이전트의 소유자에게 속해야 합니다. 제3자의 자금, 집계(aggregation), P2P는 허용되지 않습니다.
1단계 — 에이전트가 환율을 확인합니다 (무료)
curl "https://fiatdock.com/v1/quote?side=SELL&cryptoAmount=50"
인증이나 가입이 필요 없습니다. 응답에는 모든 수수료(서비스의 1% 수수료 포함)와 은행 계좌에 입금될 정확한 금액이 상세히 나열됩니다. 나의 에이전트는 지금 출금하는 것이 가치가 있는지 결정하기 전에 이 호출을 수행합니다.
2단계 — 에이전트가 x402로 세션 비용을 지불합니다
유료 엔드포인트(Paid endpoints)는 API 키를 사용하지 않습니다. 결제되지 않은 요청은 정확한 결제 요구 사항 — 자산, 네트워크, 금액 ($0.05 USDC), 그리고 주소 — 을 포함한 HTTP 402를 반환합니다. 에이전트는 자신의 지갑에서 결제에 서명하고 재시도합니다:
import { wrapFetchWithPayment } from "x402-fetch";
import { privateKeyToAccount } from "viem/accounts";
...
결제 (Payment), 인증 (authentication), 그리고 속도 제한 (rate-limiting)이 하나의 서명된 전송 (signed transfer)으로 통합됩니다. 이것이 x402의 핵심 트릭이며, 가입 양식을 작성할 수 없는 에이전트들에게 이 방식이 작동하는 이유입니다.
3단계 — 사람에게 링크 전달하기
checkoutUrl은 일회용이며 약 5분 동안 유효합니다. 제 에이전트는 단순히 저에게 이 링크를 메시지로 보냅니다. 제가 링크를 열면, 라이선스를 가진 제공업체가 KYC (본인 인증)를 실행하며 (처음 한 번만 수행하며, 이후에는 기억합니다), 제가 이를 확인합니다. USDC는 지갑에서 제공업체로 직접 이동하고, EUR은 제 은행 계좌로 입금됩니다. 에이전트는 은행 자격 증명 (bank credential)을 본 적이 없으며, FiatDock은 단 1센트도 보유하지 않았습니다.
4단계 — 에이전트의 완료 확인
curl https://fiatdock.com/v1/orders/$ORDER_ID
또는 2단계에서 callbackUrl을 전달하고, 각 푸시(push) 시 X-FiatDock-Signature HMAC 헤더를 검증합니다. 어떤 방식이든 에이전트는 돈이 도착했음을 알고 다시 업무로 복귀합니다.
역방향 — 에이전트 충전하기 (on-ramp)
에이전트에게 운영 자금이 필요할 때도 동일한 패턴이 반대 방향으로 작동합니다. POST /v1/onramp/session (x402를 통해 마찬가지로 $0.05 발생)은 목적지가 에이전트 자신의 지갑 주소로 고정된 충전 세션을 생성합니다. 소유자가 체크아웃 링크를 열고 자신의 은행이나 카드로 EUR을 결제하면, USDC가 에이전트의 지갑으로 입금됩니다. 이 방향에 대한 견적 (Quotes)은 side=BUY를 사용한 동일한 무료 호출과 같습니다:
curl "https://fiatdock.com/v1/quote?side=BUY&fiatAmount=100"
하나의 유출 흐름(flow out), 하나의 유입 흐름(flow in) — 그리고 양방향 모두에 동일한 결합 규칙이 적용됩니다: 법정화폐 (fiat) 측은 항상 소유자 자신의 계정이며, 암호화폐 (crypto) 측은 소유자의 에이전트 지갑입니다. 낯선 이들 사이에는 아무것도 교차하지 않습니다.
에이전트가 MCP를 지원한다면, 과정은 훨씬 더 짧아집니다
위의 전체 흐름은 네 가지 MCP 도구(get_quote, create_offramp_session, create_onramp_session, get_order_status)로 래핑(wrapped)되어 있습니다:
{
"mcpServers": {
"fiatdock": {
...
해당 설정은 Claude Desktop, Cursor, Windsurf, 그리고 Gemini CLI에서 그대로 작동합니다. 설치가 필요 없는 호스트를 위한 원격 엔드포인트(https://fiatdock.com/mcp)가 제공되며, MCP를 전혀 사용하지 않는 경우를 위해 OpenAI/Gemini 함수 호출 (function-calling) 스키마가 포함된 tools.json도 제공됩니다. 이 서비스는 공식 MCP Registry에 com.fiatdock/fiatdock-mcp로 등록되어 있습니다. 클라이언트별 설정은 INTEGRATIONS.md에서 확인할 수 있습니다.
솔직한 한계점
- 자격 요건: 18세 이상, 포르투갈 및 Transak이 지원하는 EU/EEA 국가 — 영국 또는 제한된 관할 구역은 제외됩니다 (전체 목록). 이러한 제한은 라이선스를 보유한 제공업체의 서비스 범위에 따른 것입니다.
- 견적(Quotes)은 참고용입니다. 암호화폐는 변동성이 크며, 이 내용은 어떠한 투자 조언도 아닙니다.
- 설계상 인간이 루프 내에 머무릅니다 (human stays in the loop). 이는 자동화가 누락된 것이 아니라, 전체 시스템의 규정 준수 (compliance)를 유지하기 위한 기능입니다.
자신의 에이전트를 연결하여 스스로 파악하게 하고 싶다면, 모든 것이 머신 우선 (machine-first) 방식으로 문서화되어 있습니다: llms.txt · OpenAPI · repo.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기