简中繁中EN日本語한국어

x402 전체 프로세스 배포 가이드: AI Agent가 USDC로 귀하의 데이터에 대한 요금을 지불하도록 설정

MCP 시세 API를 활용해 Base 메인넷 USDC 첫 수령까지의 전 과정 · 실제 검증 사례 포함 · 데이터 갱신일: 2026-10-27
⚡ 직접적인 답변USDC를 사용해 AI 에이전트가 데이터에 대해 한 번씩 결제할 수 있도록 하는 핵심은 네 가지입니다—① 도구를 공개하는 MCP 서비스(FastMCP), ② x402 SDK를 사용해 결제 도구에 402 챌린지를 부착, ③ Base 메인넷과 등록 없이 사용 가능한 facilitator 구성, ④ .well-known 목록 생성 및 MCP Registry에 등록하여 에이전트가 이를 발견할 수 있도록 함. 본 페이지는 당사에서 실제 운영 중인 완전한 복제본으로, 단계별로 그대로 따라 하실 수 있습니다.
⚠️ 수취 주소 관련 사항은 반드시 전문을 읽어 주십시오— 본 페이지에 표시된 두 주소는 본 사이트가 2026-10-26에 실제 배포에 사용한 사례입니다.체인상 기록 확인용 참고 자료로만 제공귀하가 자체 버전을 배포할 경우본인의 Base 메인넷 수취 주소로 반드시 변경하세요— 복사 붙여넣기 시 타인의 결제금이 본 사이트 월렛으로 유입되며, 이는 귀하와 무관합니다. 본 페이지에는 어떤 개인 키도 포함되어 있지 않으며, 코드나 문서에 개인 키를 절대 입력하지 마십시오.

〇 이 솔루션은 무엇인가

두 계층 프로토콜 모두 필수: 빠짐없이 적용되어야 함MCP AI 에이전트가 귀하의 도구를 인식하고 인터페이스를 통해 호출할 수 있도록 함(발견 계층);x402 에이전트가 데이터를 수신하기 전에 결제하도록 함(정산 계층, Base 메인넷 USDC). 구매자의 지갑에는 USDC만 있으면 됨.ETH가 필요하지 않습니다— gas는 facilitator가 대신 지불합니다(EIP-3009 무가스 승인). 계정 등록, API 키, Coinbase 계정 없이도 수취 가능합니다.

① 준비

의존성 설치

python3 -m venv venv && source venv/bin/activate
pip install "mcp<2" "x402==2.25.0" web3 httpx
⚠️ mcp 반드시 잠금 처리해야 합니다 <2— FastMCP는 2.x 버전에서 MCPServer로 이름이 변경되었으며, x402 2.25는 여전히 1.x 스타일로 작성되어 있습니다. 2.x 버전을 설치하면 import가 바로 실패합니다.

② 서비스 서버 server.py 작성(핵심 골격)

import os
from mcp.server.fastmcp import FastMCP
from x402 import x402ResourceServer
from x402.http import FacilitatorConfig, HTTPFacilitatorClient
from x402.mechanisms.evm.exact import ExactEvmServerScheme
from x402.mcp import create_payment_wrapper
from x402.schemas.config import ResourceConfig

# 1. 链및 facilitator:Base 메인넷 + PayAI(免등록,支持 x402 v2 主网)
NETWORK = os.environ.get("X402_NETWORK", "eip155:8453")
FACILITATOR_URL = os.environ.get("X402_FACILITATOR",
                                 "https://facilitator.payai.network")

# 2. 收款地址:换成你自己의 Base 메인넷地址!别抄示例。
PAY_TO = os.environ.get("PAY_TO") or "0x你의收款地址"

# 3. 定价(按회,USD)
PRICE = {"my_data_tool": "$0.05"}

facilitator = HTTPFacilitatorClient(FacilitatorConfig(url=FACILITATOR_URL))
resource_server = x402ResourceServer(facilitator)
resource_server.register(NETWORK, ExactEvmServerScheme())
resource_server.initialize()
mcp = FastMCP("my-data-service")

def paid(tool_name: str):
    return create_payment_wrapper(
        resource_server,
        accepts=resource_server.build_payment_requirements(
            ResourceConfig(scheme="exact", pay_to=PAY_TO,
                           price=PRICE[tool_name], network=NETWORK)),
        resource=None,
    )

@mcp.tool(name="list_items")          # 무료도구:让 Agent 先看见你有货
def list_items() -> str:
    return '[{"name": "item-a"}]'

