2023-07-12
1277
UTXO란 무엇인가요?
UTXO가 무엇인지 몰라도 비트코인을 사용하는데는 아무 지장이 없습니다. 그렇지만 당신의 비트코인 지갑에 보이는 잔고가 어떻게 구성되어 있는지 궁금하다면 읽어보세요.
UTXO란 ‘미사용 잔액’(Unspent Transaction Output)의 줄임말로, 말 그대로 비트코인 지갑에 들어있는 사용 가능한 금액들을 가리킵니다. 지폐나 동전이라고 생각하면 간단합니다. 예를 들어, A, B, C 세 사람이 Z 한 사람에게 각각 0.1 BTC, 0.2 BTC, 0.7 BTC를 보내서 Z가 1 BTC를 갖게 되었다면, Z의 지갑에는 저 세 금액이 합쳐진 UTXO가 아닌 여전히 0.1 BTC, 0.2 BTC, 0.7 BTC의 세 개의 UTXO가 존재하게 됩니다. 물론 한 명이 같은 사람에게 저렇게 금액을 나눠서 세 번 보낸 경우도 Z는 세 개의 UTXO를 소유하게 됩니다. 지갑 소프트웨어나 블록체인 익스플로러에서는 단지 저렇게 나뉘어진 UTXO를 더해서 보여주는 기능이 있기 때문에 사용자들이 쉽게 해당 주소의 잔고가 1 BTC임을 인지할 수 있는 것입니다.
이것은 마치 우리가 $1, $10, $100 세 장의 지폐를 갖고 있다면 합산 금액은 우리 머리속에서 $111로 인식하지만, 실제 그 금액은 여전히 저 세 장의 지폐로 이루어져 있는 것과 비슷합니다.
지갑 소프트웨어들 중에는 매번 비트코인을 받을 때마다 다른 주소를 생성해주는 것들이 있습니다.(BIP32에 따라 거의 무제한의 주소를 생성할 수 있습니다.) 예를 들어, 내가 1 BTC를 받을 때는 주소 A, 그 다음 2 BTC를 받을 때는 주소 B로 받는 경우를 생각해보겠습니다. 이럴 경우 블록체인 익스플로러에서 주소 A에는 1 BTC, 주소 B에는 2 BTC만 기록되어 있지만, 지갑 소프트웨어는 그 모든 주소들을 다 관리해주기 때문에 그 금액들의 합인 3 BTC가 보일 것입니다. 이 경우 UTXO는 A 주소에 하나, B 주소에 하나가 존재하겠죠. 물론 주소 하나에만 1 BTC + 2 BTC 나누어서 받더라도 역시 UTXO는 2개입니다.
내 비트코인이 많은 UTXO로 구성되어 있다면, 다른 주소로 비트코인을 보낼 때 내가 사용할 UTXO의 개수도 많아질 것이므로 byte 수가 많아져 수수료가 좀 더 커질 수 있습니다. 이를테면 $100를 지불하는데 $100 지폐 한 장을 쓰는게 아니라 1 페니 동전 10000개를 쓴다면 계산하는 사람이 정말 짜증나겠죠?
비트코인은 적은 수의 UTXO로 이루어져 있든 많은 수의 UTXO로 이루어져 있든 내가 또 다른 주소로 송금할 때 그대로 사용하거나, 거스름돈을 만들고 적절히 쪼개거나 합치는 등 자유롭게 사용할 수 있습니다. 이는 내 UTXO들이 하나의 주소에 존재하든, 서로 다른 여러 개의 주소에 존재하든 무관합니다.
내 비트코인이 많은 UTXO로 이루어져 있다면 각각의 UTXO가 서로 다른 트랜잭션에 속할 수 있어 소유권 추적도 좀 더 어렵고, 내 잔고의 추적도 더 어렵다는 장점이 있습니다. 위의 2 BTC + 1 BTC를 예시로 보면, 단순히 블록체인 익스플로러에서 해당 주소들만 보아서는 이 두 주소가 한 사람의 주소인지 다른 사람의 주소인지 알기 어렵습니다. 만약 소유자가 저 둘을 하나의 UTXO로 합치지 않는다면 타인은 그것이 동일 인물이 소유한 비트코인인지 알 수가 없습니다.
방금 예시에서 알 수 있듯이, 프라이버시를 생각한다면 위에서 예로 든 지갑 소프트웨어처럼 매번 새로운 주소를 생성해 비트코인을 받을 수 있는 지갑을 이용하는 것이 권장됩니다.
참조:
- What Are the UTXO and Accounts Models?
- UTXO 쉽게 알려드립니다.
2