본문으로 건너뛰기
buybitcoinsmart

용어집 / 트랜잭션과 수수료

UTXO

별칭은 미사용 트랜잭션 출력입니다.

UTXO란 무엇입니까?
UTXO는 하나의 주소에 있는 아직 사용되지 않은 비트코인 단위로, 이전 트랜잭션에 의해 통째로 생성되며 일부만이 아니라 전부만 사용할 수 있습니다.

비트코인에는 계좌도 잔고도 없습니다. 대신 모든 노드가 아직 사용되지 않은 출력의 집합을 실시간으로 추적하며, 지갑의 잔고는 그중 자신이 키를 보유한 출력들의 합계일 뿐입니다. 지출은 고른 코인을 파괴하고 새 코인을 만들어 내므로, 100,000사토시를 옮기는 데 10,000,000사토시를 옮기는 것보다 더 많은 비용이 들 수 있습니다.

작동 방식

원장은 계좌 잔고의 표가 아니라 코인의 모음입니다. 각 출력은 두 가지를 기록합니다. 하나는 8바이트 숫자로 저장되는 사토시 단위 금액이고, 다른 하나는 잠금을 해제하려면 무엇을 제시해야 하는지 정하는 잠금 스크립트입니다. 무언가가 이 출력을 지출하기 전까지 그 출력은 미사용 집합에 남아 있으며, 모든 풀 노드가 이 집합을 보유하고 블록 단위로 갱신합니다.

지출은 파괴 다음에 생성이 뒤따르는 과정입니다. 지갑은 출력 전체를 입력으로 골라 잠금을 해제할 수 있음을 증명하고 새 출력을 작성합니다. 제자리에서 차감되는 것은 없으므로, 1 BTC 코인에서 0.3 BTC를 지불한다는 것은 수취인에게 0.3 BTC 코인을, 자신에게는 대략 0.7 BTC의 잔돈 코인을 만들어 내는 것을 뜻합니다. 처음 사용한 코인은 집합에서 영구히 사라지고, 하나가 있던 자리에 두 개의 항목이 남습니다.

Bitcoin Core는 이 집합 전체를 chainstate라는 LevelDB 데이터베이스에 보관하고 일부를 메모리에 캐시하는데, -dbcache의 기본값은 1,024 MiB이고 RAM이 4 GiB 미만인 기기에서는 450 MiB입니다. 노드가 결제가 도착했을 때 중요한 유일한 질문, 즉 이 입력이 아직 존재하는 무언가를 가리키는가에 답하기 위해 참조하는 것은 블록 보관소가 아니라 이 집합입니다. 프루닝 노드는 수백 기가바이트의 오래된 블록을 버려도 검증을 완벽히 수행할 수 있는데, 미사용 집합이 곧 상태이기 때문입니다.

가장자리에는 두 가지 흥미로운 사례가 있습니다. 2009년 1월 3일 제네시스 블록의 코인베이스로 지급된 50 BTC는 데이터베이스에 기록된 적이 없어 영원히 지출할 수 없습니다. 그리고 2010년에는 BIP30이 적용되기 전에 두 코인베이스 트랜잭션이 이전 트랜잭션을 중복 생성하고 덮어써서 100 BTC를 집합에서 지웠습니다. 중복된 트랜잭션 식별자를 금지하는 규칙은 그 블록들 때문에 존재합니다.

새로 채굴된 코인도 잠긴 채로 도착합니다. 코인베이스 출력은 100 블록, 대략 16시간 동안 지출할 수 없으며, 이는 짧은 체인 재구성에 대비한 프로토콜 자체의 장치입니다.

비트코인을 구매할 때 이것이 중요한 이유

거래소에서 출금할 때마다 지갑에는 정확히 코인 하나가 생기므로, 보유 자산의 형태는 그 버튼을 얼마나 자주 누르는지에 따라 결정됩니다. 매주 구매하고 매주 출금하면 1년 뒤에 코인 52개가 남고, 같은 구매를 분기마다 출금하면 4개가 남습니다. Swan과 River 모두 이러한 점을 기준으로 정기 구매를 구성하여 주문마다가 아니라 기준 금액에 도달할 때 출금을 실행하며, 그 이유는 산수입니다. 그 코인들은 나중에 지출할 때 각각 약 68 가상 바이트의 블록 공간을 차지합니다.

두 번째 결과는 출처입니다. 코인은 익명의 현금이 아닙니다. 코인은 자신을 만든 트랜잭션의 이력을 지니며, 이 사이트에서 리뷰한 거의 모든 거래소를 포함해 신원을 확인하는 어느 플랫폼에서든 출금하면 규제 준수 데이터베이스에 자신의 것으로 기록된 코인이 생깁니다. 이용자의 지갑으로 바로 전달하는 Relai를 통한 구매도 같은 기록 흔적을 남깁니다. 그런 코인을 다른 곳에서 얻은 코인과 분리해 두는 것이 가능한 것은 애초에 그것들이 별개의 객체이기 때문입니다.

