콘텐츠로 이동

v0.0

트랜잭션 정책 엔진 기능 정의서

1. Executive Summary

본 문서는 D'CENT 엔터프라이즈 콜드월렛 커스터디 솔루션의 트랜잭션 정책 엔진을 설계한다. 정책 엔진은 트랜잭션 생성 시점부터 서명 시점까지 자동으로 규칙을 평가하여, 정책 위반 트랜잭션을 차단하거나 상위 승인으로 에스컬레이션하는 핵심 거버넌스 컴포넌트이다.

핵심 역할: - 트랜잭션의 사전 검증 (금액, 주소, 시간, 자산 유형 기반) - 정책 위반 시 차단 또는 상위 쿼럼 에스컬레이션 - 정책 변경의 버전 관리 및 감사 추적 - RBAC 역할 컨텍스트와 연동한 조건부 정책 평가

정책 평가 시점 (3중 방어): | 시점 | 컴포넌트 | 목적 | |------|----------|------| | (1) Request | 온라인 대시보드 | 사전 차단 — 정책 위반 TX 생성 방지 | | (2) Sign | 오프라인 앱 | 이중 검증 — 에어갭 전달 전 재확인 | | (3) Hardware | 콜드월렛 SE | 최종 방어 — Phase 4 DIF-02 범위 |


2. 정책 엔진 개요

2.1. 아키텍처 위치

Initiator ──TX 생성──▶ [정책 엔진 (1차)] ──통과──▶ 승인 요청
                            │
                            ├─ 위반: 차단 + 사유 반환
                            └─ 에스컬레이션: 상위 쿼럼 요구

승인 완료 ──서명 요청──▶ [정책 엔진 (2차)] ──통과──▶ 에어갭 서명
                            │
                            └─ 위반: 서명 거부 (정책 변경 감지 시)

(Phase 4) 에어갭 서명 요청 ──▶ [SE 정책 엔진 (3차)] ──통과──▶ SE 서명
                                      │
                                      └─ 위반: 하드웨어 서명 거부

2.2. 정책 평가 순서 및 단락 평가

TX 수신
    │
    ▼
[1] 화이트리스트 주소 검증 ──실패──▶ 즉시 차단 (SHORT-CIRCUIT)
    │ 통과
    ▼
[2] 자산 유형 필터 ──차단 자산──▶ 즉시 차단 (SHORT-CIRCUIT)
    │ 통과
    ▼
[3] 금액 제한 검증 ──초과──▶ 에스컬레이션 또는 차단
    │ 범위 내
    ▼
[4] 시간 기반 제한 ──시간 외──▶ 차단 또는 지연 큐
    │ 시간 내
    ▼
[5] 확장 규칙 (수신자 카테고리, 지리적 제한 등)
    │ 통과
    ▼
정책 통과 → 승인 요청 생성

단락 평가(Short-Circuit): 화이트리스트 미등록 또는 차단 자산은 후속 규칙 평가 없이 즉시 차단. 성능 최적화 + 명확한 거부 사유 반환.


3. 정책 규칙 유형

3.1. 금액 제한 (Amount Limit)

제한 유형 설명 기본값 (예시)
건당 한도 단일 TX 최대 금액 $50,000
일간 한도 24시간 내 누적 전송 금액 $200,000
주간 한도 7일 내 누적 전송 금액 $1,000,000
월간 한도 30일 내 누적 전송 금액 $5,000,000

차등 한도 체계:

조건 건당 한도 승인 쿼럼 비고
소액 (Tier 1) < $10,000 2-of-3 일상 운영
중액 (Tier 2) $10,000 - $100,000 3-of-5 정기 지급
고액 (Tier 3) $100,000 - $1,000,000 4-of-5 + Admin 사전 승인 대형 이체
초고액 (Tier 4) > $1,000,000 5-of-5 + Super Admin 최고 수준 통제

한도 초과 처리:

건당 한도 초과:
  ├─ Tier 내 초과: 상위 Tier 쿼럼으로 에스컬레이션
  └─ 최고 Tier 초과: 차단 + Super Admin 알림

누적 한도 초과:
  ├─ 일간 한도 도달 → 추가 TX 차단 (익일 자동 초기화)
  ├─ 주간 한도 도달 → Admin 한도 해제 승인 필요
  └─ 월간 한도 도달 → Super Admin 승인 필요

