TRACE — Criminal Fund Flow Threat Model
어디까지 보이는가, 어디서 끊기는가, 무엇을 다음에 개발할 것인가
TRACE의 목표는 범죄자가 사용하는 “최적의 은닉 경로”를 추천하는 것이 아니다. 공개 수사자료와 실제 기술 구조에서 반복되는 laundering typology를 모델링하고, 각 단계에서 다음을 결정한다.
- 1무엇이 FACT 인가
- 2무엇이 INFERENCE 인가
- 3무엇이 EXTERNAL EVIDENCE 를 요구하는가
- 4TRACE가 어떤 기능을 개발해야 하는가
추측으로 연결하지 않는다.
TRACE never bridges an unknown segment with a guess. UNKNOWN stays UNKNOWN. OPAQUE stays unlinked.
- P1 Bitcoin foundation — index · spend · peel · cluster · coverage
- P2 Post-mix — CoinJoin 탐지 · ambiguity · collapse guard
- P3 Attribution + custodial boundary — provenance · validity
- CoinJoin — trail은 남고 소유 추론이 약해짐
- Custodial service — 내부 장부는 chain 밖
- XMR — OPAQUE 공개 증거로 lineage 불가
- P2P · OTC · bank — 관계·목적·현금화는 외부 기록
- 외부 기록이 명시한 txid / address에서만 재시작 (R13)
- anchor는 Bitcoin에서 재검증 → 새 trace
- anchor 없는 후보 생성은 제품 기능이 아님
상태 범례 · 근거 수준 · 절대 만들지 않는 등식
색만으로 구분하지 않는다. 모든 상태는 텍스트 label과 선 모양(실선·점선·이중선)을 함께 쓴다.
Evidence 상태 — 모든 주장에 하나가 붙는다
- FACTBitcoin Core에서 재현 가능한 데이터. txid · outpoint · script · value · height.
- INFERENCEheuristic·모델의 결론. 규칙과 근거를 같이 기록. FACT로 승격되지 않는다.
- ATTRIBUTION주소·cluster ↔ 서비스·주체 연결. provenance와 유효기간 필수.
- EXTERNAL EVIDENCEchain 밖 기록. 서비스 장부, 수사 회신, 압수 DB, endpoint artifact.
- CORRELATED CANDIDATE시간·금액 같은 상관만 있는 후보. 자동 승격 금지, 사람 검토 대상.
- UNKNOWN아직 모른다. 없다는 뜻이 아니다.
- OPAQUE SEGMENT데이터는 존재하지만 공개 증거로 lineage를 입증할 수 없는 구간 (예: XMR).
- NOT IMPLEMENTEDTRACE에 기능이 없다. 결과 없음 ≠ 대상 없음.
- NOT VERIFIED주장·설계는 있으나 검증 전.
- BOUNDARYcustodial · protocol 경계. 이 너머의 이동은 그 주체의 기록에 있다.
근거 수준 badge — typology 자체의 근거
- ◉Observed in public cases공개 수사·기소 자료에서 반복 관찰된 typology.
- ◇Technically possible기술적으로 가능. 공개 prevalence 자료 부족.
- ?Research hypothesisTRACE 연구 가설. 측정 전에는 detector가 아니다.
- ✓TRACE implemented코드에서 확인된 기능. 이 문서에서는 아직 부여하지 않음.
- ◷TRACE planned연구·설계 트랙에 있음.
- ○Not implemented계획 또는 연구 후보 단계.
“해커들이 주로 사용한다”, “가장 선호한다” 같은 표현은 쓰지 않는다. 공개 통계가 없으면 insufficient public prevalence data로 적는다. 개별 사건 출처 연결은 R14/R15 corpus에서 관리한다.
TRACE가 절대 만들지 않는 등식
Full Threat Map — 범죄 자금이 거칠 수 있는 typology
이 그림은 typology 지도이지 evidence graph가 아니다. 선은 “가능한 경로”이고, 선 모양은 그 구간에서 TRACE가 얻을 수 있는 최선의 근거 수준을 뜻한다. 단계는 생략·반복·순서 변경될 수 있다.
← 좁은 화면에서는 지도를 가로로 스크롤한다 →
Layering / intermediary wallets · Peel chain
범죄 BTC를 여러 주소와 여러 거래를 거쳐 이동시키는 기본 layering. Bitcoin에서는 여전히 transaction graph가 보인다.
CoinJoin 경계, custodial 경계, opaque segment, cashout 판단 모두 이 graph 위에서 결정된다. 여기의 coverage가 틀리면 이후의 “끊김” 판단도 틀린다.
- 무엇인가
- 여러 주소·거래로 자금을 분할·병합·이동하는 기본 layering. peel chain은 큰 출력 하나가 계속 다음 hop으로 이어지고 작은 출력이 하나씩 떨어져 나가는 반복 구조다.
- 세탁 과정에서의 역할
- 경로를 길게 만들어 수동 분석 비용을 키운다. 이후 모든 단계(mixer, 서비스, P2P)의 입구다.
- FACT Bitcoin에서 보이는 것
- 모든 tx, input/output, value, script type
- block height · time
- outpoint → spending tx 관계
- peel chain의 각 hop
- UNKNOWN Bitcoin에서 보이지 않는 것
- 주소의 실제 소유자
- change 출력이 누구 것인지 (→ INFERENCE)
- 여러 cluster가 같은 주체인지
- TRACE 현재 능력
- Bitcoin Core = canonical source. full index · spend index · clustering · peel-chain 완성도는 NOT VERIFIED
- TRACE가 개발해야 할 것
- full index · spend index (outpoint → spender)
- peel-chain detector (INFERENCE로 표시)
- clustering + CoinJoin collapse guard
- graph traversal (budget · 중단 사유 기록)
- coverage semantics — 어디까지 봤고 왜 멈췄는가
- 잘못 판단하면 안 되는 것
- change heuristic 결과를 FACT로 표시
- traversal이 멈춘 곳 = 자금의 종착점
- cluster = 한 사람
- index가 없어서 못 본 것 = 없음
- 주요 evidence source
- Bitcoin Core blocks · tx · script · witness, TRACE index, 피해 신고(“도난” 판정 근거)
- 관련 연구
- P1 · 번호 있는 연구 트랙 없음 (foundation)
CoinJoin / Mixer
tx·input·output은 모두 공개되어 있다. 사라지는 것은 “어느 output이 어느 input 주체의 것인가”라는 대응이다.
| 탐지 대상 | 구조적 특징 (detector 관점) | 공개 사용량 지표 — 출처 · 범위 · 시점 | TRACE 상태 | 주의 |
|---|---|---|---|---|
| Whirlpool ZeroLink 계열 · Samourai → Ashigaru 등 | 고정 denomination pool, mix tx마다 5 input / 5 output, fee는 premix(tx0)에서 | 223,597 tx · 22,450.63 BTC mixed (Samourai, 2018-07 ~ 2022-02) [1] DOJ: Whirlpool + Ricochet 합계 80,000 BTC 초과 (Ricochet는 CoinJoin 아님) [3] 2024-04 Samourai 중단 · 이후 재개된 Whirlpool은 “little activity” [2] | NOT VERIFIED 목표 | coordinator 운영 상태는 시점 의존 → valid_from/to. 중단 이후에도 과거 사건 데이터에는 계속 나온다 |
| Wasabi 1.x ZeroLink · Chaumian — WabiSabi 아님 | 대형 round, 고정 기준 denomination(+배수) 동일 금액 출력, coordinator fee 출력 | 32,251 tx · 205,030.21 BTC mixed (2018-07 ~ 2022-02) [1] 현재 inactive [2] | NOT VERIFIED 목표 | 과거 사건 데이터용. WabiSabi 수치와 같은 행에 합치지 않는다 |
| WabiSabi Wasabi 2.x · Ginger 등 | 다수 input/output, 표준 denomination 집합에서 반복되는 금액, variable amount | kruw.io가 mixed input의 99%, 최근 18개월 46,000 BTC 초과 · 2024-06 종료 이전 수준을 넘어섬 [2] NOT VERIFIED 2022-06 ~ 2026-10-27: 108,226 CoinJoin · input 명목량 2,310,458 BTC · 그중 value 기준 92.5%가 remix · fresh inflow 149,192 BTC [7] | NOT VERIFIED 목표 | “99%”는 Wasabi 2.x 안에서의 점유율이다. 명목량은 remix 중복을 포함하므로 신규 유입 규모는 fresh inflow로 본다 |
| JoinMarket | maker/taker 구조, 동일 금액 출력 + 참여자별 change | 유동성 추이(2015~)가 공개 통계 페이지에 차트로 있다 [6]. 누적 tx · BTC 총계는 확인하지 못함. P2P 구조라 탐지 coverage 자체가 한계 | NOT VERIFIED 목표 | change 출력은 참여자별로 남는다 — 그래도 소유 확정 아님 |
| Generic CoinJoin | 다수 input + 동일 금액 output 다수 | 구현별 분해 없음. 분석 업체의 전체 CoinJoin 지표는 heuristic 기반이고 시간에 따라 기준이 바뀐다 | NOT VERIFIED 목표 | batch payment와의 false positive 측정 |
| Centralized mixer | CoinJoin 아님. service deposit → pool → payout (custodial) | 공개 수치는 주로 수사·기소 자료: Helix 354,468 BTC 이상 (2014–2017) [4] · ChipMixer 30억 달러 초과 (2017–2023) [5] | P3 attribution 영역 | deposit과 payout 사이 chain link 없음 — 서비스 기록 필요. CoinJoin 수치와 같은 축으로 비교하지 않는다 |
비율은 “무엇으로 재느냐”에 따라 뒤집힌다
같은 기간 · 같은 논문에서 두 구현을 함께 측정한 유일한 공개 비교 (2018-07 ~ 2022-02, Wasabi 1.x vs Samourai Whirlpool — 둘 다 ZeroLink 계열) [1]
이유는 구조다. Whirlpool은 5×5 소형 tx + 무료 remix 반복으로 tx 수가 커지고, Wasabi 1.x는 round 하나에 많은 참여자가 모여 tx당 BTC가 크다. 두 값 모두 remix 중복이 빠졌는지는 [1]에서 확인이 필요하다.
명목량 ≠ 신규 유입 — WabiSabi (Wasabi 2.x) NOT VERIFIED
2022-06 ~ 2026-10-27 집계 [7]
TRACE 문서에서 “신규 유입 규모”는 누적 mixed volume이 아니라 fresh inflow로 쓴다. 명목량을 그대로 쓰면 이미 mix된 BTC를 여러 번 센다.
- 구현 간 현재 점유율은 표기하지 않는다. 계열마다 측정 단위(BTC · tx · input) · 기간 · 방법이 다르고, JoinMarket은 누적 총계를 확인하지 못했다. 서로 다른 수치를 나누면 근거 없는 비율이 된다.
- 사용량 ≠ 범죄 사용량. 이 수치는 전체 mixing 활동이다. 범죄 자금 비율은 별개 지표이고, 분석 업체 추정치는 heuristic 기반이라 TRACE의 evidence가 아니다.
- TRACE에 주는 의미: 사용량은 detector 개발 우선순위의 참고값일 뿐, 개별 사건에서 “이 계열일 확률”로 쓰지 않는다.
- [1] Ghesmati et al., Adoption and Actual Privacy of Decentralized CoinJoin Implementations in Bitcoin, arXiv:2109.10229 v3 (2022-09), block 530,500 ~ 725,345. Wasabi tx 수는 논문 안에서 30,251 / 32,251로 표기가 엇갈린다 — 본문 기여 절의 값을 사용. arxiv.org/abs/2109.10229
- [2] Svenda, Gavenda, Mavroudis, Hicks, CoinJoin ecosystem insights for Wasabi 1.x, Wasabi 2.x and Whirlpool coordinator-based privacy mixers, PoPETs 2026(2), pp. 557–592. coordinator 기반 구현 누적 391,000 BTC 초과(2018~). crocs.fi.muni.cz
- [3] U.S. DOJ SDNY, Samourai Wallet 기소 발표 (2024-04) · 선고 발표 (2025-11). justice.gov
- [4] U.S. DOJ, Helix 관련 자산 몰수 발표 (2026-01). justice.gov
- [5] U.S. DOJ, ChipMixer takedown 발표 (2023-03). justice.gov
- [6] crocs-muni, CoinJoin Statistics (Wasabi 2 · Wasabi 1 · Whirlpool · JoinMarket 유동성 차트, 2026-10-28 갱신). crocs-muni.github.io/coinjoin
- [7] 내부 리서치 메모가 인용한 coinjoin-stats.github.io 수치. 2026-10-29 이 문서 작성 시 해당 사이트는 404였고, [6]의 차트·explorer에서도 같은 수치를 찾지 못했다 → NOT VERIFIED. [6] 차트의 Wasabi 2 평균 remix rate는 대체로 80–95% 범위로, 방향은 일치한다(차트 판독).
조회일 2026-10-29. 수치는 각 출처의 주장·측정이고, TRACE가 재현한 값이 아니다.
- 무엇인가
- 여러 참여자의 input을 하나의 tx로 묶어 동일 금액 output을 만드는 협력 거래. Mixer는 서비스가 자금을 받아 다른 자금으로 지급하는 custodial 구조다.
- 세탁 과정에서의 역할
- input↔output 소유 대응을 모호하게 만든다. 이후 분기(서비스·P2P)로 가기 전 단계로 반복 관찰된다.
- FACT Bitcoin에서 보이는 것
- CoinJoin tx 자체와 구조
- input 집합 · 동일 금액 output
- postmix output의 이후 spend
- remix 반복
- UNKNOWN Bitcoin에서 보이지 않는 것
- input ↔ output 소유 대응
- 참여자 수 = 주체 수인지
- mixer 내부 pool 경로
- TRACE 현재 능력
- Whirlpool · WabiSabi · JoinMarket · generic 탐지와 postmix 분석은 현재/목표 항목. 완성도 NOT VERIFIED
- TRACE가 개발해야 할 것
- 계열별 detector · benchmark 분리. 순서: WabiSabi(현재 활동 · 규모) → JoinMarket → ZeroLink(Whirlpool · Wasabi 1.x — 과거 사건 데이터 때문에 필수 지원)
- CoinJoin detection completeness + FP 측정
- postmix candidate set (1개가 아니라 집합)
- ambiguity 표현 — UI와 report 모두
- clustering collapse guard: CoinJoin tx에 common-input 금지
- 잘못 판단하면 안 되는 것
- output 하나를 원래 행위자 소유로 선언
- CoinJoin input 전체를 한 cluster로 병합
- “N개 중 1개”를 ownership probability로 제시
- 주요 evidence source
- chain 구조(FACT), 압수된 coordinator/mixer DB, 압수 wallet 파일(endpoint), 수사 회신
- 관련 연구
- P2 · 번호 미배정
Custodial Instant Exchanger
deposit addressATTRIBUTION 필요
Marketing claim
“non-custodial”
서비스가 스스로 붙이는 category. 증거가 아니다.
TRACE가 묻는 질문
execution 중 deposited asset을 누가 통제하는가?
문서·기록으로 뒷받침되는 custody claim으로 답한다.
R11 custody claim 필드
legal_entity운영 법인 (모르면 UNKNOWN)
jurisdiction관할
custody_claim근거 문서가 붙은 수탁 주장
operational_status운영 · 중단 · 압수 등
sanctions_status제재 여부와 근거
cooperation_status수사 협조 이력
record_holder주문 기록을 가진 주체
valid_from · valid_to모든 claim은 기간이 있다
source documentsprovenance — 출처 없는 claim 금지
- 무엇인가
- 계정 없이 주소만으로 자산을 교환해 주는 서비스. 사용자가 서비스 deposit 주소로 보내면 서비스가 다른 자산을 지정 주소로 지급한다.
- 세탁 과정에서의 역할
- 자산 종류를 바꾸는 지점(chain hopping). privacy asset으로의 entry 경로 중 하나로 공개 자료에서 반복 관찰된다.
- FACT Bitcoin에서 보이는 것
- deposit 주소로의 tx
- 서비스 hot wallet 통합 패턴 (attribution 근거)
- BTC payout tx — 단, deposit과의 연결은 chain에 없음
- UNKNOWN Bitcoin에서 보이지 않는 것
- 주문 존재 · 교환 자산 · 목적지
- 내부 LP 경로
- deposit ↔ payout 매핑
- TRACE 현재 능력
- R11 설계 (custody claim) · R14 corpus 계획. 구현 상태 NOT VERIFIED
- TRACE가 개발해야 할 것
- evidence-backed custody claim + validity
- deposit address attribution with provenance
- CUSTODIAL BOUNDARY 종료 표시
- order record import → anchor (R13)
- 잘못 판단하면 안 되는 것
- 서비스가 XMR 지원 → 이 deposit이 XMR로 교환
- 비슷한 시각의 payout = 이 주문의 payout
- “non-custodial” 마케팅 = custody claim
- 주요 evidence source
- order record (order id ↔ deposit txid ↔ payout asset/address), 수사 회신, 압수 operator DB, 제재 공지
Atomic Swap (BTC ↔ XMR)
중앙 수탁 서비스의 deposit address가 필수가 아니다. 그래서 instant exchanger처럼 service attribution으로 접근할 수 없고, transaction structure + endpoint evidence로 접근해야 한다.
2-of-2는 Lightning channel funding, multisig custody, P2P escrow에도 흔하다. 구조 하나로 swap을 확정하지 않는다.
라벨된 sample(자체 생성 regtest/testnet + endpoint로 확인된 사례) → feature → Lightning·multisig·escrow corpus 대비 precision → 승격 여부 결정.
- 무엇인가
- 두 체인 사이에서 상대방 수탁 없이 암호학적 조건(2-of-2, timelock, adaptor signature)으로 교환을 강제하는 프로토콜.
- 세탁 과정에서의 역할
- 중앙 서비스 deposit 주소 없이 BTC를 privacy asset으로 바꾸는 경로. service attribution이 적용되지 않는 지점.
- FACT Bitcoin에서 보이는 것
- lock · redeem · cancel · refund · punish tx (각각 tx로서 FACT)
- script type · timelock · witness
- UNKNOWN Bitcoin에서 보이지 않는 것
- XMR leg 전체
- 상대방 identity
- 구조만으로 “swap이었다”는 확정
- TRACE 현재 능력
- NOT IMPLEMENTED Proposed research 단계
- TRACE가 개발해야 할 것
- BTC↔XMR Atomic Swap Structural Recognition
- 라벨 sample set · feature 정의
- FP 측정 (Lightning · multisig · escrow)
- candidate는 CORRELATED CANDIDATE로만 표시
- 잘못 판단하면 안 되는 것
- 2-of-2 = swap
- swap candidate = XMR 수령 확정
- refund가 안 보임 = swap 성공
- 주요 evidence source
- endpoint (swap history, wallet DB, application log), maker 측 기록, chain 구조
- 관련 연구
- Proposed · Corpus A–E R10 R12 R13
Eigenwallet · BasicSwap · Farcaster
셋 다 “중앙 수탁자 없이 서로 다른 체인의 코인을 원자적으로 교환한다”는 같은 계열이다. 하지만 제품 성격, 지원 자산, 네트워크, BTC 측 암호 구조가 다르다.
Eigenwallet 사용자와 BasicSwap 사용자가 바로 거래하는 구조가 아니다. 각자 주문 발견 · 네트워크 · 프로토콜 구현이 따로 있다.
protocol · coin pair · 구현 버전별로 fingerprint가 다를 수 있다. detector는 구현체별로 측정하고, 일반화는 측정 결과로만 판단한다.
| 항목 | Eigenwallet | BasicSwap DEX | Farcaster |
|---|---|---|---|
| 성격 | BTC↔XMR 특화 swap 앱 | atomic swap 위에 만든 범용 cross-chain DEX | atomic swap 프로토콜 · 노드 구현 |
| BTC↔XMR | 핵심 기능 | 지원 (양방향) | 핵심 연구 대상 |
| 인터페이스 | GUI (taker) + ASB (maker) | GUI · maker/taker 같은 클라이언트 | CLI · 노드 (microservice) |
| 역할 구조 | GUI 사용자 = BTC 제공 taker · XMR 제공 쪽은 ASB maker 운영 | maker / taker 모두 | maker / taker 노드 |
| 지원 자산 | BTC / XMR 중심 | BTC, XMR, LTC, BCH, DASH, DCR, FIRO, PIVX, WOW 등 | BTC / XMR 중심 |
| 주문 발견 | maker discovery · rendezvous | 분산 order book + SMSG | offer · peer |
| 네트워크 | libp2p · Tor | SMSG P2P network | 자체 peer / node 구조 |
| BTC 측 암호 구조 | 2-of-2 + timelock · adaptor signature 계열 | pair별로 다름: script 가능 체인은 HTLC (secret hash), XMR류는 adaptor signature | adaptor signature + arbitrating / accordant 체인 추상화 |
| 자산 수탁 | 중앙 수탁 없음 | BasicSwap은 메시지 · 주문 발견만 제공, 자산 교환은 각 chain의 swap | 중앙 수탁 없음 |
| 개발 활동 NOT VERIFIED | 활발 — 4.16.1 (2026-10-13) | 활발 — 2026-10까지 변경 | 저활동 — default branch 마지막 활동 2024-08 · README가 mainnet 사용 위험을 경고 |
| TRACE 관련 evidence | maker ASB API / DB (예: btc_redeem_txid, btc_punish_txid) · GUI swap history | 로컬 DB · SMSG 메시지 · HTLC preimage (→ R10) | 노드 DB · swapd / syncerd 로그 |
| TRACE 연구 역할 | Corpus A · 첫 측정 대상 | Corpus B · C · 구현 간 · pair 간 일반화 검증 | Corpus D · protocol reference / control sample |
이 열 순서는 사용 추천이나 안전성 순위가 아니다. TRACE 연구 순서이고, 기준은 현재 활동성 · BTC 측 상태 머신의 명확성 · sample 확보 가능성이다. 버전 · 날짜 · 지원 자산 · timelock 값은 2026-10 리서치 메모 기준이고, 이 문서에서 재검증하지 않았다.
Eigenwallet BTC 측 상태 머신 — 측정할 5종 transaction
각 tx의 존재는 FACT다. “이 tx들이 atomic swap이다”는 측정 전까지 CORRELATED CANDIDATE로만 표시한다. 압수된 maker ASB 기록에 txid가 있으면 R13 anchor가 된다.
Atomic Swap Structural Recognition Corpus
- AEigenwalletBTC 측 5종 tx (lock · redeem · cancel · refund · punish) 수집 · 상태 머신 기준 feature 측정
- BBasicSwap BTC/XMRA와 같은 pair, 다른 구현 — 구현 간 fingerprint 차이 측정
- CBasicSwap HTLC pairsBTC↔LTC · BTC↔DASH 등 — HTLC 구조, preimage 처리는 R10 규칙을 따름
- DFarcaster referenceprotocol 설계 대조용 control sample — 사용자 행태 탐지 대상 아님
- EOrdinary Bitcoin decoys — 필수Lightning channel funding / close · 2-of-2 multisig custody · CSV timelock wallet · P2P escrow. 이것 없이는 precision을 말할 수 없다
Corpus A–D 각각을 Corpus E와 비교해 precision을 측정한 뒤에만 detector 승격 여부를 결정한다. 승격은 구현체 · pair 단위로 한다.
Atomic Swap vs Instant Exchanger vs P2P Escrow
세 구조는 “교환”이라는 결과는 같지만, TRACE가 접근하는 방법이 다르다.
| 구분 | 구조 | Custodian | KYC dependency | Bitcoin service address | Counterparty trust | Blockchain fingerprint | External records | TRACE detection method |
|---|---|---|---|---|---|---|---|---|
| Custodial instant exchanger | 서비스가 deposit을 받고 payout | 실행 중 서비스가 통제 — custody claim으로 판단 | 서비스 정책·관할에 따라 다름 | 있음 service-provided deposit address |
운영자 신뢰 | deposit · hot wallet 패턴 → attribution | order record (record holder = 서비스) | service attribution + R11 custody claim |
| Atomic swap | 프로토콜이 양측 lock/claim을 강제 | 필수 중앙 수탁자 없음 | 프로토콜 자체엔 없음 · maker/front-end는 별도 | 필수 아님 | 암호학 + timelock, liveness 필요 | 2-of-2 lock + timelock 경로 HYPOTHESIS | endpoint · maker 기록 | transaction structure + endpoint evidence |
| P2P escrow | peer 간 거래 + escrow/multisig | multisig 참여자 (arbitrator 포함 가능) — 단독 수탁 아님 | 플랫폼 KYC 없을 수 있음 · 결제수단 측 identity 노출 가능 | escrow가 BTC일 때만 | escrow + 평판 + arbitration | BTC escrow면 multisig deposit/payout 구조 | trade 기록 · 결제 기록 · chat | escrow structure + payment / endpoint evidence |
P2P — 세 가지 유형
DIRECT_P2P
- 상대방 신뢰 필요
- chain에서는 단순 transfer로 보일 수 있음
- 왜 거래했는지는 external evidence 없이는 모름
P2P_MARKETPLACE
- 플랫폼 KYC 없음 ≠ identity exposure 없음 — 결제수단·통신·endpoint에 남는다
ESCROW_P2P
- 상대방 신뢰 문제를 escrow·multisig가 줄인다
- escrow가 BTC면 구조가 chain에 남는다
- 무엇인가
- 중개 거래소 없이 개인 간 자산을 교환하는 거래. 직접 송금, marketplace, escrow 기반으로 나뉜다.
- 세탁 과정에서의 역할
- custodial 기록이 없는 교환·현금화 경로. privacy asset 이후 재진입 경로로도 쓰일 수 있다.
- FACT Bitcoin에서 보이는 것
- BTC transfer 자체
- BTC escrow면 multisig deposit/payout
- UNKNOWN Bitcoin에서 보이지 않는 것
- 거래 목적 · 상대방 · 반대 급부
- fiat 결제 여부
- marketplace 내부 trade 기록
- TRACE 현재 능력
- transfer 관측은 P1 기반에 의존. P2P 관계 증거 import는 R13 설계 NOT VERIFIED
- TRACE가 개발해야 할 것
- P2P_TYPE 구분 (DIRECT / MARKETPLACE / ESCROW)
- escrow 구조 인식 (BTC escrow인 경우)
- payment · chat · platform record → anchor
- 잘못 판단하면 안 되는 것
- P2P transfer = 관계 성립
- 관계 성립 = 현금화
- 수령자 = mule (자동 라벨 금지)
- 주요 evidence source
- platform trade 기록, 결제 기록, chat, 압수 wallet·app 데이터, 수사 회신
Haveno vs Bisq — 위협모델 비교
어느 쪽이 범죄자에게 유리한지 평가하는 표가 아니다. TRACE가 어디서 무엇을 볼 수 있는지 비교한다.
Bisq는 escrow가 Bitcoin 위에 있어 구조 분석이 가능하다. Haveno는 escrow가 Monero 위에 있어 공개 lineage 분석이 어렵고, endpoint와 외부 증거가 중심이 된다.
| 항목 | Haveno | Bisq |
|---|---|---|
| 중심 자산 | XMR | BTC |
| 네트워크 | Tor | Tor |
| 플랫폼 KYC | 없음 (non-KYC) | 없음 (non-KYC) |
| 거래 형태 | P2P | P2P |
| Escrow | XMR multisig escrow | Bitcoin multisig escrow |
| Public-chain lineage | OPAQUE 공개 lineage 분석 어려움 | FACT Bitcoin transaction graph 공개 |
| BTC 측에서 보일 수 있는 것 | BTC가 반대 급부일 때 peer 간 직접 송금으로 보일 수 있음 | escrow deposit/payout 구조 구체 fingerprint는 HYPOTHESIS |
| TRACE 접근 | endpoint · external evidence 중심 | structural analysis 가능 + external evidence |
| 핵심 evidence | 앱 데이터 디렉터리, trade 기록, dispute/arbitration 기록, 결제 기록 | chain 구조, 앱 데이터 디렉터리, trade 기록, 결제 기록 |
OTC broker / dealer
브로커는 여러 고객의 주문을 같은 inventory로 처리한다. 비슷한 시각·금액의 payout은 다른 고객의 것일 수 있다.
- 무엇인가
- 고객과 브로커/딜러가 장외에서 대량 교환하는 구조. 브로커는 자체 inventory, 다른 고객, liquidity provider로 반대 자산을 지급할 수 있다.
- 세탁 과정에서의 역할
- 자산 전환 · fiat 정산 지점. chain 위에서는 브로커 주소와의 송수신만 남는다.
- FACT Bitcoin에서 보이는 것
- 고객 → 브로커 주소 tx
- 브로커 주소 → 수령 주소 tx (있다면)
- attribution이 있으면 브로커 cluster
- UNKNOWN chain alone으로 알 수 없는 것
- 주문 목적
- 실제 고객
- 반대편 지급
- fiat settlement
- TRACE 현재 능력
- broker/order evidence import는 R13 설계 NOT VERIFIED
- TRACE가 개발해야 할 것
- broker ledger · order id → anchor import
- payout txid 검증 후 새 trace
- record holder · provenance 기록
- 잘못 판단하면 안 되는 것
- time + amount → 같은 주문
- 브로커 지급 = 범죄 수익 지급
- 브로커 고객 = 범죄 주체
- 주요 evidence source
- broker ledger, order id, payout txid, communication, seized database, law enforcement return
XMR / Privacy Asset
- 무엇인가
- 송수신자·금액·출력 연결을 기본적으로 숨기도록 설계된 privacy asset. 이 문서에서는 XMR을 대표로 다룬다.
- 세탁 과정에서의 역할
- transparent chain lineage를 공개 증거 수준에서 끊는 구간(chain hopping). 이후 다른 transparent asset으로 재등장할 수 있다.
- FACT Bitcoin에서 보이는 것
- entry 쪽 BTC tx (서비스·swap으로 가는 tx)
- exit 쪽 BTC tx (anchor가 주어졌을 때)
- OPAQUE 공개 증거로 입증되지 않는 것
- entry와 exit 사이 lineage
- XMR 내부 이동·보유 기간·분할
- entry 주체 = exit 주체 여부
- TRACE 현재 능력
- R12 sidecar 설계 · R13 anchor 설계 ◷planned · 구현 NOT VERIFIED
- TRACE가 개발해야 할 것
- OpaqueSegment sidecar (R12)
- entry/exit anchor를 각자 독립 근거로 기록
- UI: opaque 구간을 선 없이 표시
- 잘못 판단하면 안 되는 것
- XMR = off-chain / 없음
- XMR = coverage gap
- entry와 exit 사이 synthetic edge
- 시간·금액 유사 = 같은 자금
- 주요 evidence source
- exchanger order record, swap endpoint data, 압수 wallet, P2P/OTC 기록, 수사 회신
R12 · Opaque Segment
OpaqueSegment는 …
canonical trace 옆에 붙는 별도 기록. trace 결과를 바꾸지 않고, “이 구간은 공개 증거로 잇지 않는다”를 명시한다.
두 독립 anchor가 존재할 수 있다
entry만 있거나 exit만 있을 수 있다. 없는 쪽은 비어 있는 채로 둔다.
두 anchor를 잇는 관계는 외부 기록이 직접 말할 때만 RECORD_ASSERTED_LINK로 기록된다 (R13). 그때도 출처는 그 기록이며, chain FACT edge가 아니다.
R13 · External Evidence + Anchor Linker
허용되는 anchor 예
payout txid기록이 지급 tx를 명시
deposit address기록이 입금 주소를 명시
withdrawal address출금 대상 주소
order ID tied to tx주문이 txid와 함께 기록됨
seized operator record압수된 운영자 기록
law-enforcement return수사 회신
Anchor 규칙
RECORD_ASSERTED_LINK처리 흐름
검증 실패 → anchor는 NOT VERIFIED로 남고 trace를 열지 않는다.
Re-entry Candidate Engine을 만들지 않는 이유
- XMR 반대편에 anchor가 없다외부 기록이 아무 txid·address도 주지 않음
- 모든 exchanger payout을 검색한다면후보가 너무 많다
- 결국 남는 신호time proximity amount similarity
- R11에서 이미 결정time·amount 자동 상관은 하지 않는다
Cashout Boundary
CEX deposit = custodial boundary. 이 뒤의 이동은 거래소 내부 장부에 있다.
현금화 증거 사다리 — 각 단계는 별도 기록이 필요하다
- FACT + ATTR① deposit 관측tx + 주소 attribution
- EXTERNAL② 계정 식별거래소 회신
- EXTERNAL③ 거래 체결CEX trading record
- EXTERNAL④ fiat 출금withdrawal record
- EXTERNAL⑤ 은행 수령bank record
앞 단계가 뒤 단계를 증명하지 않는다. ①만 있으면 결론은 “custodial boundary 도달”이다.
- 무엇인가
- transparent asset이 거래소·수탁자로 들어가 fiat 또는 실물 자산으로 바뀌는 경계.
- 세탁 과정에서의 역할
- 범죄 수익을 실제 사용 가능한 가치로 바꾸는 마지막 단계. 동시에 KYC 기록이 존재할 가능성이 높은 지점.
- FACT Bitcoin에서 보이는 것
- deposit 주소로의 tx
- 거래소 hot wallet 이동 (attribution 근거)
- UNKNOWN Bitcoin에서 보이지 않는 것
- 계정 소유자
- 매매 · fiat 출금 여부
- 은행 계좌 · 실제 수익자
- TRACE 현재 능력
- R15 boundary 설계 ◷planned · 구현 NOT VERIFIED
- TRACE가 개발해야 할 것
- CUSTODIAL BOUNDARY 종료 표시 (cashout 아님)
- cashout claim은 기록 단계별로만
- record holder · 요청 대상 표시
- 잘못 판단하면 안 되는 것
- CEX deposit → fiat cashout
- 계좌 명의자 = 실제 수익자
- 자동 mule 라벨
- Fiat cashout 확인에 필요한 것
- CEX trading record, withdrawal record, bank record, seized database, law-enforcement response
Cross-chain / DEX / Bridge
그래서 BTC 밖 체인을 다루는 방법은 두 가지뿐이다.
A 직접 node / index 운영
- 체인마다 node·index·운영 비용
- R8에서 multi-chain 직접 지원 여부를 결정
- 결정 전에는 시작하지 않는다
B External evidence로 import 현재 추천 · 먼저
- 외부 체인 데이터를 source grade와 함께 가져온다 (R16)
- 출처 · 수집 시점 · 도구를 기록
- Bitcoin FACT와 같은 등급으로 가장하지 않는다
- 무엇인가
- BTC를 다른 체인 자산으로 바꾸는 DEX, bridge, protocol swap. 반대편 체인은 TRACE canonical source 밖에 있다.
- 세탁 과정에서의 역할
- 자산·체인을 바꿔 분석 도구의 coverage 경계를 넘긴다. 반대편이 transparent chain이면 다시 추적 가능하다.
- FACT Bitcoin에서 보이는 것
- vault/bridge 주소로의 BTC tx
- OP_RETURN memo 등 프로토콜 데이터 (annotation 대상)
- BTC로 나오는 outbound tx
- UNKNOWN Bitcoin에서 보이지 않는 것
- 반대편 체인의 실제 수령·이동
- 프로토콜 내부 처리
- TRACE 현재 능력
- Bitcoin 측만 canonical. 외부 체인 import는 R16 · 구현 NOT VERIFIED
- TRACE가 개발해야 할 것
- R9 THORChain annotation
- R16 external-chain facts (source grade)
- R8 multi-chain 결정 준비
- 잘못 판단하면 안 되는 것
- external chain data = Bitcoin FACT 등급
- bridge 주소로 송금 = 특정 체인 수령 확정
- 프로토콜 주소 = 사용자 attribution
- 주요 evidence source
- Bitcoin chain, 프로토콜 공개 endpoint, 외부 체인 explorer/node 데이터 (source grade 표시), 수사 회신
THORChain / protocol swap
precision을 측정한 뒤에 boundary로 승격할지 결정한다.
Vault pack에 보존할 것
endpoint어디서 가져왔나
observed_at언제 관측했나
height관측 시점 높이
chain대상 체인
vault type / statusvault 종류 · 상태
valid_from / valid_tovault 주소는 기간이 있다
범위
vault 주소는 사용자 주소가 아니다. memo의 목적지 값은 수령자 신원이 아니다.
Hashlock / Preimage
- facts + annotations only
- templates / swap boundary는 나중
- witness는 investigator 요청 시 candidate별 read
- K/H는 report에 항상
- preimage는 evidence package에만
UI 상태 — preimage
“읽지 못함”은 “공개 안 됨”이 아니다. UNKNOWN을 없음으로 표시하지 않는다.
구조 4종 한 화면 비교
신뢰 모델이 다르면, 남는 흔적과 TRACE의 접근 방법도 다르다.
- Trust model
- 실행 중 서비스 운영자를 신뢰
- Observable evidence
- service deposit tx · hot wallet 패턴 · 서비스 order record
- TRACE detection
- service attribution + custody claim (R11) → anchor (R13)
- Trust model
- 암호학 + timelock. 중앙 수탁자 필수 아님
- Observable evidence
- BTC lock / claim 경로 구조 · endpoint swap history
- TRACE detection
- structural candidate (FP 측정 후) + endpoint evidence
- Trust model
- escrow · 평판 · arbitration이 상대방 위험을 줄임
- Observable evidence
- BTC escrow면 multisig 구조 · platform · 결제 기록
- TRACE detection
- escrow structure + payment / endpoint evidence
- Trust model
- 상대방을 직접 신뢰
- Observable evidence
- 단순 transfer · chat · 결제 기록
- TRACE detection
- transfer는 FACT, 관계·목적은 external evidence only
실제 위협 시나리오 Matrix
각 행이 하나의 개발 scenario다. 테스트 케이스와 기능 우선순위를 정할 때 여기서 시작한다.
수사관이 확보하면 강력한 자료 — 그리고 FACT가 되는 범위
자료가 강력해도 그 자료가 말하는 범위까지만 FACT다. “이 기록이 존재하고 이렇게 말한다”와 “기록 내용이 사실이다”는 다르다.
Blockchain evidence
txidoutpointscriptwitnesstimelocktransaction graphFACT 범위: tx가 존재하고, 이 출력이 저 입력에서 소비되었다.
아님: 소유자 · 목적 · 동일 주체.
Service / operator evidence
order IDdeposit addresspayout txidaccount IDservice ledgerFACT 범위: 기록이 존재하고 이렇게 말한다. 명시된 txid·address는 chain에서 재검증한 뒤 anchor.
아님: 계정 = 자연인. 기록 내용의 정확성은 provenance에 의존.
Endpoint evidence
wallet filesswap historyapplication logslocal DBdevice artifactsFACT 범위: 압수 기기에 이 데이터가 있었다. 포함된 txid는 chain에서 재검증.
아님: 기기 사용자 = 특정 자연인 (별도 입증).
Communication evidence
chatemailorder messagesFACT 범위: 이 메시지가 오갔다. 의도·합의의 증거가 될 수 있다.
아님: 언급된 금액·주소 = 실제 이동. chain 검증 전에는 anchor 아님.
Financial evidence
bank transferCEX withdrawalpayment processor recordsFACT 범위: fiat 이동이 기록되어 있다. cashout 확인은 여기서만.
아님: 계좌 명의자 = 실제 수익자. 자동 mule 라벨 금지.
Bitcoin foundation
- full index
- spend index
- clustering
- peel-chain
- coverage correctness
모든 boundary · opaque · cashout 판단이 이 graph 위에 선다.
Post-mix analysis
- CoinJoin detection completeness — WabiSabi → JoinMarket → ZeroLink(필수 지원)
- postmix candidates
- ambiguity representation
- clustering collapse guards
잘못 처리하면 cluster 붕괴로 대량 오귀속 — 정확성 위험이 가장 크다.
Attribution + custodial boundary
- real attribution corpus
- custody claims
- validity periods
- provenance
- record-holder
대부분의 경로가 결국 서비스 경계에 닿는다. attribution 품질 = 결과 품질.
DEX / bridge / protocol boundaries
- THORChain R9
- cross-chain external evidence
- no automatic attribution
BTC 측 fact는 확보 가능. 반대편은 source-graded external.
Privacy asset / opaque segment
- R12
- no synthetic link
- explicit anchors
기능보다 금지 규칙이 핵심인 안전장치.
P2P / OTC external evidence
- R13
- broker / order evidence
- bank / payment evidence
- endpoint evidence
XMR 이후 재진입은 외부 기록에서 시작한다.
Atomic Swap structural recognition
- Corpus A Eigenwallet → B·C BasicSwap → D Farcaster reference
- Corpus E ordinary decoys (필수)
- transaction fingerprint research
- false-positive measurement
공개 prevalence 자료 부족 + FP 위험 → 측정이 먼저.
Native multi-chain indexing
- only after R8 decision
결정 전에는 B(external import)로 대응한다.
Research Roadmap
진행 상태(완료/진행 중)는 이 문서에서 검증하지 않았다. 번호는 기존 연구 트랙 기준이며, 새 후보는 번호를 강제로 정하지 않는다.
- R9THORChain memo / protocolannotation only · vault pack · OUT memo 측정→ 카드
- R10Hashlock / preimagefacts + annotations · witness on request→ 카드
- R11Custodial instant exchangerevidence-backed custody claim · 시간·금액 자동 상관 금지→ 카드
- R12Opaque segmentsidecar · no synthetic edge→ 카드
- R13External evidence + anchor linker명시된 anchor만 · 빈 쪽은 비움→ 카드
- R14Exchanger infrastructure corpusdeposit · hot wallet attribution + provenance · validity→ 카드
- R15Cashout / custodial boundarydeposit ≠ cashout · 기록 단계별 claim→ 카드
- R16External-chain factssource-graded import · Bitcoin FACT와 분리→ 카드
- ProposedAtomic Swap Structural Recognition CorpusCorpus A–E · 번호 미정 · decoy 대비 FP 측정 후 구현체·pair별 승격 결정→ 카드
- R8Decision gate: native multi-chainP8의 전제 조건→ 카드
These must remain ZERO
release 전 검사 항목. 하나라도 0이 아니면 결과를 내보내지 않는다.
- 0unsupported ownership assertions
- 0unsupported cross-opaque links
- 0automatically promoted re-entry candidates
- 0time+amount-only links
- 0automatic mule / person labels
- 0service-support-list → transaction asset inference
- 0CEX deposit → fiat cashout inference
- 0CoinJoin output → owner assertion
- 0P2P transfer → relationship assertion
- 0probability scores presented as ownership probability
TRACE 개발 전에 다시 확인할 10가지
체크 상태는 저장되지 않는다. 기능 하나를 시작할 때마다 처음부터 다시 본다. 0 / 10