세 번째로, 지갑을 복원한다고 코인이 복원되지는 않습니다. 시드 문구는 키를 다시 생성할 뿐이며, 그다음 소프트웨어가 그 키로 잠금을 해제할 수 있는 출력을 체인에서 찾아야 합니다. 특이한 파생 경로를 사용하거나 주소 유형을 확인하지 않는 소프트웨어로 복원하면, 코인은 미사용 집합에 안전하게 남아 있는데 잔고는 0으로 표시됩니다. 시드 단어와 함께 출력 디스크립터를 보관하는 것이 그런 당황스러운 한나절을 막아 줍니다.

0.02 BTC 구매 하나를 집합을 통해 따라가기

Kraken에서 0.02 BTC를 구매하고 출금하십시오. 거래소는 출금액을 다른 고객들의 출금액과 함께 묶으며, 그 묶음의 출력 하나, 즉 2,000,000사토시 가치의 출력이 출금자의 주소에 잠깁니다. 이제 지갑에는 코인 하나가 들어 있습니다.

두 달 뒤 다른 사람에게 500,000사토시를 지불할 때 다음 블록 수수료율이 5 sat/vB입니다. 네이티브 SegWit 입력 하나를 지출하고 출력 두 개를 만들면 약 141 가상 바이트를 차지하므로 수수료는 705사토시입니다. 세 가지 일이 동시에 일어납니다. 2,000,000사토시 코인은 미사용 집합에서 빠지고, 수취인에게 500,000사토시 코인이 생기며, 지갑이 관리하는 새 주소에 1,499,295사토시의 잔돈 코인이 생깁니다.

잔고는 2,000,000사토시에서 1,499,295사토시로 바뀌었습니다. 전역 집합은 항목 하나만큼 커졌으며, 이것이 누구든 지불할 때마다 드는 조용한 비용이고 노드에 스프레드시트가 아니라 데이터베이스가 필요한 이유입니다.

UTXO vs 트랜잭션 출력

모든 UTXO는 트랜잭션 출력이지만, 대부분의 트랜잭션 출력은 오래전에 UTXO이기를 그쳤습니다. 출력은 영구적인 이력의 한 줄이며, 10년이 지나도 그것을 담은 블록에서 여전히 읽을 수 있습니다. UTXO는 현재에 대한 권리입니다. 누군가 출력을 지출하는 순간 그 출력은 미사용 집합에서 빠지지만 체인에는 영원히 남으며, 노드가 오래된 블록은 버릴 수 있어도 현재 상태는 결코 버릴 수 없는 이유가 바로 이 간극입니다.

UTXO vs 더스트

더스트는 경제성 문제를 지닌 UTXO일 뿐, 다른 종류의 객체가 아닙니다. 미사용 집합에 속해 있다는 사실은 그 코인을 옮길 가치가 있는지에 대해 아무것도 말해 주지 않습니다. 600사토시 출력은 6 BTC 출력과 똑같이 유효하지만, 30 sat/vB에서는 그것을 지출하는 입력에 약 2,040사토시가 소요되어 담긴 금액의 세 배가 넘습니다. 그래서 지갑이 전부 지출할 수 없는 잔고를 표시할 수 있습니다.

혼동하기 쉬운 용어

자주 묻는 질문

지갑에 잔액이 표시되는데도 전액을 보낼 수 없는 이유는 무엇입니까?

잔액은 따로 떨어진 코인들의 더미이고, 그것을 모두 보내려면 모든 입력에 대한 비용을 지불해야 하기 때문입니다. 일부 코인이 너무 작아서 그것을 쓰는 데 드는 수수료가 그 가치를 넘으면, 지갑은 그 이동에서 손해를 보느니 해당 코인들을 남겨 둡니다.

UTXO는 주소와 같은 것입니까?

아닙니다. 주소는 자물쇠이고, 같은 주소에 여러 코인이 들어 있을 수도 있고 하나도 없을 수도 있습니다. UTXO는 자물쇠 뒤에 있는 특정한 코인 하나이며, 그것을 만든 트랜잭션과 그 트랜잭션 안에서의 위치로 식별됩니다.

작은 코인이 많으면 실제로 비용이 발생합니까?

네, 사용할 때 발생합니다. 네이티브 SegWit 입력 하나당 대략 68 가상 바이트가 추가되므로, 서른 개의 자투리 코인을 보유한 지갑은 마침내 그것을 사용할 때 서른 개 입력에 대한 비용을 지불하며, 그 비용은 그 시점에 적용되는 수수료율로 청구됩니다.

다음에 읽을 글

관련 용어

트랜잭션과 수수료 분야의 다른 용어

이 페이지를 영어로 읽기