역할별 한도 차등: 각 역할(Initiator 기준)과 월렛 유형별로 독립적 한도 설정 가능. Admin이 정책에서 정의.

자산 유형별 한도: - BTC, ETH: USD 환산 기준 (실시간 가격 참조) - 스테이블코인: 액면가 기준 (1:1) - 환산 가격 소스: 다중 오라클 중위값 (단일 소스 조작 방지)

3.2. 화이트리스트 주소 (Whitelist Address)

원칙: Deny-by-Default — 화이트리스트에 등록되지 않은 주소로의 전송은 전면 차단.

정책 엔진 연동:

TX 수신 → 수신 주소 추출
    │
    ▼
화이트리스트 검증 (whitelist-management.md 참조)
    ├─ 등록 + 활성: 통과
    ├─ 등록 + 쿨다운 중: 차단 (잔여 쿨다운 시간 표시)
    ├─ 등록 + 비활성: 차단 (비활성 사유 표시)
    └─ 미등록: 차단 + 화이트리스트 등록 안내

내부 주소 예외: 기업 내부 월렛 간 전송(whitelist-management.md의 내부 주소)은 간소화된 화이트리스트 검증 적용.

3.3. 시간 기반 제한 (Time-Based Restriction)

규칙 유형 설명 기본값
영업시간 제한 지정 시간대에만 TX 허용 월-금 09:00-18:00 KST
쿨다운 기간 연속 TX 간 최소 대기 시간 10분
블랙아웃 기간 특정 날짜/시간대 전송 금지 공휴일, 감사 기간
긴급 예외 긴급 TX는 시간 제한 해제 Admin 승인 필수

처리 흐름:

시간 외 TX 수신:
    ├─ 일반 TX: 차단 + "영업시간 내 재요청" 안내
    ├─ 예약 TX: 지연 큐에 등록 → 영업시간 도래 시 자동 처리
    └─ 긴급 TX: 시간 제한 해제 (Admin 승인 + 사후 감사)

3.4. 자산 유형 필터 (Asset Type Filter)

규칙 설명
허용 자산 목록 전송 가능한 자산 유형 명시적 지정 (BTC, ETH, USDT, USDC 등)
차단 자산 목록 전송 불가 자산 유형 지정 (미승인 토큰, 위험 자산)
자산별 정책 특정 자산에 대해 별도 정책 적용 (예: USDT 전용 월렛, BTC 한도 별도)

스테이블코인 전용 정책 예시: - USDT/USDC: 일반 한도의 2배 (법정화폐 대체 역할) - approve() 호출: 필요 금액만 정확히 승인 (unlimited approve 금지)

3.5. 확장 규칙

규칙 설명 구현 시기
수신자 카테고리 내부(같은 기업)/외부(제3자) 구분 → 외부 전송 시 추가 승인 Phase 3 (기본)
지리적 제한 Travel Rule 연계 — 특정 국가/관할권 수신자 제한 Phase 5 (AC-GV-03)
네트워크 수수료 상한 Gas 가격이 임계값 초과 시 TX 보류 또는 경고 Phase 3 (기본)
반복 패턴 감지 동일 주소로 짧은 간격 반복 전송 감지 → 알림 Phase 5 (AC-AU-05)

4. 정책 조합 로직

4.1. AND/OR 조합

조합 유형 설명 예시
AND (전체 충족) 모든 조건을 충족해야 통과 금액 < $50K AND 화이트리스트 등록 AND 영업시간 내
OR (하나 이상) 하나 이상의 조건 충족 시 통과 내부 주소 OR Admin 사전 승인

기본 정책 구조:

정책 그룹 = {
  rules: [
    { type: "whitelist", mode: "AND" },      // 필수
    { type: "asset_filter", mode: "AND" },   // 필수
    { type: "amount_limit", mode: "AND" },   // 필수
    { type: "time_restriction", mode: "AND" } // 필수
  ],
  exceptions: [
    { type: "emergency_override", requires: "admin_quorum" }
  ]
}

4.2. 우선순위 충돌 해결

원칙 설명
명시적 > 묵시적 명시적으로 정의된 규칙이 기본값보다 우선
거부 > 허용 (Deny-by-Default) 허용 규칙과 거부 규칙이 충돌하면 거부 적용
좁은 범위 > 넓은 범위 월렛별 정책 > 전사 정책
최신 > 이전 동일 범위의 정책이 충돌하면 최신 버전 적용

4.3. 정책 예외 처리 (Emergency Override)

