UTXO는 Unspent Transaction Output입니다. 단위는 주소나 계정이 아니라 txid와 인덱스로 된 outpoint이며 한 주소에 여러 독립 UTXO가 있을 수 있습니다.
출력은 satoshi 금액과 미래 지출 조건인 scriptPubKey를 담습니다. 노드 상태에는 성숙도와 시간 잠금 검사용 생성 높이와 coinbase 플래그도 필요합니다. 주소나 outpoint를 알아도 조건을 충족할 수 있다는 뜻은 아닙니다. [Bitcoin Core v29.0: transaction checks]
거래는 여러 UTXO를 결합해 새 출력을 만들 수 있습니다. 기존 출력은 전체 소비되며 일부를 직접 옮기는 것이 아닙니다. 나머지는 보통 새 거스름돈 출력이고 합계 차이가 수수료입니다. 같은 주소의 새 출력 둘도 별도 outpoint입니다. [Bitcoin Developer Reference: Transactions]
확인된 UTXO 집합은 특정 체인 끝점에 대응합니다. Mempool에는 지출과 미확인 새 출력도 있으며 재구성은 확인 상태를 바꿉니다. gettxout은 include_mempool에도 달려 있고 null만으로 미존재와 이미 지출됨을 구별하지 못합니다. [Bitcoin Core v29.0: gettxout]
지갑은 조건을 추적하거나 충족할 수 있는 알려진 출력을 합산합니다. Watch-only 잔액은 개인 키를 증명하지 않습니다. coinbase는 미성숙하거나 스크립트에 시간 잠금이 있을 수 있습니다. 높은 요율에서는 작은 UTXO 지출 비용이 그 금액보다 클 수 있습니다. [Bitcoin Core v29.0: transaction checks]
입력이 많으면 보통 거래와 수수료가 커집니다. 결합은 공동 통제를 시사하지만 항상 증명하지는 않습니다. Coin control로 선택을 제한할 수 있으며 통합은 현재 수수료와 이력 연결 가능성을 대가로 미래 관리비를 줄입니다. [Bitcoin whitepaper: privacy]
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 트랜잭션, Full Node, 개인 키, 지갑, Mempool. 다음 항목에서도 이 글을 참조합니다 Full Node, 트랜잭션, 개인 키, 지갑.
01UTXO는 지갑 잔액과 같은 것인가요?+
아닙니다. UTXO는 하나의 구체적인 출력이며 지갑은 추적하는 출력의 상태에 따라 잔액을 계산합니다. 표시된 총액을 모두 즉시 쓸 수 있는 것은 아닙니다. 네트워크는 변하는 하나의 계정 잔액이 아니라 출력과 지출 조건을 추적합니다.
02소액 UTXO가 많으면 왜 수수료가 늘어나나요?+
선택한 각 입력은 데이터를 추가합니다. 입력 유형과 나머지 출력이 비슷하다면 여러 작은 UTXO를 쓰는 것이 하나의 큰 UTXO를 쓰는 것보다 더 많은 가상 바이트를 차지합니다. 따라서 sat/vB 단위의 요율이 같으면 보통 총수수료가 더 높습니다.