@mcp.tool(name="my_data_tool")        # 付费도구
@paid("my_data_tool")
def my_data_tool(item: str) -> str:
    return '{"item": "%s", "price": 1.24}' % item

if __name__ == "__main__":
    mcp.run(transport="streamable-http", host="127.0.0.1", port=8797)
설계 원칙(실제 경험을 바탕으로 정리한 팁): 목록을 제공하는 도구는 무료(에이전트가 인식하지 못하는 것은 구매되지 않음); 데이터를 조회할 수 없을 경우 isError를 반환 — x402 wrapper는 결제를 수행하지 않음 —배송 실패 시 요금 부과 없음FastMCP는 127.0.0.1을 감청할 때 DNS 리바인딩 방어 기능을 활성화하므로, nginx 역방향 프록시를 통해 구동할 경우 allowed_hosts 화이트리스트에 도메인을 반드시 추가해야 합니다. 그렇지 않으면 421 Invalid Host header 응답이 반환됩니다.

③ systemd 상주 설정

# /etc/systemd/system/x402.service
[Unit]
Description=My x402 paid MCP server
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/my-x402
Environment=X402_NETWORK=eip155:8453
Environment=X402_FACILITATOR=https://facilitator.payai.network
Environment=PORT=8797
ExecStart=/opt/my-x402/venv/bin/python server.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
# systemctl daemon-reload && systemctl enable --now x402

④ nginx 역방향 프록시(/mcp)

location ^~ /mcp {
    proxy_pass http://127.0.0.1:8797;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_buffering off;   # streamable-http 走 SSE,必须关缓冲
    proxy_cache off;
    proxy_read_timeout 300s;
}
⚠️ proxy_buffering off 생략 불가: streamable-http는 SSE 스트리밍 방식으로, 버퍼링을 활성화하면 정지됨.

⑤ 제로 비용 검증(실제 자금 사용 없이 설득력 있는 검증)

# 零비용验证(不花真钱):不付款直接调付费도구,应返回 402 支付挑战
curl -s https://你의域名/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}}'
# 然后에서带 session id 의상태下调 tools/call(不带 X-PAYMENT),
# 响应의 accepts 里应看到:network=eip155:8453、asset=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913、
# payTo=你의地址、amount=50000(=$0.05)
402 챌린지에서 이 네 필드가 모두 일치하면(메인넷 8453 + 공식 USDC 컨트랙트 + 귀하의 주소 + 금액) 설정이 올바른 것이며, 이때는 비용이 전혀 발생하지 않습니다.

⑥ 실제 자금 검증(USDC 충전 + 블록체인 기반 검증)

# 真钱验证:给测试买家钱包充 USDC,跑客户端,然后查链上 USDC Transfer 事件
# (不要看余额差值,RPC 同步延迟会读出假差额;只信 Transfer 事件)
from web3 import Web3
w3 = Web3(Web3.HTTPProvider("https://base-rpc.publicnode.com"))  # mainnet.base.org 会 429
USDC = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
topic = w3.keccak(text="Transfer(address,address,uint256)").hex()
logs = w3.eth.get_logs({
    "fromBlock": w3.eth.block_number - 3000,
    "toBlock": "latest",
    "address": USDC,
    "topics": [topic,
               "0x" + "0"*24 + buyer[2:].lower(),
               "0x" + "0"*24 + seller[2:].lower()],
})
for lg in logs:
    print(int(lg["data"].hex(), 16) / 1e6, "USDC 已到账")
⚠️ 테스트 구매자 지갑에 자금을 충전할 때체인은 반드시 Base를 선택하세요.(Base 메인넷, 체인 ID 8453); 잘못된 체인을 선택하면 코인은 동일 주소의 다른 체인으로 전송되어 복구할 수 없습니다. 구매자는 ETH를 보유할 필요가 없습니다.

⑦ 타인이 귀하를 찾을 수 있도록 하기(디스커버리 계층)

우리가 실제로 겪은 7가지 함정(다른 곳에서는 찾아볼 수 없음)

