비트코인에는 계좌가 없다
비트코인을 처음 배우는 사람들이 가장 오해하기 쉬운 부분이 있습니다. 은행 계좌처럼 내 주소에 0.5 BTC가 있다고 생각하지만, 사실 비트코인은 그런 방식으로 잔액을 관리하지 않습니다. 비트코인은 UTXO(Unspent Transaction Output, 미사용 트랜잭션 출력) 모델을 사용합니다.
비트코인 지갑이 보여주는 잔액은 실제로 그 주소에 연결된 여러 개의 UTXO를 합산한 값입니다. 지갑 소프트웨어가 이를 합쳐서 편리하게 표시해주는 것이며, 실제 블록체인에는 개별 UTXO들이 저장되어 있습니다.
UTXO 모델 작동 방식
비트코인 트랜잭션은 입력(Input)과 출력(Output)으로 구성됩니다. 입력은 사용할 UTXO를 가리키고, 출력은 새로운 UTXO를 생성합니다. 비유하면 현금 지갑과 비슷합니다. 지폐 단위로 나뉜 돈이 있고, 지불할 때 여러 지폐를 내고 거스름돈을 받는 방식입니다.
예를 들어 0.3 BTC와 0.2 BTC 두 개의 UTXO가 있을 때 0.4 BTC를 보내려면: 두 UTXO(0.3 + 0.2 = 0.5 BTC)를 입력으로 사용하고, 출력 1: 수신자에게 0.4 BTC, 출력 2: 나에게 거스름돈 0.09 BTC(0.01 BTC는 채굴자 수수료)를 돌려받습니다. 사용된 두 UTXO는 소각되고, 두 개의 새 UTXO가 생성됩니다.
한번 사용된 UTXO는 영구히 소각됩니다. 이중 지불은 같은 UTXO를 두 번 사용하려는 시도이며, 비트코인 네트워크는 이를 UTXO 집합(UTXO Set)을 통해 방지합니다. 각 노드는 현재 미사용된 모든 UTXO를 추적하며, 이미 사용된 UTXO를 참조하는 트랜잭션은 거부됩니다.
UTXO vs 계좌 모델
이더리움은 계좌 기반(Account-based) 모델을 사용합니다. 각 주소에 잔액이 직접 저장되며, 트랜잭션은 계좌의 잔액을 차감하고 증가시킵니다. 이 방식은 직관적이고 스마트 컨트랙트 구현에 유리합니다.
UTXO 모델의 장점은 병렬 처리가 용이하다는 점입니다. 서로 다른 UTXO를 사용하는 트랜잭션은 독립적으로 검증할 수 있어 확장성에 유리합니다. 또한 프라이버시 측면에서도 유리합니다. 같은 주소를 반복 사용하지 않으면 트랜잭션 추적이 상대적으로 어렵습니다. 반면 복잡한 스마트 컨트랙트를 구현하기 어렵다는 단점이 있습니다.
UTXO와 프라이버시
UTXO 모델은 비트코인 프라이버시 기술의 기반이 됩니다. 코인조인(CoinJoin)은 여러 사용자의 UTXO를 하나의 트랜잭션으로 합쳐 출처를 불분명하게 만드는 기술입니다. Wasabi Wallet, JoinMarket 등이 코인조인을 구현합니다.
또한 UTXO를 어떻게 선택하느냐(UTXO Selection)도 프라이버시에 영향을 미칩니다. 서로 다른 출처의 UTXO를 합쳐 사용하면 해당 UTXO들이 같은 소유자임이 드러납니다. 프라이버시를 중시하는 사용자는 UTXO 관리에 신경을 써야 합니다.
UTXO 더스팅 공격
더스팅 공격(Dusting Attack)은 작은 양의 비트코인(먼지, Dust)을 여러 주소에 보내 해당 주소 소유자를 추적하려는 시도입니다. 수신자가 이 소액 UTXO를 다른 UTXO와 함께 사용하면, 주소들이 같은 소유자임을 연결할 수 있습니다. 출처를 알 수 없는 소액 비트코인이 입금되면 해당 UTXO를 사용하지 않고 따로 관리하거나 무시하는 것이 안전합니다.
※ 면책 고지: 본 글은 정보 제공 목적으로 작성된 콘텐츠이며 투자 권유가 아닙니다. 가상자산 투자는 원금 손실 가능성이 있습니다.