규제 요건을 제품 게이트로 바꾸기
도입
규제 강의는 법률 용어를 외우는 시간이 아니다. DeFi product가 어떤 사용자에게 어떤 자산을 어떤 기능으로 제공하는지 분해하고, 그에 맞는 product gate를 만드는 과정이다. stablecoin, lending, perps, RWA, agent payment는 각각 다른 규제 표면을 가진다.
법안 상태와 시행일은 변동성이 크다. 그래서 강의 본문은 "어떤 법이 지금 무엇을 요구한다"를 단정하기보다, 규제 주장을 dated evidence로 관리하고 배포 전 재확인하는 방식을 가르친다. 제품 설계에는 jurisdiction allowlist, KYC/AML, transfer restriction, disclosure, admin governance gate가 들어간다.
학습 목표
- DeFi product가 payment, stablecoin, security, commodity, derivatives, RWA 중 어떤 표면을 갖는지 분류한다.
- 규제 상태와 법안 진행 상황을 dated evidence로 관리한다.
- launch checklist에 AML/KYC, transfer restriction, disclosure, admin governance gate를 넣는다.
개념 설명
이 DeFi 기능을 공개 출시할 수 있는가?
asset, jurisdiction, user type, disclosure가 모두 정의됐다
일부 지역 또는 사용자 유형만 허용된다
법안 상태, licensing, redemption obligation이 불명확하다
| 표면 | 질문 | 제품 게이트 |
|---|---|---|
| Stablecoin | issuer, reserve, redemption 의무가 있는가 | reserve disclosure, redeem policy |
| RWA | token이 증권 또는 fund interest인가 | transfer restriction, eligible investor |
| Perps | derivatives exposure인가 | jurisdiction block, risk disclosure |
| Agent payment | 누가 지출 권한을 갖는가 | spend cap, identity policy |
| Admin governance | 누가 parameter를 바꾸는가 | timelock, multisig, audit log |
코드로 확인하기
type LaunchContext = { jurisdiction: string; assetType: "stablecoin" | "rwa" | "perps" | "spot" | "agent_payment"; kycRequired: boolean; disclosureReady: boolean; adminTimelockHours: number;};export function launchGate(ctx: LaunchContext) { const failures: string[] = []; if (ctx.assetType === "rwa" && !ctx.kycRequired) failures.push("rwa requires eligibility check"); if (ctx.assetType === "perps" && ctx.jurisdiction === "restricted") failures.push("restricted derivatives region"); if (!ctx.disclosureReady) failures.push("missing risk disclosure"); if (ctx.adminTimelockHours < 24) failures.push("admin timelock too short"); return { ok: failures.length === 0, failures };}regulatory_evidence: claim_type: legal_status require: - official_url - jurisdiction - bill_or_article_number - checked_at - product_impact expires_in_days: 1첫 함수는 법률 판단을 대신하지 않는다. 제품 출시 전 빠뜨리면 안 되는 gate를 자동으로 실패시키는 장치다. YAML은 규제 주장이 얼마나 빨리 낡는지 보여준다.
강의 포인트
| 관점 | 확인할 질문 | 증거로 남길 것 |
|---|---|---|
| Asset | 무엇을 제공하는가 | asset classification |
| User | 누구에게 제공하는가 | user eligibility |
| Region | 어느 관할권인가 | jurisdiction matrix |
| Gate | 제품에서 무엇을 막거나 요구하는가 | policy test |
실무 예시
운영[BACKEND] RWA vault를 DeFi dashboard에 추가한다고 하자. contract가 ERC-4626을 따른다고 해서 누구나 예치할 수 있는 상품이 되는 것은 아니다. investor eligibility, transfer restriction, NAV disclosure, redemption terms가 필요할 수 있다.
perps나 stablecoin 관련 기능도 마찬가지다. 법안 이름을 본문에 넣을 때는 정확한 상태일과 공식 출처를 붙인다. 제품 gate는 법률 자문을 대체하지 않지만, engineering team이 launch 전에 확인해야 하는 항목을 빠뜨리지 않게 한다.
흔한 오해와 실패 시나리오
| 오해 | 실패 시나리오 | 교정 방식 |
|---|---|---|
| regulation은 법무팀 일이다 | 제품에 gate가 없어 제한 사용자를 막지 못한다 | policy test를 만든다 |
| 법안 이름만 알면 충분하다 | 상태와 시행일을 오해한다 | official tracker와 확인일을 남긴다 |
| KYC는 RWA만 필요하다 | payment, agent, derivatives에도 제한이 생길 수 있다 | 기능별 user type을 분류한다 |
| disclosure는 footer다 | 사용자가 위험을 이해하지 못한다 | action 전 문구와 기록을 남긴다 |
실습 과제
- 규제 표면 분류표 만들기: DeFi 기능 하나를 asset type, user type, jurisdiction, restricted action, required disclosure로 나눈다.
- Launch gate policy 작성하기: jurisdiction allowlist, transfer restriction, oracle/admin/audit gate가 없으면 launch를 실패시키는 policy를 작성한다.
완료 기준
- 기능 하나를 jurisdiction, user type, asset type, restricted action으로 분해했다.
- 법안·규제 상태를 live claim으로 취급하고 배포 전 재확인 규칙을 작성했다.
근거 자료
- 10 Regulation
- GENIUS Act S.1582
- ESMA MiCA