Bitcoin UTXO(미사용 거래 출력)란 무엇인가요?

Bitcoin UTXO 모델 초보자 가이드 📕
UTXO(Unspent transaction output)는 Bitcoin 프로토콜이 암호화폐 지갑 간에 잔액을 추적하는 데 사용하는 기술입니다.
개별 암호화폐 잔액을 추적하고 관리하는 데 있어 블록체인 기반 프로토콜은 일반적으로 두 가지 회계 모델 중 하나를 사용합니다.
하나는 계정/잔액 모델이라고 합니다. Ethereum, Tezos 및 EOS와 같은 프로젝트는 블록체인 사용자가 거래를 실행할 때 잔액을 추적하기 위해 이 모델을 사용합니다. 다른 하나는 UTXO(Unspent Transaction Output) 모델이라고 합니다.
Bitcoin 및 Litecoin, Cardano, Dogecoin과 같은 다른 많은 암호화폐는 UTXO 모델을 사용합니다.
하지만 정확히 무엇이며, 어떻게 작동하고, 계정/잔액 모델과 비교했을 때 UTXO의 장점은 무엇일까요?
UTXO 모델 이해하기 💻
기록
Adam Back과 고(故) Hal Finney는 Bitcoin 백서 저자인 Satoshi Nakamoto가 자주 방문했던 사이퍼펑크 암호화 그룹의 두 멤버였습니다. 이 두 사람은 각각 1997년과 2004년 사이에 독립적으로 UTXO 모델을 개발한 것으로 알려져 있습니다.
Bitcoin의 창시자 Satoshi Nakamoto가 2009년에 프로토콜을 출시했을 때, 이는 UTXO 모델을 구현한 최초의 운영 가능한 디지털 통화 시스템이 되었습니다.
Hal Finney와 Adam Back 모두 오랫동안 Satoshi Nakamoto로 의심받았지만, 확실하게 증명된 적은 없습니다.
UTXO 한눈에 보기
Bitcoin을 다른 사람에게 보낼 때, 여러 단계가 프로그래밍 방식으로 진행됩니다. 거래 과정에서 가장 초기 단계 중 하나는 귀하의 암호화폐 지갑이 블록체인에서 보유하고 있는 자금의 양을 스캔하는 것입니다. 이 자금은 **UTXO(unspent transaction outputs)**로 알려져 있습니다.
UTXO를 이전 Bitcoin 거래에서 남은 잔돈이라고 생각할 수 있습니다.
이 자금은 다른 사람에게 보내거나 다른 지갑으로 옮길 수 있도록 자유롭게 사용할 수 있기 때문에 "미사용"으로 간주됩니다. 이전 거래에서 생성되었기 때문에 "거래 출력"이라고 불립니다.
20달러 지폐로 점심값 12달러를 지불하면 8달러가 남을 것입니다. 이 예에서 남은 8달러는 미사용 거래 출력(UTXO)이 됩니다. 그것은 다른 것을 사는 데 사용될 준비가 된 채로 당신의 지갑으로 돌아갈 것입니다.
Bitcoin UTXO는 정확히 이렇게 작동합니다. 거래를 할 때, 이전 Bitcoin 거래의 출력, 즉 당신의 Bitcoin 잔돈은 새로운 거래의 입력으로 사용됩니다.
실제 현금 거래와 UTXO의 또 다른 주요 비교점은 둘 다 **전액 사용**되어야 하며 **분할될 수 없다**는 것입니다. 5 Bitcoin UTXO를 가지고 있고 누군가에게 1 BTC를 보내고 싶다면, 5 Bitcoin 가치의 전체 UTXO를 보내고 수수료를 제외한 4 BTC 가치의 새로운 UTXO를 돌려받아야 합니다.
위 예시에서 10달러짜리 점심값을 지불하기 위해 20달러 지폐 전체를 건네는 것과 같습니다.
UTXO가 사용되면 "소비"된 것으로 간주되며 기술적으로 유통에서 제거됩니다.
남은 잔돈은 완전히 새로운 UTXO로 생성됩니다. UTXO 시스템의 이 부분은 Bitcoin이 **이중 지불 문제**를 해결하는 방식입니다.
상점 주인에게 5달러 지폐를 주고 나서 같은 5달러 지폐를 다른 사람에게 줄 수 없는 것처럼, Bitcoin 사용자는 동일한 미사용 거래 출력을 두 개의 별도 디지털 거래에서 성공적으로 사용할 수 없습니다.
한 사람이 동일한 UTXO를 두 번 사용하려고 하면, 두 거래는 mempool(대기 중인 거래를 위한 일종의 대기실)에 들어가게 됩니다. 이들은 proof-of-work 경쟁에서 승리한 성공적인 채굴자들이 새로운 블록으로 묶을 때까지 여기에 남아 있습니다.
이 과정에 대한 자세한 내용은 Kraken 학습 센터 기사 Bitcoin 채굴이란 무엇인가요?에서 확인할 수 있습니다.
두 거래가 두 개의 별도 블록으로 묶여 동시에 처리되더라도, 타임스탬프 때문에 한 거래가 다른 거래보다 먼저 검증됩니다. 여러 번의 확인(블록체인에 새 블록이 추가됨)이 지나면 다른 노드들은 두 번째 유효하지 않은 거래에 플래그를 지정하고 거부합니다.
코인베이스 거래
Bitcoin 거래에 입력이 없는 유일한 경우는 채굴을 통해 새로 발행된 BTC가 생성될 때입니다.
**코인베이스 거래**로 알려진 이것은 각 새 블록의 첫 번째 거래를 나타냅니다.
유통되는 모든 satoshi(Bitcoin의 하위 단위)는 투명한 블록체인 원장을 사용하여 해당 코인베이스 거래까지 추적할 수 있습니다.
Bitcoin은 왜 UTXO 모델을 사용할까요?
계정 잔액
사용자의 잔액(UTXO 세트라고도 함)을 식별하기 위해 암호화폐 지갑 소프트웨어는 블록체인을 스캔하여 해당 공개 지갑 주소와 관련된 모든 UTXO를 찾습니다.
모든 UTXO의 총합은 지갑 소유자가 얼마나 많은 암호화폐를 통제하는지에 대한 정확한 정보를 제공합니다.
UTXO가 사용되면 수신자의 공개 지갑 주소가 해당 금액에 할당되고, 실행되면 새로운 UTXO가 블록체인에 기록됩니다.
저장
Bitcoin UTXO는 Bitcoin 블록체인의 블록에 저장되는 다양한 거래에 기록됩니다. 그러나 이 정보는 명확하게 색인화되어 있지 않아 메타데이터를 빠르게 검색하고 수집하기 어려울 수 있습니다.
Bitcoin Core 클라이언트와 같은 지갑 소프트웨어를 사용할 때, UTXO 메타데이터는 LevelDB 데이터베이스를 사용하여 저장되고 색인화됩니다.
LevelDB는 2011년 Google이 만든 오픈 소스 저장 시스템으로, UTXO를 훨씬 빠르게 찾을 수 있도록 합니다.
Bitcoin Core 클라이언트는 Bitcoin 블록체인 네트워크에 연결하는 데 사용되는 인기 있는 소프트웨어입니다. 원래 Satoshi Nakamoto가 만들었으며, Bitcoin Core는 현재 자발적인 개발자 커뮤니티에 의해 유지 관리됩니다.
UTXO의 내부 작동 방식 🚗
더 기술적인 수준에서, 거래에는 네 가지 주요 부분이 있습니다.
- 버전: 이는 네트워크 노드에 사용 중인 클라이언트 소프트웨어 버전을 알려줍니다. 다른 버전은 거래 데이터를 검증하기 위한 다른 규칙을 따릅니다.
- 잠금 시간(Locktime): 이는 거래가 블록체인에 추가되는 속도를 결정하는 시간입니다. 이 입력은 채굴 노드에 의해 거래가 처리될 수 있는 가장 빠른 시간을 지시합니다.
- 입력: 자금의 출처 또는 UTXO가 생성된 이전 거래를 가리키는 정보입니다. 입력에는 "잠금 해제 스크립트"라고 불리는 것도 포함됩니다.
- 출력: 전송되는 가치, 자금 소유권이 재할당되는 지갑, 그리고 새로 형성된 UTXO에 관한 정보입니다. 출력에는 "잠금 스크립트"도 포함됩니다.
UTXO가 실제 현금과 다른 점
실제 지폐 비유와 UTXO 모델의 주요 차이점은 Bitcoin 및 기타 UTXO 기반 암호화 자산이 5달러, 10달러, 15달러 등과 같은 정해진 금액에 묶여 있지 않다는 것입니다. 모든 Bitcoin 금액(소수점 이하 8자리까지)은 미사용 거래 출력(UTXO)이 될 수 있습니다.
예를 들어, 거래에서 0.0003847 BTC가 남을 수 있습니다.
이 금액은 새로운 UTXO가 되며, 사용될 경우 전액 사용되어야 하고 더 작은 금액으로 나눌 수 없습니다.
John이 1 Bitcoin의 암호화폐 지갑 잔액을 가지고 있다고 가정해 봅시다. 그의 잔액과 그 잔액의 구성은 두 가지 다른 것입니다. 마치 지갑에 100달러가 있지만 20달러 지폐 4장, 5달러 지폐 2장, 10달러 지폐 1장으로 구성될 수 있는 것과 같습니다.
John의 1 BTC 잔액 구성이 5개의 다른 미사용 거래 출력으로 이루어져 있다고 가정해 봅시다.
- 0.138 BTC
- 0.1 BTC
- 0.004 BTC
- 0.73 BTC
- 0.028 BTC
John은 Jane에게 0.6 BTC를 보내고 싶어 합니다. 이를 위해 John의 지갑 소프트웨어는 그가 통제하는 여러 UTXO를 자동으로 묶어 이 거래와 이를 처리하는 데 필요한 채굴자 수수료를 충당할 것입니다.
이 예에서, 그의 지갑 소프트웨어는 John의 0.73 BTC 가치 Bitcoin UTXO를 Jane에게 자동으로 보내고, 거래 수수료를 제외한 남은 금액을 새로운 UTXO로 John에게 돌려준다고 가정해 봅시다.
이 금액은 자동으로 변경 주소(change address)로 전송됩니다. 변경 주소는 귀하의 암호화폐 지갑에 연결된 별도의 주소입니다.
잠금 및 잠금 해제 스크립트 🔒
UTXO가 생성될 때, 수신자의 공개 지갑 주소를 사용하여 잠깁니다. 해당 UTXO를 새로운 거래의 입력으로 사용하려면 먼저 발신자의 디지털 서명을 사용하여 잠금을 해제해야 합니다.
이것은 Bitcoin 거래에 대해 이해해야 할 또 다른 중요한 사항입니다. 거래가 이루어질 때, Bitcoin은 디지털 방식으로 한 계정에서 다른 계정으로 이동하지 않습니다. 대신, 잠금이 해제되고 새로운 소유자에게 재할당된 다음 다시 잠깁니다.
이는 새로운 소유자만이 자신의 디지털 서명을 사용하여 자금을 잠금 해제하고 다른 곳으로, 즉 다른 사람에게 또는 자신의 통제 하에 있는 다른 지갑으로 전송할 수 있음을 의미합니다.
스크립트는 Bitcoin이 UTXO 잠금 및 잠금 해제를 포함한 거래를 처리하는 데 사용하는 프로그래밍 언어입니다.
- 잠금 스크립트(ScriptPubKey): UTXO가 잠길 때, 잠금 스크립트(ScriptPubKey로 알려짐)는 UTXO가 입력으로 사용되기 전에 충족되어야 하는 조건을 설정합니다. 이는 일반적으로 디지털 서명을 제공하여 UTXO를 잠그는 데 사용된 공개 지갑 주소에 해당하는 개인 키를 소유하고 있음을 증명하는 것을 포함합니다.
- 잠금 해제 스크립트(ScriptSig): UTXO의 잠금을 해제하려면 잠금 스크립트가 설정한 조건을 충족해야 합니다. 즉, UTXO를 잠그는 데 사용된 공개 키에 해당하는 개인 키를 제어하고 있음을 증명하는 디지털 서명을 제공해야 합니다.
이는 다른 사람이 해당 자금에 접근하고 사용할 수 없도록 방지합니다.
Bitcoin dust란 무엇인가요?
Bitcoin dust는 이전 거래에서 남은 극히 미미한 양의 satoshi를 포함하는 UTXO를 의미합니다.
이 미미한 양의 BTC는 그 가치보다 처리 수수료가 더 많이 들기 때문에, 종종 다른 UTXO와 함께 묶여 사용되기를 기다리며 변경 주소에 남아 있습니다.
더스팅 공격이란 무엇인가요?
더스팅 공격은 사기꾼들이 수십만 개의 다른 지갑 주소로 dust를 보내는 것을 의미합니다. 그 목적은 소셜 엔지니어링 공격의 잠재적 대상을 파악하는 것입니다.
사기꾼은 자신이 보낸 dust를 포함하는 주소를 주시하며, 소유자가 자신의 지갑에 연결된 다른 주소의 UTXO를 함께 묶는 거래를 할 때까지 기다립니다. dust UTXO는 매우 작기 때문에 다른 UTXO와 함께 묶여 입력으로 사용될 가능성이 높습니다.
일단 이런 일이 발생하면, 사기꾼은 그 사람이 어떤 자금을 가지고 있는지 파악할 수 있습니다. 그런 다음 거래에 피싱 메시지를 삽입하여 소유자가 악성 코드를 다운로드하는 링크를 클릭하거나, 합법적인 랜딩 페이지를 모방한 가짜 웹사이트를 방문하여 개인 정보를 요청하도록 유도할 수 있습니다.
Bitcoin 더스팅 공격은 얼마나 위험한가요?
더스팅 공격은 사기꾼에게 귀하의 자금에 대한 접근 권한을 주지 않습니다.
이들은 단순히 특정 암호화폐 지갑이 제어하는 주소를 좁히는 역할을 합니다.
더스팅 공격의 위험을 최소화하려면 dust 거래에 첨부된 링크를 클릭하거나 웹사이트를 방문하지 않는 것이 가장 좋습니다.
Bitcoin 구매 시작하기
이제 미사용 거래 출력 모델에 대해 모두 배우셨으니, 암호화폐 여정을 계속하고 Bitcoin을 구매할 준비가 되셨나요?
Bitcoin (BTC) 구매 방법에 대한 자세한 내용은 Kraken 학습 센터 가이드를 확인하고, 지금 Kraken 계정에 가입하세요.