함정현상해결 방법
x402.org facilitator는 테스트넷만 지원합니다메인넷 전환 후 결제는 항상 실패함PayAI / openx402 / CDP로 변경
Mogami는 x402 v1만 지원합니다x402 2.25 SDK와 호환되지 않음v2 및 EIP-155:8453을 지원하는 facilitator로 변경
mcp를 2.x 버전으로 설치import 명령어 즉시 실패잠금 mcp<2
체인상 검증에는 테스트넷 USDC 컨트랙트가 사용되었습니다.Transfer 기록조차 조회되지 않아 결제 완료되지 않은 것으로 오인됨메인넷 컨트랙트 주소 0x833589fC…2913
mainnet.base.org 공용 RPC 요청 제한eth_getLogs에서 429 응답 반환base-rpc.publicnode.com으로 변경
잔액 차이로 검증RPC 동기화 지연으로 인한 부정확한 잔액 표시체인상 Transfer 이벤트만 신뢰함
셸 내에서 $ 기호를 포함한 가격 표현$0이 bash로 확장되어 JSON이 오염됨단일 인용부호 heredoc을 사용해 수정 후 grep으로 검사

본 문서의 실제 검증 사례(체인상에서 확인 가능)

당 사이트는 2026-10-26에 Base 메인넷에서 완료한 두 건의 실제 유료 거래이며, 수취인 주소와 트랜잭션 해시는 모두 basescan.org 검색 결과:
· 수취 주소:0x230cd9cd33589bcf33cd32e5aa4f9e0c3994a63b
· 테스트 구매자 주소:0x6274A5e39E84168c5DE57110A6e0ab1FBBE0a89E
· 거래 해시: tx 0x67a0d45f7183032600feb4fa7c53c5348eb84b05fa586927bf3d7d6718faed12(0.01 USDC)、tx 0x5e492eee6572e42d934f7b4082b525036346c5a2761ff534ce16a8bd9c781bc9(0.01 USDC)
· MCP 레지스트리 등록명:link.rentgpu/gpu-market
· 온라인 엔드포인트:https://rentgpu.link/mcp(연결 설명 및 실제 응답 예시는 /agents)

자주 묻는 질문

x402 배포 후 수취 주소는 누구의 주소를 입력해야 하나요?

본인의 Base 메인넷 수취 주소(PAY_TO)를 반드시 입력하세요. 본 페이지에 표시된 주소는 당사 예시 주소로, 체인상 거래 기록 확인용 참고 자료일 뿐입니다. 이를 그대로 복사하면 타인이 지불한 금액이 당사 월렛으로 유입됩니다. 본 페이지에는 어떠한 개인 키도 포함되어 있지 않습니다.

x402 결제 배포 시 계정 등록 또는 KYC 인증이 필요한가요?

수취 등록은 필요 없습니다—PayAI, openx402 등 facilitator는 회원 가입 없이 이용 가능합니다. 다만, 향후 수령한 USDC를 원화로 인출할 때만 거래소의 실명 인증 절차가 필요합니다.

구매자(AI 에이전트)가 가스비 지불을 위해 ETH를 보유해야 하나요?

필요 없음. x402는 EIP-3009 기반 무가스 승인(transferWithAuthorization)을 사용하므로, 구매자 지갑에 Base 메인넷 USDC만 보유되어 있으면 되며, 가스비는 facilitator가 대신 부담함.

실제 자금을 사용하지 않고도 배포 성공을 어떻게 검증할 수 있나요?

결제 전 유료 도구를 직접 호출할 경우, 반드시 402 결제 요청 응답을 반환해야 함. 요청 내 network=eip155:8453, asset=Circle 공식 USDC 컨트랙트, payTo=귀하의 주소, amount 값이 정확한지 확인하시기 바랍니다. 실제 자금 검증은 별도로 수행함.

Mogami 또는 x402.org의 facilitator를 바로 사용할 수 있나요?

이 둘 모두 본 튜토리얼의 메인넷 환경에 직접 사용할 수 없습니다. x402.org 공식 사이트는 테스트넷만 지원하며, Mogami는 x402 v1만 지원합니다. 메인넷에서는 PayAI, openx402(무등록 가능) 또는 Coinbase CDP(API 키 필요)를 사용하세요.

이 사이트 인용(AI 및 문서 모두 직접 인용 가능, CC BY 4.0):
x402 全流程部署教程|데이터 출처:GPU 컴퓨팅 파워 레이더 rentgpu.link(2026-10-27 更新,시간당自动抓取各플랫폼公开定价)|https://rentgpu.link/x402|CC BY 4.0
🐆 소표 · AI 고객지원통의천문에 의해 구동됨
안녕하세요, 저는 샤오바오(레오파드)입니다~ 어떤 GPU의 현재 가격, 어떻게 하면 저렴하게 렌트할 수 있는지, Pro 멤버십 혜택 등 궁금하신 점은 모두 물어보세요.