코인조인(CoinJoin)
코인조인은 여러 사용자의 트랜잭션을 하나로 합쳐 누가 누구에게 보냈는지 추적을 어렵게 만드는 비트코인 프라이버시 기술입니다.
**코인조인(CoinJoin)**은 여러 사용자의 비트코인 트랜잭션 입력과 출력을 하나의 트랜잭션으로 결합하여, 외부 관찰자가 누가 누구에게 비트코인을 보냈는지 판별하기 어렵게 만드는 프라이버시 기술입니다. 비트코인 블록체인은 본질적으로 공개 원장(public ledger)이기 때문에, 프라이버시를 보호하려면 트랜잭션의 자금 흐름을 의도적으로 모호하게 만드는 기술이 필요합니다. 코인조인은 이 문제에 대한 가장 실용적이고 신뢰 최소화(trustless)된 해법 중 하나입니다.
코인조인의 탄생 배경
코인조인이라는 개념은 2013년 비트코인 코어 개발자 **그레고리 맥스웰(Gregory Maxwell)**이 비트코인 포럼(bitcointalk.org)에 게시한 글에서 처음 공식적으로 제안되었습니다. 맥스웰은 비트코인의 프라이버시 한계를 지적하면서, 여러 사용자가 자발적으로 트랜잭션을 결합하면 제3자를 신뢰하지 않고도 프라이버시를 크게 향상시킬 수 있다는 아이디어를 제시했습니다.
이 제안의 핵심 통찰은 비트코인 트랜잭션의 구조에 있습니다. 비트코인 트랜잭션은 여러 개의 입력(inputs)과 여러 개의 출력(outputs)을 가질 수 있으며, 프로토콜 차원에서 모든 입력이 반드시 같은 사람의 것일 필요가 없습니다. 즉, 서로 다른 사용자의 입력을 하나의 트랜잭션에 포함시키는 것이 기술적으로 완전히 합법적인 비트코인 트랜잭션입니다. 이 속성을 활용하면 소유 관계를 의도적으로 모호하게 만들 수 있습니다.
비트코인 프라이버시의 구조적 문제
비트코인은 종종 익명이라고 오해받지만, 실제로는 가명성(pseudonymous) 시스템입니다. 모든 트랜잭션은 블록체인에 영구적으로 기록되며, 누구나 열람할 수 있습니다. 이는 심각한 프라이버시 문제로 이어집니다.
UTXO 추적과 체인 분석
비트코인은 UTXO(Unspent Transaction Output) 모델을 사용합니다. 각 비트코인은 이전 트랜잭션의 출력으로 존재하며, 새 트랜잭션에서 입력으로 소비됩니다. 이 구조는 자금의 흐름을 트랜잭션에서 트랜잭션으로 연쇄적으로 추적할 수 있게 합니다. Chainalysis, Elliptic 같은 블록체인 분석 기업들은 이 UTXO 그래프를 분석하여 자금의 출처와 목적지를 추적합니다.
공통 입력 소유 휴리스틱
체인 분석의 가장 기본적인 가정은 **공통 입력 소유 휴리스틱(Common Input Ownership Heuristic, CIOH)**입니다. 이 휴리스틱은 하나의 트랜잭션에 포함된 모든 입력이 동일한 소유자의 것이라고 추정합니다. 일반적인 비트코인 사용에서 이 가정은 대부분 맞습니다. 사용자가 여러 UTXO를 합쳐서 하나의 결제를 할 때, 그 입력들은 모두 같은 지갑에서 나옵니다. 코인조인은 바로 이 휴리스틱을 무력화하기 위해 설계되었습니다.
클러스터링과 신원 연결
체인 분석 기업들은 CIOH를 기반으로 주소들을 **클러스터(cluster)**로 묶습니다. 같은 트랜잭션에 입력으로 사용된 주소들을 동일 엔터티(entity)로 분류하고, 이 클러스터에 하나의 실명이 연결되면(예: KYC 거래소에서의 출금) 해당 클러스터의 모든 트랜잭션 이력이 신원과 연결됩니다. 거래소 출금 주소 하나로부터 당신의 전체 비트코인 자산 규모, 거래 상대방, 소비 패턴까지 노출될 수 있습니다.
코인조인의 작동 원리
코인조인의 핵심 메커니즘은 놀라울 정도로 단순합니다. 여러 사용자가 각자의 입력(UTXO)과 출력(받을 주소)을 하나의 트랜잭션에 결합하되, 각자 자신의 입력에 대해서만 서명합니다.
기본 프로세스
- 참가자 모집: 여러 사용자가 코인조인에 참여하겠다고 등록합니다.
- 입력과 출력 제출: 각 참가자는 소비할 UTXO(입력)와 비트코인을 받을 새 주소(출력)를 제출합니다.
- 트랜잭션 구성: 코디네이터(또는 분산 프로토콜)가 모든 입력과 출력을 하나의 트랜잭션으로 조합합니다.
- 검증 및 서명: 각 참가자는 완성된 트랜잭션을 검증합니다. 자신의 출력이 올바르게 포함되어 있는지 확인한 후, 자신의 입력에 대해서만 서명합니다.
- 브로드캐스트: 모든 서명이 모이면 트랜잭션이 비트코인 네트워크에 전파됩니다.
이 과정에서 핵심적인 보안 속성은 각 참가자가 자신의 입력에 대해서만 서명한다는 것입니다. 코디네이터나 다른 참가자가 당신의 비트코인을 훔칠 수 없습니다. 트랜잭션에 당신의 출력이 포함되어 있지 않다면, 단순히 서명을 거부하면 됩니다.
외부 관찰자의 시점
완성된 코인조인 트랜잭션을 블록 익스플로러에서 보면, 예를 들어 5개의 입력과 5개의 출력이 있는 트랜잭션이 보입니다. 외부 관찰자는 어떤 입력이 어떤 출력과 대응하는지 알 수 없습니다. 5개의 입력과 5개의 출력이 있다면 이론적으로 5! = 120가지의 가능한 매핑이 존재하며, 참가자가 많을수록 익명성 집합(anonymity set)은 기하급수적으로 커집니다.
동일 금액 출력의 중요성
코인조인의 프라이버시 효과를 극대화하려면 **동일 금액 출력(equal-amount outputs)**이 핵심입니다.
만약 Alice가 0.3 BTC를 입력하고 Bob이 0.7 BTC를 입력한 뒤, 출력이 0.3 BTC와 0.7 BTC라면 어떤 입력이 어떤 출력과 대응하는지 금액만으로 추론할 수 있습니다. 이것은 코인조인의 프라이버시를 완전히 무력화합니다.
이를 방지하기 위해 효과적인 코인조인 구현체들은 모든 참가자의 출력 금액을 동일하게 맞춥니다. 예를 들어, 모든 참가자가 정확히 0.01 BTC의 출력을 받도록 설정합니다. 나머지 금액(거스름돈)은 별도의 변경 출력(change output)으로 돌아오는데, 이 변경 출력은 프라이버시가 약할 수 있으므로 다시 코인조인에 참여시키는 것이 권장됩니다.
이 동일 금액 방식은 익명성 집합의 크기를 결정합니다. 같은 금액의 출력이 10개라면, 각 출력이 특정 입력에서 왔을 확률은 1/10입니다. 이것이 바로 코인조인 라운드에 더 많은 참가자가 참여할수록 프라이버시가 강화되는 이유입니다.
주요 구현체
Wasabi Wallet: ZeroLink에서 WabiSabi로
Wasabi Wallet은 데스크톱 비트코인 지갑으로, 가장 대중적인 코인조인 구현체 중 하나입니다. 초기에는 아담 피클러(Adam Ficsor, nopara73)가 설계한 ZeroLink 프로토콜을 사용했습니다. ZeroLink는 차움리안 블라인드 서명(Chaumian blind signatures)을 활용하여 코디네이터조차 어떤 입력이 어떤 출력과 대응하는지 알 수 없도록 했습니다.
2022년부터 Wasabi는 WabiSabi 프로토콜로 전환했습니다. WabiSabi는 키드 크레덴셜(keyed credentials)과 영지식 증명(zero-knowledge proofs)을 사용하여 ZeroLink의 한계를 극복했습니다. 가장 큰 개선점은 출력 금액의 유연성입니다. ZeroLink에서는 모든 출력이 고정 금액이어야 했지만, WabiSabi에서는 다양한 금액의 출력이 가능하면서도 입력-출력 매핑을 숨길 수 있습니다. 이는 변경 출력(change output)을 줄여 프라이버시를 더욱 강화합니다.
JoinMarket: 메이커-테이커 모델
JoinMarket은 코인조인을 위한 탈중앙화된 시장(marketplace)입니다. JoinMarket의 독특한 점은 **메이커(maker)**와 테이커(taker) 모델입니다.
- 메이커(Maker): 자신의 비트코인을 코인조인 유동성으로 제공하고, 그 대가로 수수료를 받습니다. 메이커는 항상 온라인 상태로 주문(order)을 게시합니다.
- 테이커(Taker): 프라이버시를 원하는 사용자로, 메이커들의 유동성을 활용하여 코인조인을 시작하고, 메이커에게 수수료를 지불합니다.
이 모델의 장점은 경제적 인센티브가 내장되어 있다는 것입니다. 메이커는 수익을 얻으면서 동시에 자신의 프라이버시도 향상되고, 테이커는 원할 때 즉시 코인조인을 실행할 수 있습니다. 또한 JoinMarket은 중앙화된 코디네이터 없이 P2P로 작동하므로 단일 장애점이 없습니다.
Whirlpool (Samourai Wallet)
Whirlpool은 Samourai Wallet 팀이 개발한 코인조인 구현체였습니다. Whirlpool의 특징은 엄격한 동일 금액 풀(pool)과 무료 리믹스(free remixes) 정책이었습니다.
Whirlpool은 여러 풀 사이즈(0.5 BTC, 0.05 BTC, 0.01 BTC, 0.001 BTC)를 운영했으며, 사용자는 처음 코인조인에 참여할 때만 수수료를 내고, 이후 추가 리믹스는 무료였습니다. 이는 사용자들이 UTXO를 여러 차례 리믹스하도록 장려하여 익명성 집합을 극대화했습니다.
그러나 2024년 4월 Samourai Wallet 창업자들이 미국 법무부에 의해 기소되면서 Whirlpool 서비스는 중단되었습니다. 이 사건은 비트코인 프라이버시 도구의 법적 지위에 관한 중대한 논쟁을 불러일으켰습니다.
코인조인 vs 중앙화 믹서
코인조인을 중앙화된 비트코인 믹서(mixer) 또는 텀블러(tumbler)와 혼동해서는 안 됩니다. 둘은 근본적으로 다른 신뢰 모델을 가집니다.
중앙화 믹서의 문제점
중앙화 믹서는 사용자가 비트코인을 믹서 운영자에게 보내면, 운영자가 다른 비트코인을 사용자에게 돌려보내는 구조입니다. 이 방식에는 심각한 문제가 있습니다.
- 탈취 위험(custodial risk): 운영자가 비트코인을 들고 사라질 수 있습니다.
- 로그 보관: 운영자가 입출금 매핑 기록을 보관할 수 있으며, 이 기록이 법 집행 기관에 압수될 수 있습니다.
- 허니팟: 중앙화된 서비스는 법 집행 기관이나 해커의 표적이 됩니다.
코인조인의 신뢰 최소화
반면 코인조인은 근본적으로 다릅니다.
- 비수탁(non-custodial): 사용자는 코인조인 과정에서 자신의 비트코인에 대한 통제권을 한 순간도 잃지 않습니다. 각자 자신의 입력에 대해서만 서명하며, 자신의 출력이 포함되지 않은 트랜잭션에는 서명하지 않습니다.
- 로그 불가: 블라인드 서명이나 영지식 증명을 사용하는 구현체에서는 코디네이터조차 입출력 매핑을 알 수 없습니다.
- 검증 가능: 코인조인은 표준 비트코인 트랜잭션이므로, 모든 참가자가 트랜잭션의 정확성을 서명 전에 독립적으로 검증할 수 있습니다.
법적 논란과 프라이버시의 권리
코인조인과 프라이버시 도구들은 최근 몇 년간 심각한 법적 도전에 직면해 있습니다.
Tornado Cash 제재 (2022)
2022년 8월, 미국 재무부 해외자산통제국(OFAC)은 이더리움 기반 프라이버시 프로토콜 Tornado Cash를 제재 목록에 추가했습니다. 이는 특정 인물이나 기업이 아닌 오픈소스 스마트 컨트랙트 코드를 제재한 최초의 사례로, 기술 커뮤니티에 큰 충격을 주었습니다. 이후 법원 판결에서 일부 제재가 무효화되는 등 법적 공방이 이어지고 있습니다.
Samourai Wallet 기소 (2024)
2024년 4월, Samourai Wallet의 공동 창업자인 케오네 로드리게스(Keonne Rodriguez)와 윌리엄 힐(William Hill)이 무허가 송금업(unlicensed money transmitting business) 운영 및 자금세탁 공모 혐의로 기소되었습니다. 미국 법무부는 Whirlpool 코인조인 서비스와 Ricochet 기능이 1억 달러 이상의 자금세탁에 이용되었다고 주장했습니다.
프라이버시는 범죄가 아닌 권리
비트코인 커뮤니티와 프라이버시 옹호자들은 이러한 법적 조치에 강력히 반발하고 있습니다. 그들의 핵심 주장은 다음과 같습니다.
- 금융 프라이버시는 기본적 인권입니다. 현금 거래에는 기본적인 프라이버시가 있으며, 디지털 결제에서도 이를 보장받아야 합니다.
- 도구는 범죄가 아닙니다. 칼이 범죄에 사용될 수 있다고 해서 칼 제조업자를 기소하지 않는 것처럼, 프라이버시 소프트웨어 개발자를 범죄에 사용된 사용자의 행위로 처벌해서는 안 됩니다.
- 코인조인은 합법적인 비트코인 트랜잭션입니다. 여러 사람이 하나의 트랜잭션에 서명하는 것은 비트코인 프로토콜이 허용하는 표준적인 기능이지, 특별한 해킹이나 우회가 아닙니다.
- 프라이버시 없는 화폐는 감시 도구가 됩니다. 모든 금융 거래가 추적 가능해지면, 권위주의 정권은 반대 세력의 자금을 동결하고, 기업은 고객의 소비 패턴을 감시하며, 개인의 경제적 자유가 근본적으로 침해됩니다.
PayJoin: 2인 코인조인의 특수 형태
PayJoin(P2EP, Pay-to-Endpoint라고도 불림)은 코인조인의 특수한 형태로, 실제 결제 상황에서 사용됩니다. 일반적인 코인조인이 프라이버시만을 목적으로 여러 사용자가 모이는 것과 달리, PayJoin은 송금자와 수취자 두 사람만으로 코인조인을 구성합니다.
작동 방식
일반적인 비트코인 결제에서는 송금자만 입력을 제공하고 수취자는 출력에만 나타납니다. PayJoin에서는 수취자도 자신의 UTXO를 입력으로 제공합니다. 예를 들어 Alice가 Bob에게 0.5 BTC를 결제하는 경우, Bob도 자신의 0.3 BTC UTXO를 입력으로 추가합니다. 결과적으로 트랜잭션의 입력에 Alice와 Bob의 UTXO가 모두 포함됩니다.
CIOH 무력화
PayJoin의 가장 강력한 효과는 공통 입력 소유 휴리스틱(CIOH)을 직접적으로 무력화한다는 것입니다. 체인 분석 도구가 “같은 트랜잭션의 입력은 같은 소유자”라고 가정하면, Alice와 Bob의 자금을 같은 사람의 것으로 잘못 분류하게 됩니다. PayJoin이 널리 사용되면, 이 가정 자체의 신뢰성이 떨어져 모든 비트코인 사용자의 프라이버시가 간접적으로 향상됩니다.
BIP 78
PayJoin은 BIP 78로 표준화되어 있습니다. 송금자와 수취자 간의 통신 프로토콜을 정의하며, BTCPay Server 같은 결제 프로세서에 이미 통합되어 있습니다. PayJoin의 장점은 블록체인에서 일반 트랜잭션과 구별이 불가능하다는 것입니다. 코인조인은 동일 금액 출력 패턴으로 식별 가능하지만, PayJoin은 겉보기에 완전히 평범한 결제처럼 보입니다.
한계와 미래
현재의 한계
코인조인은 강력한 프라이버시 도구이지만, 몇 가지 한계가 있습니다.
- 수수료 부담: 코인조인 트랜잭션은 일반 트랜잭션보다 크기가 크므로 더 많은 채굴 수수료가 필요합니다. 특히 비트코인 수수료가 높은 시기에는 소액 코인조인이 경제적으로 비합리적일 수 있습니다.
- 유동성: 코인조인은 여러 참가자가 동시에 필요합니다. 참가자가 적으면 익명성 집합이 작아지고, 대기 시간이 길어집니다.
- 변경 출력 문제: 동일 금액 코인조인 후 남는 거스름돈(change)은 프라이버시가 약합니다. 이를 제대로 관리하지 않으면 코인조인의 프라이버시가 사후적으로 훼손될 수 있습니다.
- 사용자 경험: 코인조인을 올바르게 사용하려면 UTXO 관리, 변경 출력 처리, 라벨링 등에 대한 이해가 필요하며, 일반 사용자에게는 진입 장벽이 있습니다.
탭루트와의 시너지
2021년 활성화된 탭루트(Taproot) 업그레이드는 코인조인의 미래에 중요한 의미를 가집니다. 탭루트의 슈노르 서명(Schnorr signatures)은 여러 서명을 하나로 합칠 수 있는 서명 집계(signature aggregation) 를 가능하게 합니다. 이를 코인조인에 적용하면, 여러 참가자의 서명이 하나의 서명으로 합쳐져 트랜잭션 크기가 크게 줄어들고, 수수료도 절감됩니다.
더 나아가 탭루트는 복잡한 스크립트 조건을 일반 결제와 구별할 수 없게 만듭니다. 이는 코인조인 트랜잭션이 블록체인에서 일반 트랜잭션과 동일하게 보이도록 하는 데 기여할 수 있습니다.
크로스 인풋 서명 집계(CISA)
비트코인 커뮤니티에서 논의 중인 **CISA(Cross-Input Signature Aggregation)**가 활성화되면, 코인조인의 혁명적 전환점이 될 수 있습니다. CISA는 하나의 트랜잭션 내 모든 입력의 서명을 단일 서명으로 압축합니다. 이는 코인조인 트랜잭션의 크기를 일반 트랜잭션 수준으로 줄여, 수수료 부담을 해소하고 코인조인의 대중화를 가능하게 할 것입니다.
프라이버시 기본값을 향하여
비트코인 프라이버시 커뮤니티의 궁극적 목표는 프라이버시가 선택이 아닌 **기본값(default)**이 되는 것입니다. 현재 코인조인은 사용자가 능동적으로 참여해야 하지만, PayJoin이 모든 결제에 통합되고, 지갑 소프트웨어가 자동으로 코인 선택 최적화와 프라이버시 라우팅을 수행하는 미래를 지향합니다.
코인조인은 비트코인이 단순한 투자 자산이 아닌, 검열 저항적이고 프라이버시가 보장되는 자유의 화폐로 기능하기 위한 핵심 기술입니다. 법적 도전에도 불구하고, 코인조인 기술은 계속 발전하고 있으며, 비트코인의 대체불가능성(fungibility)과 프라이버시를 강화하는 데 필수적인 역할을 합니다.