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)의 주소 검증이 정책 엔진의 화이트리스트 규칙과 직접 연동된다.
관련 문서¶
- 에어갭 트랜잭션 서명 플로우 설계서 -- 제품 설계
- 감사 추적 체계 설계서 -- 제품 설계
- 컴플라이언스 리포팅 기능 정의서 -- 제품 설계
- 재해 복구 및 키 백업 절차 설계서 -- 제품 설계
- 키 세레모니 워크플로우 설계서 -- 제품 설계
- 멀티체인 지원 범위 및 우선순위 정의서 -- 제품 설계
- M-of-N 다중 서명 승인 워크플로우 설계서 -- 제품 설계
- 운영 시나리오 문서 -- 제품 설계
- RBAC 역할 체계 정의서 -- 제품 설계
- 화이트리스트 주소 관리 정책 설계서 -- 제품 설계