Unspent Transaction Output의 약자로, 아직 쓰지않은 잔액 이라는 의미함.
비트코인 네트워크에서는 잔액이라는 개념은 존재하지 않고, 트랜잭션에 의한 블록체인에 기록된 소비되지 않은 출력값들의 합을 잔액이라는 개념으로 사용하는데 이때 UTXO 데이터를 사용함.
퀀텀, 레이븐 코인에서도 UTXO 방식을 사용하고 이더리움은 “계좌 잔고 모델 (Account Balance Model)” 방식을 사용함.
비트코인의 현재 블록에는 n-1 번째 블록의 정보가 있지만 이전 블록의 정보는 Hash화 되어있다.
과거의 내역을 검증할 수는 있지만 과거의 내역들을 확인할 수는 없는것이다.
또한 모든 Address에 대한 잔액을 갱신 시키며 블록을 생성하는것은 비효율적일 것이다.
이런 이유로 비트코인에서는 특정 Address에 대한 잔액 조회는 Genesis Block 부터 현재 Block 까지의 검사가 필요하다.
비트코인 네트워크의 UTXO(미사용 출력값)는 현실의 5만원, 만원, 천원, 오백원, 백원 각각의 지폐 또는 동전과 대응된다. UTXO는 화폐와 다르게 일정한 기준의 금액 값을 가지지 않고 이전 소유주가 보낸 단위에 따라 무수한 단위로 형성될 수 있다.
최하 단위로는 1사토시(0.000000001BTC)이고 발행량이 2,100만개 이므로 이론상으로 UTXO의 가장 큰 단위는 2,100만 비트코인이다.
비트코인 플랫폼에서는 거래가 이루어질때 마다 UTXO의 소멸과 생성이 반복된다.
한번 소비된 거래 정보는 두 번 다시 사용할 수 없으며, 이렇게 소비된 거래 정보를 Spent Transaction이라고 표현한다.
A, B가 F에게 각 1BTC, 2BTC를 송금해주면 F는 2개의 UTXO가 생성되고
A, B는 송금에 사용된 UTXO가 소멸될 것이다.
C, D, E가 G에게 3BTC, 4BTC, 10BTC를 송금을 하면 G는 3개의 UTXO가 생성되고
C, D, E 각각 송금에 사용된 UTXO는 소멸될 것이다.
장점
단점
todo: 추후 잘 이해가된 후 다시 정리
G는 총 3개의 UTXO로 17비트가 있다.
9BTC를 H에 보내려고한다.
이때 G가 소유한 UTXO 중에 9BTC 이상인 UTXO를 찾아 선택하게 된다.
7BTC를 보내려고 하는 상황에서도 3BTC, 4BTC를 합쳐서 쓰지 않고 10BTC의 UTXO를 사용한다.
이유는 3BTC, 4BTC를 합쳐서 쓸 경우 2개의 UTXO를 사용하므로 수수료 증가되기 때문이다.
(작성중..)
참고한 컨텐츠
- https://brownbears.tistory.com/382
- https://m.blog.naver.com/mage7th/221439829511
- https://roy-jang.tistory.com/13
- https://brunch.co.kr/@skkrypto/13