정책 위반 TX (긴급 사유)
    │
    ▼
긴급 오버라이드 요청
 - 사유 입력 필수
 - 관리자 쿼럼 승인 (현재 정책의 Admin 수 이상)
    │
    ▼
오버라이드 승인
 - 정책 평가 건너뜀
 - TX 처리 진행
    │
    ▼
사후 의무:
 - 감사 로그에 오버라이드 사유, 승인자, 타임스탬프 기록
 - 24시간 내 Super Admin에게 보고
 - 72시간 내 사후 감사 완료

5. 정책 관리 워크플로우

5.1. 정책 CRUD (AC-GV-02)

생성:

Admin이 정책 생성 요청
 - 정책명, 적용 범위 (전사/월렛별/역할별), 규칙 구성
    │
    ▼
Admin 쿼럼 승인 (최소 2명)
    │
    ▼
정책 활성화 → 즉시 적용
    │
    ▼
감사 로그 기록 (정책 생성 이벤트, 규칙 상세, 승인자)

수정:

Admin이 정책 수정 요청
    │
    ▼
변경 영향 분석 (정책 시뮬레이션)
 - 최근 30일 TX 데이터로 영향도 시뮬레이션
 - "이 변경이 적용되었다면 N건의 TX가 차단되었을 것" 보고
    │
    ▼
Admin 쿼럼 승인
    │
    ▼
버전 업데이트 (이전 버전 보존)
    │
    ▼
감사 로그 기록 (변경 diff, 영향 분석 결과)

삭제:

Admin이 정책 삭제 요청
    │
    ▼
영향 분석: 해당 정책 제거 시 보호 범위 축소 경고
    │
    ▼
Admin 쿼럼 승인 + Super Admin 확인 (삭제는 고위험)
    │
    ▼
정책 비활성화 (소프트 삭제 — 감사 대비 보존)
    │
    ▼
감사 로그 기록

5.2. 정책 버전 관리 (AC-GV-01)

항목 설명
버전 체계 v1.0, v1.1, v2.0 (Major: 규칙 추가/삭제, Minor: 값 변경)
이력 보존 모든 버전 영구 보존 (감사 대비)
변경 diff 이전 버전과의 차이 자동 생성
활성 버전 항상 하나의 활성 버전만 존재
롤백 이전 버전으로 롤백 가능 (Admin 쿼럼 승인)

5.3. 정책 시뮬레이션

시뮬레이션 입력:
 - 변경하려는 정책 규칙
 - 시뮬레이션 기간 (최근 7일/30일/90일)

시뮬레이션 출력:
 - 영향받는 TX 수 (차단될 TX, 에스컬레이션될 TX)
 - 영향받는 사용자/역할
 - 주요 영향 사례 상세 (상위 5건)
 - 보안 향상/저하 평가

5.4. 정책 배포 흐름

대시보드에서 정책 변경 확정
    │
    ▼
(1) 대시보드 내부: 즉시 적용
    │
    ▼
(2) 오프라인 앱: 다음 연결 시 동기화
 - 에어갭 통신(QR/USB-C)으로 정책 데이터 전달
 - 정책 해시 비교 → 불일치 시 업데이트
    │
    ▼
(3) 콜드월렛: Phase 4 (DIF-02) 범위
 - 하드웨어 정책 엔진에 정책 룰셋 동기화
 - SE 내부 정책 검증 (최종 방어선)

6. 컴플라이언스 매핑

제약조건 ID 설명 충족 방식
AC-TX-03 트랜잭션 정책 엔진 4가지 기본 규칙 + 확장 규칙, 3중 평가 시점, 단락 평가
AC-TX-06 콜드/핫 월렛 자산 분리 모니터링 자산 유형 필터 + 월렛별 금액 한도로 분리 비율 통제
AC-GV-01 정책 버전 관리 및 변경 이력 모든 버전 영구 보존, 변경 diff, 롤백 지원
AC-GV-02 정책 변경 시 관리자 쿼럼 승인 CRUD 모든 작업에 Admin 쿼럼(최소 2명) 필수

본 문서는 Phase 3 Core Product Design의 일부로, RBAC 역할 체계(rbac-role-model.md)의 역할별 권한이 정책 엔진의 규칙 평가 시 컨텍스트로 사용된다. 화이트리스트 관리(whitelist-management.md)의 주소 검증이 정책 엔진의 화이트리스트 규칙과 직접 연동된다.


관련 문서