OpenDID 생태계OpenID4VP 표준ZK 선택 공개

처음 보는 사람과도, 신원은 검증하고 정보는 최소로 거래하세요

중고·프리랜스·1:1 거래에서 「누구와 거래하는지」를 검증하고, 동의 없이는 결제가 나가지 않게 하며, 분쟁 때 다시 증명할 수 있는 SafePay Agent입니다.

설치 없음 · 브라우저에서 바로 · 운영 API 연결

midgo.vercel.app/app/demoLive
OpenID4VP 신원 검증
Intent · Consent 서명
결제 실행 · 영수증
Merkle 앵커 · 분쟁 증빙
OpenID4VPZKConsent
Trust

신원 · 신뢰

OpenID4VP로 VP 제출. Trust Registry로 발급자·VC 상태 검증.

Control

의도 · 동의

자연어 Intent 정규화 → 조건·금액이 박힌 Consent에 DID 서명.

Proof

결제 · 증빙

결제·영수증 해시 체인 → Merkle Root · 블록체인 앵커(데모 Mock).

OpenDIDOpenID4VPVerifiable ConsentPostgreSQLRailway · Vercel
OpenID4VP
표준 VP 검증
ZK
선택 공개 claim
E2E
데모 플로우 완결
Prod
Railway · Vercel 배포
왜 Midgo인가

P2P·중고 거래의 불신을 표준 DID로 해소

기존 PG는 결제만 처리합니다. Midgo는 누가 누구인지, 무엇에 동의했는지, 나중에 어떻게 증명할지까지 설계합니다.

최소 정보 원칙

거래에 필요한 claim만 요청합니다. 나이·실명은 boolean, 계좌는 ZK로 소유만 증명.

사용자 통제형 동의

Verifiable Consent에 금액·조건·만료가 고정되고, 서명 없이는 결제 API가 실행되지 않습니다.

감사 가능한 증빙

Consent → Payment → Receipt → Anchor 순서의 해시 체인으로 분쟁 시 재현 가능한 증거를 제공합니다.

Agent DID

Risk Agent 등 에이전트도 DID·capability로 권한이 제한되며, 모든 행위는 audit log에 남습니다.

작동 방식

Trust → Control → Proof 4단계 여정

신원 확인부터 분쟁 증빙까지, 각 단계가 API·패키지 경계로 분리되어 있습니다.

  1. 01

    신원 검증

    OpenID4VP Presentation Request · VP 검증 · Trust Registry

  2. 02

    의도 · 동의

    Intent 정규화 · Verifiable Consent 서명 · verify

  3. 03

    결제 · 영수증

    PG sandbox/live · idempotency · receipt hash

  4. 04

    증빙 · 분쟁

    Merkle anchor · GET /v1/disputes 증빙 번들

디자인 시스템

Midgo 브랜드 컬러 · 타이포

Trust( emerald ) · Control( sky ) · Privacy( violet ) · Risk( amber ) — 랜딩과 dApp이 동일한 토큰을 공유합니다.

Trust · Control · Proof

Trust

Primary · 신원·신뢰

--midgo-emerald

Control

Intent · Consent

--midgo-sky

Privacy

ZK · 선택 공개

--midgo-violet

Risk

Agent · 경고

--midgo-amber

Display

믿고 거래하세요

Geist Sans

Heading

SafePay Agent

Geist Sans

Body

OpenID4VP로 신원을 검증하고 최소 정보만 공유합니다.

Geist Sans

Mono

did:opendid:holder:mock-user

Geist Mono

폰트: Geist Sans / Geist Mono · 상세: docs/DESIGN-SYSTEM.md

OpenDID · OpenID4VP

표준 프레젠테이션으로 신원 인증을 분리

Midgo API는 POST /v1/oid4vp/request로 Presentation Request를 만들고, POST /v1/oid4vp/verify에서 VP 검증·Trust Registry·Credential Status를 처리합니다.

인증 플로우

  1. 1
    Presentation Request
    RP(Midgo)가 필요 claim·purpose·redirect를 정의
  2. 2
    Wallet · VP 제출
    모바일 신분증 앱이 VP 토큰 생성 (데모: Mock)
  3. 3
    Verify + Trust
    서명·만료·발급자 Trust Score·Credential Status 검사
  4. 4
    Selective Disclosure
    BOOLEAN_ONLY / ZKP 등 reveal mode에 따라 최소 정보만 노출

