UTXO, Unspent Transaction Output
내 소중한 구매력을 비트코인으로 저장했으면 개념을 하나씩 뿌셔보자
셀커 아직도 안했으면 -> https://3min-bitcoin.tistory.com/1
비트코인 셀프 커스터디(self-custody) 시작하기
셀프 커스터디란?custody 란 보관을 의미함.self-custody란 스스로 보관함을 의미함. 우리의 기존 삶에서는, "은행"에 돈을 맡기는게 너무 당연해서 생소할 수 있음self-custody는 부자들이 금고에 금을
3min-bitcoin.tistory.com
트랜잭션, UTXO 구경
거래소에서 개인지갑으로 옮기고 나면 코코넛 월렛(워치 온리)에 Transaction History 목록이 뜬다.
수수료를 제외한 금액이 잘 전송되었는지 확인하자.

위 사진이 트랜잭션 상세 페이지이다.
어디서 어디로 보냈는지 줄줄이 뜬다. 비트코인은 모두에게 공개된 장부이기 때문이다.
멤풀 사이트에 들어가면 모든 트랜잭션 장부를 조회할 수 있다.
트랜잭션 목록 있는 페이지에서 우측 상단 비트코인 쌓여있는 로고를 누르면 utxo list가 노출된다.
트랜잭션
트랜잭션이란 영어로 거래라는 뜻이다.
비트코인에서 트랜잭션은 말 그대로 거래내역이다.
트랜잭션에는 보내는 사람의 주소, 받는 사람의 주소, 보내는 금액, 서명 등 다양한 정보가 포함된다.

임의의 트랜잭션을 하나 훔쳐왔다.
Hash ID는 고유한 트랜잭션을 구분하는 해시값이다. txid라고도 한다.
트랜잭션에는 input(보내는 부분, 입력, from)과 output(받는 부분, 출력, to)이 있다.
위 예시에서 from을 손흥민, to를 박지성이라고 해보자.
- input: 손흥민이 과거에 받은 0.0001 BTC (10000sats)를 사용함
- output: 박지성이 0.00009 BTC(9000sats)를 받음
- output: 손흥민이 "잔돈" 0.00000845 BTC(845sats)를 받음 (정확히는 잔돈으로 추정되는 것이지만 잔돈이라 가정하자)
- output: 나머지는 채굴자가 수수료(Fee)로 가져감
- 모든 input의 총합 = 모든 output의 총합 + 수수료(채굴)
간단히 살펴보자면, 트랜잭션이란 이와같이 금액을 여기저기로 송금하는 거래다.
UTXO(Unspent Transaction Output)
우리가 평소 사용하던 은행 통장, 네이버페이 등은 잔고 모델을 사용한다.
잔고 모델은 아래 그림처럼 "누가: 얼마" 형태의 데이터베이스로 저장한다.
| 잔고 | |
| 손흥민 | 1억원 |
| 박지성 | 9000만원 |
| 차범근 | 8000만원 |
반면, 비트코인은 UTXO 모델을 사용한다. 말 그대로 아직 사용하지 않은 output이다.
앞서 본 예시의 박지성이 받아서(output) 아직 사용을 안했으면 해당 주소에 0.00009 BTC 금액의 utxo가 있는 것이다.
손흥민은 잔돈 0.00000845 BTC 만큼 돌려받고 아직 사용을 안했으면 해당 금액만큼의 utxo가 있는 것.
비트코인은 분산화된 장부에 모든 트랜잭션(거래) 정보가 담겨있다.
(( 분산화된 장부: 전세계 비트코인 프로그램 돌아가는 컴퓨터 노드가 갖고 있음 ))
"누가: 얼마"구조가 아니라
"A주소 -> B주소 1btc 송금, B주소에 있는 비트코인 아직 미사용" 형태와 같다고 보면 된다.
이런 구조를 UTXO 모델이라고 한다.
아래 그림은 백서에서 이를 개인키, 서명, 공개키로 utxo 모델을 나타낸 도식이다. 물론 여기는 주소 개념은 아직 없지만, 참고하면 좋다.

0번 주소 input -> 1번 주소 output
1번 개인키로 1번 utxo사용하여 새로운 트랜잭션의 input이 됨.
개인키로 서명하는 부분은 다른 문서로 정리하겠음
비트코인 지갑이 보여주는 잔고는??
비트코인 지갑은, UTXO를 모아서 보여줄 뿐

코코넛 월렛 watch-only 연결하면 이렇게 내 니모닉으로부터 파생된 주소들을 갈무리해서 그 utxo를 모아서 보여주는 것이다.
🚨 중요! 제 수량이 안보이는건 없어서 그렇습니다. 저는 순수하게 기술적 학습만 추구하기 때문입니다. :D 🚨
(수량 숨기기 기능, fake balance 기능이 있습니다)
watch-only 지갑은 풀 노드로부터 정보를 가져와서 보여준다. 내가 소유한 풀노드도 직접 연결할 수 있다.
(( 풀 노드: 모든 트랜잭션 정보를 갖고 있는 노드 ))
유튜브에 보니 UTXO 관련 MIT 수업자료도 있다.
https://www.youtube.com/watch?v=VT2o4KCEbes