본문으로 건너뛰기
buybitcoinsmart

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

트랜잭션 출력

별칭은 Output, TxOut입니다.

트랜잭션 출력이란 무엇입니까?
트랜잭션 출력은 비트코인 금액과 다음에 누가 이를 쓸 수 있는지 정하는 잠금을 합친 것으로, 비트코인이 실제로 존재하는 유일한 자리입니다.

두 개의 필드가 하나를 이룹니다. 사토시 단위의 8바이트 금액과, 이를 쓰기 위한 조건을 명시하는 스크립트입니다. 출금 양식에 붙여 넣는 주소는 그 스크립트를 사람이 읽을 수 있게 인코딩한 것에 지나지 않으며, 구형 형식 대신 bech32를 선택하는 것이 실제로는 보유 코인이 놓일 잠금에 대한 선택인 이유가 여기에 있습니다. 출력은 만드는 것은 저렴하고 나중에 푸는 것은 비쌉니다.

작동 방식

출력은 어디에도 소유자가 명시되지 않은 작은 기록입니다.

금액 필드는 8바이트로, 사토시 단위의 정수를 담습니다. 64비트는 2,100,000,000,000,000 사토시 부근에서 상한이 정해진 통화에 넉넉한 크기이며, 소수가 아닌 정수를 사용하기 때문에 비트코인 회계에 반올림 오차가 없습니다. 그다음에는 길이 접두사와 잠금 스크립트가 오는데, 소스 코드에서는 scriptPubKey라고 하며, 앞으로 이 출력을 쓰는 사람이 충족해야 하는 짧은 프로그램입니다.

스크립트가 다르면 크기도 비용도 달라집니다. pay-to-public-key-hash 잠금은 스크립트가 25바이트여서 출력 전체가 34바이트가 됩니다. 네이티브 SegWit 잠금은 22바이트여서 출력이 31바이트가 됩니다. Taproot 잠금은 스크립트가 34바이트이고 전체가 43바이트입니다. 익숙한 주소 인코딩은 이 잠금들에 그대로 대응합니다. 1로 시작하는 주소, bc1q, bc1p가 그것입니다.

"잠금"이라는 말이 "소유자"보다 정확합니다. 스크립트는 사람을 기록하지 않습니다. 검사를 기록하며, 그 검사를 통과할 수 있는 사람은 누구든 코인을 쓸 수 있습니다. 개인 키를 단순한 로그인이 아니라 반드시 보호해야 하는 대상으로 만드는 이유가 바로 이것입니다.

중요한 속성이 두 가지 더 있습니다. 출력은 0부터 시작하는 위치로 번호가 매겨지므로, 한 트랜잭션의 두 번째 출력은 인덱스 1입니다. 그리고 레거시 잠금의 경우 약 546 사토시, 네이티브 SegWit의 경우 294 사토시인 더스트 임계값 미만의 출력은 기본적으로 중계되지 않습니다. 쓰는 데 드는 비용이 담긴 금액보다 크기 때문입니다.

확인할 수 있는 곳

출력은 모든 블록 탐색기 페이지의 오른쪽 열이며, 지출할 때는 거의 항상 두 개가 있습니다.

하나는 결제이고 다른 하나는 거스름돈이며, 트랜잭션 안의 어떤 것도 어느 쪽이 어느 쪽인지 말해 주지 않습니다. 이 추측이 블록체인 분석의 원료이며, 거스름돈 주소를 재사용하는 지갑이 그렇지 않은 지갑보다 추적하기 쉬운 이유입니다.

출력은 네트워크의 기억이기도 합니다. 모든 풀 노드는 미사용 출력 전체의 데이터베이스를 유지하는데, 그 집합이 바로 새 트랜잭션을 대조해야 하는 대상이기 때문입니다. 사용자가 만든 출력은 누군가 그것을 쓰기 전까지 수만 대의 기계에 있는 그 데이터베이스에 남아 있습니다. 따라서 작은 출력을 많이 만드는 것은 비쌀 뿐 아니라 다소 비사교적이며, 이를 통합하는 것은 절약인 동시에 배려입니다.

유일한 예외는 의도적으로 쓸 수 없게 되어 있습니다. OP_RETURN 출력은 데이터를 담고 절대 쓸 수 없으므로, 노드는 이를 영원히 저장하지 않고 미사용 집합에서 즉시 제거합니다.

비트코인을 구매하는 사람에게 실용적인 요약은 짧습니다. 미래의 자신이 반가워할 주소 형식으로 출금하시고, 작은 출금을 여러 번 하는 것보다 큰 출금을 적게 하는 편을 선호하시며, 지갑에 표시되는 잔액은 지갑이 관리하는 키에 현재 잠겨 있는 출력들의 합계일 뿐임을 기억하십시오.

트랜잭션 출력 vs UTXO

출력은 기록이고, UTXO는 아무도 그것을 쓰지 않은 동안에만 그 기록이 지니는 상태입니다. 지금까지 만들어진 모든 출력은 블록에 영구히 기록되어 수년 뒤에도 그곳에서 읽을 수 있지만, 나중 트랜잭션이 그것을 참조하는 순간 미사용 상태가 아니게 되어 노드가 추적하는 집합에서 빠집니다. 따라서 모든 UTXO는 출력이지만, 대부분의 출력은 더 이상 UTXO가 아닙니다. 이 구분에는 실용적인 측면이 있습니다. 지갑 잔액은 UTXO들의 합계이며 주소로 지금까지 지급된 모든 것의 합계가 아니고, 한 주소에서 받은 총액이 크다고 표시하는 블록 탐색기는 아직 보유한 돈이 아닌 이력을 설명하는 것입니다.

혼동하기 쉬운 용어

자주 묻는 질문

제가 보낸 트랜잭션에 저에게 돌아오는 출력이 있는 이유는 무엇입니까?

그것은 거스름돈입니다. 코인은 통째로 지출되므로, 지출한 코인이 결제 금액과 수수료를 합친 것보다 컸다면 지갑은 자신이 관리하는 주소에 잠긴 두 번째 출력을 만들어 그 차액을 보내는 사람에게 돌려줍니다.

출력은 주소와 같은 것입니까?

아닙니다. 주소는 출력이 담고 있는 잠금 스크립트를 텍스트로 인코딩한 것입니다. 여러 출력이 하나의 주소를 공유할 수 있으며, 출력은 금액과 위치도 함께 지니는데 주소에는 이 둘 중 어느 것도 들어 있지 않습니다.

다음에 읽을 글

관련 용어

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

이 페이지를 영어로 읽기