x402는 결제를 증명할 뿐 신뢰를 증명하지는 않습니다 — 그래서 우리는 Vouch를 만들었습니다
요약
x402 결제 시스템의 한계를 보완하기 위해 에이전트 간 신뢰를 검증하는 'Vouch' 레이어를 소개합니다. Vouch는 결제자(payer)와 수취인(payee) 모두의 신원과 평판을 점수화하여 서비스 제공 여부를 결정하는 게이트웨이 역할을 합니다.
핵심 포인트
- x402 결제는 지불 여부만 증명할 뿐, 상대방의 신뢰도는 보장하지 않음
- Vouch는 0~100점 사이의 점수로 ALLOW/WARN/BLOCK 권장 사항 제공
- ERC-8004 신원, 평판, 지갑 휴리스틱 등을 활용해 시빌 공격 방어
- 판매자와 구매자 양방향 모두를 위한 신뢰 계층 구축
x402는 결제를 증명합니다. 하지만 신뢰를 증명하지는 않습니다 — 그래서 우리는 Vouch를 만들었습니다.
결제는 "누가 지불했는가?"에 답합니다.
신뢰는 "그들에게 서비스를 제공해야 하는가?"에 답합니다.
만약 당신이 x402 API를 운영한다면, 그 간극이 제품 전체의 리스크가 됩니다. ERC-8004는 에이전트(agent)에게 온체인(on-chain) 상의 신원과 평판 표면을 제공하지만, 가공되지 않은 피드백을 신용으로 취급한다면 여전히 시빌 공격(Sybil-prone)에 취약할 수 있습니다. 우리는 Vouch를 구축했습니다. 이는 결제된 콘텐츠를 전달하기 전에 의사결정이 필요한 게이트웨이(gateway)를 위해 0~100점 사이의 점수와 ALLOW / WARN / BLOCK 권장 사항을 반환하는 신뢰 계층(trust layer)입니다.
그리고 리스크는 양방향으로 존재합니다. 결제를 보내는 에이전트 또한 거울 형태의 동일한 문제를 가집니다: 이 402 결제의 반대편에 있는 지갑이 실제 서비스인가, 아니면 USDC를 챙겨 사라질 일회용(burner) 지갑인가? 따라서 Vouch는 이제 양쪽 모두를 점수화합니다: API 제공자를 위한 결제자 신뢰(payer trust), 그리고 결제 에이전트를 위한 수취인 신뢰(payee trust).
이 포스트는 Base 네트워크 상에서 구축 중인 Vouch의 빌드 인 퍼블릭(build-in-public) 스냅샷입니다.
우리가 주목하는 흐름들
판매자 측 — 이 결제자에게 서비스를 제공해야 하는가?
클라이언트 → x402 결제 검증 → Vouch 결제자 확인 → 귀하의 경로
↘ 선택적 정산 증명(settlement attest)
구매자 측 — 내 에이전트가 이 지갑에 결제해야 하는가?
귀하의 에이전트 → Vouch 수취인 확인 → x402 결제 → 그들의 API
판매자 측:
x402 미들웨어(middleware)가 결제를 검증하고 결제자 지갑을 산출합니다.
귀하의 게이트(gate)가 Vouch의 GET /v1/wallets/{payer}/score를 호출합니다.
BLOCK 발생 시, 비용이 많이 드는 핸들러(handler)를 실행하기 전에 403을 반환합니다.
허용(allow) 후에는 선택적으로 POST /v1/payments/x402를 호출하여 정산 이력이 향후 점수를 강화하도록 합니다.
구매자 측:
귀하의 에이전트가 402를 접하고 결제 요구 사항에서 수취인 지갑을 추출합니다.
무엇인가에 서명하기 전에 GET /v1/payees/{payee}/score를 호출합니다.
BLOCK 시 결제를 건너뛰고, WARN 시에는 귀하만의 정책(금액 제한, 사람의 개입 요구 등 적절한 방식)을 적용합니다.
판매자 측 미들웨어 샘플은 리포지토리(repo)의 examples/x402-trust-gate에 있습니다.
(현재) 결제자 점수(payer score)를 구성하는 요소
| 신호 (Signal) | 역할 (Role) |
|---|---|
| ERC-8004 신원 (identity) | 등록된 대리인(Registered agent) + 메타데이터 URI 존재 여부 |
| ERC-8004 평판 (reputation) | 피드백 양 / 평균, Sybil(시빌) 억제 적용 |
| 지갑 휴리스틱 (Wallet heuristics) | 생성 시기, 활동성, Burner(일회용) 패턴, 자금 공급 클러스터 |
| 수동 WL/BL | 고객별 정책 (체인 점수 산출 이후 적용) |
| x402 결제 (settlements) | 증명된 결제 이력 (가중치 10% — 현재 데이터 축적 중) |
권장 사항: 대략 ≥70 허용(ALLOW), 40–69 경고(WARN), <40 차단(BLOCK) (블랙리스트 또는 높은 Sybil 위험은 차단(BLOCK) 강제). 점수는 정보 제공용이며, 보증이나 신용 등급이 아닙니다.
소유자 인덱스 지연(Owner-index lag)은 데이터 커버리지(dataCoverage)로 표기되어, 통합 서비스 제공자(integrators)가 모든 것을 알고 있다고 가정하는 대신 데이터의 최신성을 확인할 수 있도록 합니다.
이번 주 신규 기능: 수취인 신뢰 API (Payee Trust API)
GET /v1/payees/{address}/score는 구매자 측의 질문에 대해 다른 신호 조합으로 답변합니다. 수취인의 실패 모드는 Sybil 피드백이 아니라, 돈을 받고 사라지는 것이기 때문입니다:
| 신호 (Signal) | 역할 (Role) |
| :--- | : |
| 수취 이력 (Receiving history) | 해당 지갑이 수취인(payee)이었던 증명된 x402 결제 건 — 횟수, 활성 일수, 고유 결제자 수 |
| 지갑 상태 (Wallet health) | 결제자 점수와 동일한 생성 시기 / 트랜잭션(tx) 수 / Burner 휴리스틱 |
| 인출 패턴 (Drain pattern) | Exit-scam(먹튀) 형태: 자금을 수취한 후 (거의) 모든 자금을 인출함 — Native ETH 및 Base USDC를 대상으로 확인하며, 가스 잔액으로 인한 오탐(false-positive)을 방지하기 위해 먼지(dust) 하한선을 적용함 |
| 결과 이력 (Outcome history) | 해당 지갑을 지목하는 이전의 확인된 사기(confirmed-fraud) / 확인된 정상(confirmed-legitimate) 라벨 |
언급할 만한 두 가지 설계 세부 사항은 다음과 같습니다:
절대 404 에러가 발생하지 않습니다. 아직 어떤 지갑도 증명(attest)한 적 없는 지갑이라도 dataDepth: "thin"을 포함하여 200 코드를 받으며, 가중치 또한 그에 맞춰 조정됩니다. 즉, thin-data를 가진 지갑은 주로 지갑의 건전성과 자금 소진 패턴으로 평가받고, 부유한(rich) 지갑은 주로 입금 기록으로 평가받습니다. 이 점에 대해서는 사용자가 얼마나 많은 신뢰도를 부여할지 결정하며, 저희는 아는 것 이상을 안다고 주장하지 않습니다.
데이터 루프는 공유됩니다. 모든 POST /v1/payments/x402 증명(attestation)은 이제 온체인에서 검증되며 (fail-closed), 지불자(payer)의 정산 기록과 수취인(payee)의 입금 기록 양쪽에 모두 신용을 부여합니다. 결제를 증명하는 판매자는 부수적으로 구매자를 보호하는 데이터셋을 구축하게 됩니다.
API 인터페이스 (통합 경로)
지불자 지갑 점수화 (판매자 측, 주 x402 경로)
curl -H "Authorization: Bearer $VOUCH_API_KEY"
[https://agent-trust-tawny.vercel.app/api/v1/wallets/0xYOUR_PAYER/score]
수취인 지갑 점수화 (구매자 측, 에이전트가 결제하기 전)
curl -H "Authorization: Bearer $VOUCH_API_KEY"
[https://agent-trust-tawny.vercel.app/api/v1/payees/0xTHEIR_WALLET/score]
검증된 결제 증명 (txHash 기준멱등성)
curl -X POST -H "Authorization: Bearer $VOUCH_API_KEY"
-H "Content-Type: application/json"
-d '{"wallet":"0xYOUR_PAYER","txHash":"0x...","resource":"/api/premium"}'
[https://agent-trust-tawny.vercel.app/api/v1/payments/x402]
또한 이용 가능한 기능: agent-ID 점수화, 배치(batch) 점수화, 결과 보고 (POST /v1/events/{id}/outcome — 판결 후 실제로 무슨 일이 일어났는지 알려주세요), MCP 도구 (check_wallet_trust, attest_x402_payment), 그리고 npm을 사용한 TypeScript 클라이언트: npm install @vouchscore/sdk (MCP 서버: @vouchscore/mcp-server). SDK와 MCP 서버는 아직 수취인 엔드포인트(payee endpoint)를 지원하지 않습니다. 이는 목록의 다음 항목이며, 에이전트 런타임용 지출 정책 도우미(spend-policy helper)가 함께 추가될 예정입니다.
우리가 타협하지 않을 설계 선택 사항들
- 바인더(binder) 검증 시 지갑 바인딩(wallet binding) 또는 치명적인 RPC 오류 발생 시 'Fail closed' 적용 — 조용한 허용(ALLOW)보다는 502 오류나 차단(BLOCK)이 낫습니다.
- 증명(Attestations)은 효력을 갖기 전 온체인(on-chain)에서 검증됩니다 — 잘 구성된 지갑과 트랜잭션 해시(txHash)만으로는 결제 이력을 조작할 수 없습니다. 트랜잭션은 실제여야 하며, 성공적이어야 하고, 주장된 지갑에 귀속되어야 합니다.
- 화이트리스트(Whitelist)는 시빌(Sybil) 공격에 대한 면죄부가 아닙니다 — 시빌 위험이 높으면 경고(WARN)에서 허용(ALLOW)으로의 승급을 거부합니다.
- 무료 익명 공개 스코어링은 유지되지 않습니다 — 모든 스코어에는 API 키가 필요합니다. 우리는 스크래핑 팜(scrape farms)이 아닌 실제 통합 개발자(integrators)를 원합니다.
- x402 결제 가중치(settlement weight)는 작게 시작합니다 (10%) — 더 높은 가중치를 받을 자격을 갖추기 위해서는 데이터가 축적되어야 합니다.
- 모든 스코어는 스스로를 설명합니다 — 응답에는 네 가지 가중치 구성 요소(identity / reputation / wallet / x402)에 대한 상세 내역이 포함됩니다. 각 요소는 점수, 가중치 및 기여도를 포함하므로, 게이트웨이는 단순히 숫자만 기록하는 것이 아니라 왜 그러한 판결이 내려졌는지 로그를 남길 수 있습니다.
사용해 보기
x402 API 제공자(결제자 게이팅 + 결제 증명) 및 에이전트 런타임 빌더(에이전트가 지출하기 전 수취인 스크리닝)를 위해 구축되었습니다.
- 가입하기: agent-trust-tawny.vercel.app/signup — 무료 계정, 초대 코드 없음
- SDK: npm install @vouchscore/sdk
- 코드 및 문서: github.com/kzmttkc/agent-trust
- 가이드: docs/x402-integration.md, docs/mcp-setup.md, docs/openapi.yaml
- 이 분야에서 무언가를 구축하고 계신가요? 여기에 답글을 남기거나 DM을 보내주세요. 기꺼이 의견을 나누겠습니다.
Next.js, viem, Neon, 그리고 Base 상의 ERC-8004 레지스트리(registries)로 구축되었습니다. 슬로건: 에이전트 커머스를 위한 신뢰 계층(trust layer).
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기