v0.0
멀티체인 지원 범위 및 우선순위 정의서¶
1. Executive Summary¶
본 문서는 D'CENT 엔터프라이즈 콜드월렛 커스터디 솔루션의 멀티체인 지원 전략을 정의한다. 엔터프라이즈 고객의 자산 포트폴리오 구성과 시장 진입 전략(Phase 1 GTM)을 기반으로 체인 확장 로드맵을 수립하고, 각 체인 유형별 서명 아키텍처와 에어갭 페이로드 포맷을 정리한다.
핵심 원칙: - 엔터프라이즈 고객의 실제 보유 자산 분포에 따른 우선순위 결정 - 체인 추가 시 에어갭 서명 플로우(airgap-signing-flow.md)의 4단계 파이프라인과 호환 필수 - Phase 5 체인 추상화 레이어(SYS-03) 설계를 위한 기능 요구사항 도출 - CLAUDE.md 기술 스택의 BIP/EIP 표준 준수
지원 체인 요약: | 단계 | 시기 | 체인 | 커버리지 | |------|------|------|----------| | Phase 1 (출시) | 0-6개월 | BTC, ETH, USDT, USDC | 기관 자산의 ~80% | | Phase 2 (확장) | 6-12개월 | Polygon, BSC, Arbitrum, Optimism | EVM 생태계 확장 | | Phase 3 (다각화) | 12-24개월 | Solana, Cosmos, Tron | 비EVM 체인 진입 |
2. 멀티체인 지원 전략 개요¶
2.1. 우선순위 결정 기준¶
| 기준 | 가중치 | 설명 |
|---|---|---|
| 기관 보유 비중 | 40% | 기관 투자자의 포트폴리오 내 해당 자산 비중 |
| 시가총액 | 20% | 시장 안정성 및 유동성 지표 |
| 규제 수용도 | 15% | 주요 시장(한국, EU, 미국)에서의 규제 인정 수준 |
| 기술 성숙도 | 15% | 서명 표준, 에어갭 호환 프로토콜의 성숙도 |
| D'CENT 기존 지원 | 10% | D'CENT 기존 펌웨어의 체인 지원 여부 |
2.2. Phase별 체인 확장 로드맵¶
Phase 1: 출시 (0-6개월) — 핵심 자산¶
| 체인 | 자산 | 기관 보유 비중 | 우선순위 점수 | 비고 |
|---|---|---|---|---|
| Bitcoin | BTC | ~45% | 4.8/5.0 | 기관 포트폴리오 최대 비중. ETF 승인 후 기관 수요 급증 |
| Ethereum | ETH | ~25% | 4.5/5.0 | 두 번째 기관 자산. DeFi/스테이킹 기반 |
| Ethereum | USDT (ERC-20) | ~15% | 4.3/5.0 | 기관 스테이블코인 보유 1위 |
| Ethereum | USDC (ERC-20) | ~10% | 4.2/5.0 | 규제 친화적 스테이블코인. MiCA Circle 준수 |
Phase 1 커버리지: 기관 자산의 약 80-90%
Phase 2: EVM 확장 (6-12개월) — L2 및 대체 EVM¶
| 체인 | 자산 | 우선순위 점수 | 비고 |
|---|---|---|---|
| Polygon | MATIC/POL, USDT, USDC | 3.8/5.0 | 한국 시장 높은 채택률, 낮은 수수료 |
| BNB Smart Chain | BNB, BUSD | 3.5/5.0 | 아시아 시장 점유율 높음 |
| Arbitrum | ARB, USDT, USDC | 3.4/5.0 | Ethereum L2 선두, 기관 DeFi 접근 채널 |
| Optimism | OP, USDT, USDC | 3.3/5.0 | Ethereum L2, Superchain 생태계 |
Phase 2 장점: EVM 호환 — Ethereum 서명 인프라 재사용 가능. 추가 개발 비용 최소화.
Phase 3: 비EVM 확장 (12-24개월) — 다각화¶
| 체인 | 자산 | 우선순위 점수 | 비고 |
|---|---|---|---|
| Solana | SOL | 3.0/5.0 | Ed25519 서명, 높은 TPS. 기관 관심 증가 |
| Cosmos | ATOM | 2.7/5.0 | IBC 생태계, Cosmos SDK 체인 다수 |
| Tron | TRX, USDT (TRC-20) | 2.5/5.0 | USDT 최대 전송 네트워크, 아시아 수요 |
Phase 3 도전: 각 체인별 독립적 서명 알고리즘 + 트랜잭션 포맷 구현 필요.
3. 체인 유형별 서명 아키텍처¶
3.1. UTXO 모델 (Bitcoin)¶
핵심 표준: | 표준 | BIP | 용도 | 상태 | |------|-----|------|------| | PSBT | BIP-174 (v0), BIP-370 (v2) | 에어갭 트랜잭션 서명 워크플로우 | 필수 구현 | | Schnorr 서명 | BIP-340 | 단일 키 및 집계 서명 기반 | 필수 구현 | | MuSig2 | BIP-327 | N-of-N 집계 Schnorr 서명 | 핵심 다중 서명 방식 | | MuSig2 PSBT 필드 | BIP-373 | PSBT 내 MuSig2 데이터 확장 | MuSig2 연계 필수 | | MuSig2 키 파생 | BIP-328 | 집계 키 결정적 파생 | 월렛 복구에 필요 | | Taproot | BIP-86 | Taproot 주소 파생 경로 | MuSig2 전제 | | HD 월렛 | BIP-44, BIP-84, BIP-86 | 키 파생 경로 | 필수 구현 |
서명 흐름 (MuSig2):
Round 1: Nonce 교환
서명자 1 → nonce_1 공개
서명자 2 → nonce_2 공개
...
서명자 N → nonce_N 공개
Round 2: 부분 서명 생성
각 서명자: partial_sig_i = sign(message, secret_key_i, aggregated_nonce)
서명 집계:
final_sig = aggregate(partial_sig_1, ..., partial_sig_N)
→ 단일 Schnorr 서명 (64 bytes)
→ 온체인에서는 단일 서명으로 보임 (프라이버시 보장)
에어갭 페이로드:
- PSBT v2 (BIP-370): 역할 기반 워크플로우 지원 (Creator, Updater, Signer, Combiner, Finalizer)
- UR Type: crypto-psbt (Blockchain Commons UR 표준)
- MuSig2 데이터: BIP-373 PSBT 필드로 participant keys, public nonces, partial signatures 포함
PSBT 역할 매핑:
| PSBT 역할 | D'CENT 컴포넌트 | 수행 단계 |
|---|---|---|
| Creator | 온라인 대시보드 | Request |
| Updater | 온라인 대시보드 | Request (UTXO, 경로 정보 추가) |
| Signer | D'CENT X 콜드월렛 (SE) | Sign |
| Combiner | 오프라인 앱 / 대시보드 | Sign/Broadcast |
| Finalizer | 온라인 대시보드 | Broadcast |
| Extractor | 온라인 대시보드 | Broadcast (최종 TX 추출) |
3.2. EVM 모델 (Ethereum 및 호환 체인)¶
핵심 표준: | 표준 | 식별자 | 용도 | 상태 | |------|--------|------|------| | EIP-712 | Ethereum | 구조화 데이터 해싱 및 서명 | 필수 구현 | | ERC-4337 | Ethereum | Account Abstraction (스마트 컨트랙트 월렛) | Phase 2 고려 | | RLP | Ethereum | 트랜잭션 직렬화 | 필수 구현 | | EIP-1559 | Ethereum | Type 2 트랜잭션 (maxFeePerGas) | 필수 구현 |
서명 흐름 (EOA 기반):
1. 트랜잭션 구성 (대시보드)
- to, value, data, gasLimit, maxFeePerGas, maxPriorityFeePerGas, nonce, chainId
2. EIP-712 TypedData 해싱
- domainSeparator + structHash → signable hash
3. ECDSA 서명 (콜드월렛 SE)
- secp256k1 커브
- 서명값: (v, r, s) — 65 bytes
4. RLP 인코딩 (대시보드)
- Type 2 트랜잭션 직렬화
EVM 다중 서명 — Smart Contract Multisig (Safe 기반):
1. Safe 트랜잭션 구성 (대시보드)
- Safe TX Hash 계산: EIP-712 기반 구조화 해시
2. 각 서명자 개별 서명 (콜드월렛)
- safeTxHash에 대한 ECDSA 서명
- 각 서명은 독립적 (에어갭 호환)
3. 서명 수집 및 실행 (대시보드)
- M개 서명 수집 후 execTransaction() 호출
- 가스비 지불 계정 설정
에어갭 페이로드:
- EIP-712 TypedData JSON 구조
- UR Type: crypto-sign-request (범용) 또는 커스텀 UR Type 정의 (Phase 5)
- 페이로드 크기: 일반 전송 ~200-500 bytes, 컨트랙트 호출 ~1-10 KB
EVM L2 체인 확장 시 차이점:
| 항목 | Ethereum L1 | Polygon | Arbitrum | Optimism |
|---|---|---|---|---|
| Chain ID | 1 | 137 | 42161 | 10 |
| 서명 알고리즘 | ECDSA (동일) | ECDSA (동일) | ECDSA (동일) | ECDSA (동일) |
| Gas 모델 | EIP-1559 | EIP-1559 | L2 Gas + L1 Data Fee | L2 Gas + L1 Data Fee |
| 추가 구현 | - | - | L1 Data Fee 추정 | L1 Data Fee 추정 |
핵심: 서명 알고리즘과 트랜잭션 포맷은 동일 — Chain ID와 Gas 추정만 차별화. Phase 2 확장 비용 최소화.
3.3. EdDSA 모델 (Solana 등 — Phase 3)¶
핵심 사항: | 항목 | 내용 | |------|------| | 서명 알고리즘 | Ed25519 (Edwards-curve DSA) | | 키 파생 | BIP-44 m/44'/501'/0'/0' (SLIP-0044 Coin Type 501) | | 트랜잭션 포맷 | Solana Transaction v0 (Message + Signatures) | | 다중 서명 | 온체인 Multisig 프로그램 (Squads Protocol 등) |
구현 고려사항: - Ed25519는 secp256k1과 다른 커브 — SE 펌웨어에 별도 구현 필요 - Solana 트랜잭션의 Account 모델이 UTXO/EVM과 상이 - Blockhash 유효 기간 (~60초) — 에어갭 서명 시 시간 제약 존재 - 해결 방안: Durable Nonce 사용 (Blockhash 대신 Nonce Account 참조)
4. 체인별 트랜잭션 포맷 요약 테이블¶
| 항목 | Bitcoin | Ethereum (EVM) | Solana |
|---|---|---|---|
| 서명 알고리즘 | Schnorr (BIP-340) / ECDSA | ECDSA secp256k1 | Ed25519 |
| 주소 체계 | bc1p... (Taproot), bc1q... (SegWit) | 0x... (20 bytes, EIP-55 checksum) | Base58 (32 bytes public key) |
| 트랜잭션 모델 | UTXO | Account | Account |
| 수수료 모델 | sat/vByte (RBF 지원) | Gas (EIP-1559 base + tip) | Lamports (고정 기반) |
| 다중 서명 방식 | MuSig2 (BIP-327) | Smart Contract (Safe) | 온체인 프로그램 (Squads) |
| 에어갭 페이로드 | PSBT (BIP-174/370) | EIP-712 TypedData | Custom Serialization |
| UR 인코딩 | crypto-psbt | crypto-sign-request | 커스텀 정의 필요 |
| 키 파생 경로 | m/86'/0'/0' (Taproot) | m/44'/60'/0'/0 | m/44'/501'/0'/0' |
| 확인 블록 수 | 1-6 | 12-64 | 즉시 (Finality ~400ms) |
| 에어갭 구현 난이도 | 낮음 (PSBT + UR 표준화) | 중간 (EIP-712 표준화) | 높음 (커스텀 필요) |
5. 체인 추상화 원칙¶
Phase 5 System Architecture Design에서 체인 추상화 레이어(SYS-03)를 설계할 때 적용할 기능 요구사항을 정의한다.
5.1. 추상화 레이어 인터페이스 요구사항¶
ChainAdapter Interface:
├── getChainInfo() → ChainMetadata (chainId, name, nativeCurrency)
├── createUnsignedTx() → UnsignedTransaction (체인별 직렬화)
├── parseSignedTx() → ParsedTransaction (서명 검증 후 파싱)
├── broadcastTx() → TxHash (체인 전파)
├── estimateFee() → FeeEstimate (수수료 추정)
├── getBalance() → Balance (잔액 조회)
├── getTransactionStatus() → TxStatus (확인 상태)
├── validateAddress() → boolean (주소 유효성 검증)
├── getDerivationPath() → string (BIP-44 경로)
└── encodeForAirgap() → AirgapPayload (UR 인코딩 또는 커스텀)
5.2. 체인 유형별 어댑터¶
| 어댑터 | 대상 체인 | 공유 로직 | 체인별 구현 |
|---|---|---|---|
| UTXOAdapter | Bitcoin | PSBT 생성/파싱, UR 인코딩 | UTXO 선택, 수수료 산정, Taproot 스크립트 |
| EVMAdapter | Ethereum, Polygon, BSC, Arbitrum, OP | RLP 인코딩, EIP-712, ABI | Chain ID, Gas 모델, L2 Data Fee |
| EdDSAAdapter | Solana, Cosmos | - | 트랜잭션 직렬화, Account 모델, Nonce 관리 |
5.3. 설계 원칙¶
- 단일 인터페이스: 모든 체인이 동일한 ChainAdapter 인터페이스를 구현하여, 상위 레이어(정책 엔진, 대시보드 UI)가 체인에 무관하게 동작
- 플러그인 아키텍처: 새 체인 추가 시 어댑터 구현만으로 확장 가능 — 코어 로직 수정 불필요
- 에어갭 호환: 모든 어댑터의
encodeForAirgap()출력이 QR(UR) 또는 USB-C로 전달 가능해야 함 - SE 서명 추상화: 콜드월렛 SE가 체인별 서명 알고리즘(ECDSA, Schnorr, Ed25519)을 지원하되, 상위 레이어는 서명 알고리즘을 알 필요 없음
6. 스테이블코인 특별 고려사항¶
6.1. ERC-20 토큰 서명 패턴¶
스테이블코인(USDT, USDC)은 ERC-20 토큰으로, ETH 네이티브 전송과 다른 서명 패턴을 가진다.
전송 패턴:
Token Contract.transfer(to, amount)
- to: 수신 주소
- amount: 전송 금액 (토큰 단위, decimals 적용)
- msg.sender: 송신자 (= 서명자 주소)
- Gas: ETH로 지불 (토큰이 아닌 네이티브 코인)
approve/transferFrom 패턴 (위임 전송):
1. Token Contract.approve(spender, amount)
- 특정 주소에 토큰 인출 권한 부여
- 엔터프라이즈에서 주의: 무제한 approve 금지
2. Token Contract.transferFrom(from, to, amount)
- 승인된 금액 내에서 위임 전송
6.2. 스테이블코인 관리 정책¶
| 항목 | 정책 |
|---|---|
| approve 금액 | 필요 금액만 정확히 승인 (unlimited approve 금지) |
| Gas 관리 | ETH 잔액 자동 확인 — Gas 부족 시 사전 경고 |
| Decimals | USDT: 6 decimals, USDC: 6 decimals — 금액 표시 시 정확한 변환 필수 |
| 컨트랙트 검증 | 공식 토큰 컨트랙트 주소 하드코딩 — 위조 토큰 방지 |
| WYSIWYS 표시 | 콜드월렛에서 토큰명, 수신 주소, 금액 모두 인간이 읽을 수 있게 표시 |
6.3. 멀티체인 스테이블코인¶
| 스테이블코인 | 지원 체인 | Phase |
|---|---|---|
| USDT | Ethereum (ERC-20), Tron (TRC-20), Polygon, BSC | Phase 1 (ERC-20), Phase 2 (Polygon, BSC), Phase 3 (Tron) |
| USDC | Ethereum (ERC-20), Polygon, Arbitrum, Optimism | Phase 1 (ERC-20), Phase 2 (L2) |
| DAI | Ethereum (ERC-20) | Phase 2 |
7. 컴플라이언스 매핑¶
| 제약조건 ID | 설명 | 충족 방식 |
|---|---|---|
| AC-TX-06 | 콜드/핫 월렛 자산 분리 관리 및 비율 모니터링 | 체인별 콜드/핫(웜) 월렛 잔액 모니터링 대시보드. 법적 요구 비율(한국: 고객 자산 80% 이상 콜드 보관) 자동 확인 |
| PRD-06 | 멀티체인 지원 범위 및 우선순위 정의 | 본 문서 전체 — Phase별 로드맵 및 체인별 서명 아키텍처 정의 |
8. 리스크 및 고려사항¶
8.1. 기술 리스크¶
| 리스크 | 영향 | 완화 방안 |
|---|---|---|
| SE 칩의 Ed25519 미지원 | Solana 등 Phase 3 체인 지연 | Phase 6 펌웨어 요구사항에서 SE 역량 확인 필수 |
| MuSig2 구현 복잡성 | BTC 다중 서명 출시 지연 | Ledger Bitcoin App v2.4.0 구현 참조, 단계적 구현 |
| L2 Gas 추정 불확실성 | 트랜잭션 실패 또는 과다 수수료 | L1 Data Fee 오라클 연동, 여유분 포함 추정 |
| Solana Blockhash 만료 | 에어갭 서명 시간 초과 | Durable Nonce 필수 적용 |
8.2. 사업 리스크¶
| 리스크 | 영향 | 완화 방안 |
|---|---|---|
| 체인 지원 경쟁 (Fireblocks 150+) | 기관 고객 이탈 | 핵심 자산(BTC/ETH/스테이블코인) 완성도 우선, 체인 수 경쟁 회피 |
| 규제 변화로 특정 체인 제한 | 지원 체인 조정 필요 | 모듈화 아키텍처로 체인 비활성화 용이 |
| 스테이블코인 규제 강화 (MiCA) | USDT 사용 제한 가능 | USDC(MiCA 준수) 우선 지원, USDT는 시장별 선택적 |
본 문서는 Phase 3 Core Product Design의 일부로, 에어갭 서명 플로우(airgap-signing-flow.md) 및 다중 서명 워크플로우(multisig-workflow.md)와 긴밀히 연계된다. 체인별 서명 알고리즘이 에어갭 페이로드 포맷(PSBT, EIP-712)을 결정하므로, 본 문서의 체인 아키텍처는 서명 플로우 설계의 필수 입력이다.
관련 문서¶
- 에어갭 트랜잭션 서명 플로우 설계서 -- 제품 설계
- 감사 추적 체계 설계서 -- 제품 설계
- 컴플라이언스 리포팅 기능 정의서 -- 제품 설계
- 재해 복구 및 키 백업 절차 설계서 -- 제품 설계
- 키 세레모니 워크플로우 설계서 -- 제품 설계
- M-of-N 다중 서명 승인 워크플로우 설계서 -- 제품 설계
- 운영 시나리오 문서 -- 제품 설계
- 트랜잭션 정책 엔진 기능 정의서 -- 제품 설계
- RBAC 역할 체계 정의서 -- 제품 설계
- 화이트리스트 주소 관리 정책 설계서 -- 제품 설계