데모에서 요청하는 Claim

SAFE_TRADE purpose · requiredClaims

  • AGE_OVER_19BOOLEAN_ONLY

    만 19세 이상 여부만 true/false

    🔒 생년월일·주민번호 미공개

  • LEGAL_NAME_VERIFIEDBOOLEAN_ONLY

    실명 인증 완료 여부

    🔒 이름 문자열 미공개

  • BANK_ACCOUNT_OWNERZKP

    계좌 소유 ZK 증명

    🔒 계좌번호·은행명 미공개

Zero-Knowledge · 선택 공개

계좌번호 없이도 소유를 증명

P2P 거래에서 가장 민감한 정보 중 하나가 계좌입니다. Midgo는 revealMode: ZKP claim으로 「이 사용자가 해당 계좌의 소유자이다」라는 명제만 검증합니다.

  • BOOLEAN_ONLY — 나이·실명 등 사실 여부만 전달
  • ZKP — 관계·소유·범위 등 복잡한 명제를 영지식으로 증명
  • VP 검증 결과는 audit log에 해시만 기록 — 원문 VC 저장 최소화
dApp에서 ZK claim 결과 보기 →
// Presentation Request
{
  "purpose": "SAFE_TRADE",
  "requiredClaims": [
    { "claimType": "AGE_OVER_19",
      "revealMode": "BOOLEAN_ONLY" },
    { "claimType": "BANK_ACCOUNT_OWNER",
      "revealMode": "ZKP" }
  ]
}
↓ Wallet · ZK Proof
// Verify Output
{
  "claimType": "BANK_ACCOUNT_OWNER",
  "verified": true,
  "revealMode": "ZKP"
  // accountNumber: never disclosed
}
활용 사례

중고·프리랜스·마켓플레이스 어디에나 적용

처음 만나는 상대와의 거래에서 신원·동의·증빙이 필요한 모든 시나리오에 Midgo를 연결할 수 있습니다.

🛒

C2C 중고 거래

당근·번개장터 스타일 거래에서 VP로 연령·실명·계좌 소유를 검증하고 동의 기반 결제.

💼

프리랜스 · 용역

의뢰 금액·조건을 Consent에 고정하고, 완료 후 영수증·앵커로 분쟁 대비.

🏪

마켓플레이스 에스크로

판매자·구매자 역할 분리 dApp과 Trust Registry로 발급자·PG issuer 관리.

아키텍처

모노레포 · API · dApp이 같은 언어를 씁니다

웹 dApp은 REST API를 그대로 호출합니다. 패키지 경계와 DB 스키마가 문서·데모·운영을 연결해, 무엇이 표준이고 무엇이 Mock인지 명확합니다.

Identity
  • POST /v1/oid4vp/request
  • POST /v1/oid4vp/verify

@midgo/oid4vp · @midgo/trust-registry

Intent & Consent
  • POST /v1/intents/normalize
  • POST /v1/consents
  • POST …/sign

@midgo/verifiable-intent · @midgo/verifiable-consent

Payment & Proof
  • POST /v1/payments/execute
  • POST /v1/receipts
  • POST /v1/proofs/anchor

payments · receipts · proof_anchors

Agents & Disputes
  • POST /v1/agents/risk/evaluate
  • GET /v1/disputes/:tradeId

@midgo/agent-identity · audit_logs

랜딩은 소개, dApp은 실행

판매자·구매자 역할별 화면과 전체 E2E 데모, 분쟁 증빙 체인까지 한 번에 확인할 수 있습니다.

FAQ

자주 묻는 질문

데모·파일럿 이용 시 가장 많이 받는 질문입니다.

  • 네. 브라우저에서 /app/demo로 전체 E2E를 실행할 수 있습니다. Mock VP와 sandbox PG로 운영 API와 동일한 경계를 체험합니다.

지금 바로 체험

3분 안에 전체 SafePay 플로우를 확인하세요

Mock VP·sandbox PG로도 운영과 같은 API 경계를 그대로 체험합니다. 판매자·구매자 역할을 나눠 실제 거래 흐름에 가깝게 시뮬레이션할 수 있습니다.