UTXO 란 Unspent Transaction Output 의 약자로, 아직 쓰지않은 잔액 이라는 의미입니다. 비트코인 네트워크에서는 잔액이라는 개념은 애초에 존재하지 않고, 트랜잭션에 의한 결과물들의 합을 잔액이라는 개념으로 사용하는데 이를 UTXO 데이터로 대체합니다. 각 지갑의 UTXO들은 해당 지갑 주인(소유주)에 대해 공개키 암호로 잠겨있습니다.
UTXO 거래 예시
아래는 UTXO를 설명하기 위한 예시입니다. A, B가 F에게 각 1BTC, 2BTC를 송금해주고 C, D, E가 G에게 3BTC, 4BTC, 10BTC를 송금을 하면 F와 G는 각 UTXO가 2개, 3개가 되어 총 UTXO가 5개 생성됩니다.
다음 아래는 G가 H에게 9BTC를 보내려고 하는 그림입니다. 먼저 G가 가진 UTXO 중 9BTC 이상인 값을 찾습니다. 아래 그림에는 10BTC인 UTXO가 존재하여 해당 값을 입력값으로 넣습니다. H의 지갑에서 출력값으로 찍히게 되는 9BTC를 제외하고 1BTC는 G의 지갑에 찍히게 됩니다.
위 절차를 거치게 되면 UTXO는 5개에서 6개로 늘어난 것을 확인할 수 있습니다.
이와 같은 예시가 UTXO의 개념입니다. 만원짜리를 찢어서 2천원, 4천원과 같이 사용할 수 없는 것 처럼 UTXO 또한 찢어 사용할 수 없고 비트코인 지갑이 사용할 수 있는 UTXO를 찾아 데이터를 전송하는 역할을 해줍니다.
위에서 설명한 것과 같이 큰 단위를 찢어서 사용할 수 없는것처럼 작은 단위를 합쳐서 사용할 수 없습니다.
만약 H에게 9BTC가 아닌 17BTC를 전송해야된다고 해서 G의 UTXO를 전부 더해 보낼 수 없습니다. (17BTC의 UTXO가 없기 때문에 ERROR가 발생함)