비트코인 거래 메커니즘: UTXO, 공개키 암호화, 및 스크립팅

비트코인을 이해하려면 먼저 가상 금고에 앉아 있는 디지털 코인의 개념을 버려야 합니다. 전통적인 은행 세계에서 돈은 계좌 잔액으로 정의됩니다. 은행에 돈이 있으면 중앙 데이터베이스에 귀하의 이름 옆에 특정 숫자가 기록되어 있습니다. 비트코인은 완전히 다르게 작동합니다. 물리적 코인은 없으며, 개별 코인을 나타내는 디지털 파일도 없습니다. 프로토콜 계층에 사용자의 잔액을 단순히 나열하는 계좌도 없습니다.

대신 전체 시스템은 거래 기록에 의존합니다. 우리가 "비트코인"이라고 부르는 것은 본질적으로 가치 이전 기록을 반영하는 디지털 서명 체인입니다. 소유권은 정적 객체를 보유함으로써가 아니라 이 장부에 새로운 항목을 생성할 수 있는 능력으로 확립됩니다. 사용자가 지갑 잔액을 확인할 때 소프트웨어는 실제로 블록체인을 전체 스캔하여 키로 접근 가능한 모든 미사용 거래의 합계를 계산합니다.

이러한 구조적 차이는 네트워크가 탈중앙화된 상태를 유지하는 데 근본적입니다. 잔액의 마스터 장부를 업데이트하는 중앙 은행이 없기 때문에 네트워크는 투명하고 검증 가능한 소유권 체인에 의존합니다. 모든 거래는 이전 거래를 가리키며, 코인이 채굴자에 의해 처음 발행된 순간까지 연결됩니다. 이 구조는 가치가 허공에서 창조될 수 없도록 하고 모든 비트코인 조각의 기록이 추적 가능하고 불변임을 보장합니다.

소유권의 기초: 공개키 암호화

키 쌍 이해

비트코인 거래 메커니즘의 핵심에는 공개키 암호화가 있습니다. 이 수학적 프레임워크는 사용자가 중앙 기관에 등록하지 않고도 안전한 디지털 ID를 생성할 수 있게 합니다. 소유권은 키 쌍의 소유로 정의됩니다: 개인 키와 공개 키입니다. 개인 키는 비밀번호와 유사하지만 훨씬 더 복잡한 무작위 생성 비밀입니다. 이는 자금을 이동할 권한을 부여합니다.

공개 키는 개인 키에서 수학적으로 파생됩니다. 보안을 손상시키지 않고 공개적으로 공유할 수 있습니다. 이 공개 키에서 네트워크는 비트코인 주소를 생성하며, 이는 자금의 목적지 역할을 합니다. 이 일방향 구조가 중요합니다. 개인 키에서 공개 키를 쉽게 생성할 수 있지만, 공개 키에서 개인 키를 역으로 파생하는 것은 불가능합니다.

이 비대칭성은 네트워크가 신뢰 없이 작동할 수 있게 합니다. 사용자가 자금을 받으려면 주소를 공유합니다. 자금을 지출하려면 개인 키를 사용하여 메시지를 암호화 서명합니다. 이 서명은 자금을 보유한 주소와 연결된 개인 키를 소유하고 있음을 증명하며, 네트워크나 수신자에게 개인 키 자체를 공개하지 않습니다.

디지털 서명의 역할

비트코인 거래는 효과적으로 "이 특정 비트코인을 이 새 주소로 이동합니다."라는 메시지입니다. 이 메시지를 유효하게 하려면 디지털 서명해야 합니다. 디지털 서명은 발신자의 개인 키를 거래 데이터에 적용하여 생성되며, 해당 거래에만 특정한 고유 데이터 문자열을 생성합니다.

거래 세부 사항의 일부라도 변경되면—예를 들어 금액이나 목적지 주소—서명이 더 이상 일치하지 않습니다. 이는 거래가 서명 및 방송된 후 제3자가 변조할 수 없음을 보장합니다. 네트워크 참여자 또는 노드는 발신자의 공개 키를 사용하여 서명을 수학적으로 검증할 수 있습니다.

수학이 일치하면 네트워크는 거래가 합법적이며 진정한 소유자에 의해 승인되었음을 알 수 있습니다. 실패하면 거래는 즉시 거부됩니다. 이 검증은 전 세계 수천 대의 컴퓨터에서 자동으로 발생하며, 인간 개입 없이 네트워크를 보호합니다.

구성 요소 기능 공개 여부
Private Key 거래 서명으로 소유권 증명 비밀 (소유자 전용)
Public Key 주소에 대한 서명 검증 공개 (네트워크)
Address 자금 수신 목적지 공개 (누구나)

미사용 거래 출력 (UTXO) 모델

비트코인이 가치를 처리하는 방법

대부분의 사람들은 은행과 신용카드가 사용하는 "계좌 기반" 모델에 익숙합니다. 그 시스템에서 100달러를 가지고 20달러를 지출하면 은행은 데이터베이스 항목을 80달러로 단순히 업데이트합니다. 비트코인은 미사용 거래 출력 (UTXO) 모델로 알려진 다른 논리를 사용합니다. 이 시스템에는 지속적인 잔액이 없으며, 받았지만 아직 지출되지 않은 비트코인 덩어리만 있습니다.

이 UTXO를 다양한 크기의 디지털 현금이나 금 덩어리로 상상해 보세요. 0.5 BTC 거래를 받고 0.3 BTC를 또 받으면 지갑에 두 개의 별개의 UTXO를 보유하게 됩니다. 지갑 소프트웨어가 편의를 위해 총합을 표시하더라도 블록체인상에서 0.8 BTC "코인"으로 병합되지 않고 별개의 가치 기록으로 남습니다.

거래를 시작할 때 지갑은 보내려는 금액을 충당할 충분한 UTXO를 선택합니다. UTXO를 반으로 자를 수 없으며 전체를 지출해야 합니다. 이는 물리적 현금과 유사합니다. 20달러 지폐를 찢어 10달러 물건을 지불할 수 없습니다. 전체 지폐를 주고 거스름돈을 받아야 합니다.

입력, 출력 및 거스름돈

모든 비트코인 거래는 입력과 출력으로 구성됩니다. 입력은 지금 지출하는 이전 UTXO에 대한 참조입니다. 출력은 그 가치의 새 목적지입니다. 거래를 구성할 때 기존 UTXO를 입력으로 소비하고 새 UTXO를 출력으로 생성합니다.

예를 들어 채굴자가 6.25 BTC 블록 보상을 받으면 이는 단일 UTXO입니다. 채굴자가 Alice에게 1 BTC를 보내려면 단순히 1 BTC를 보낼 수 없습니다. 6.25 BTC UTXO를 입력으로 하는 거래를 구성해야 합니다. 이 거래는 두 개의 출력을 가집니다.

첫 번째 출력은 Alice에게 1 BTC를 보냅니다. 두 번째 출력은 나머지 5.25 BTC를 채굴자 자신의 주소로 보냅니다. 이 두 번째 출력은 "거스름돈 출력"으로 알려져 있습니다. 블록체인상에서 원래 6.25 BTC UTXO는 지출된 것으로 표시되어 미래 거래에 유효하지 않습니다. 대신 두 개의 새 UTXO(1 BTC 및 5.25 BTC)가 생성되고 기록됩니다. 이 입력과 출력 체인은 통화의 깨지지 않는 기록을 만듭니다.

비트코인 스크립트: 거래의 언어

스택 기반 실행

비트코인 거래는 단순한 가치 이전이 아니라 프로그래머블 지시사항입니다. 이러한 지시사항은 비트코인 스크립트라는 언어로 작성됩니다. 일반 소프트웨어 개발에 사용되는 복잡한 프로그래밍 언어와 달리 스크립트는 의도적으로 단순합니다. "스택 기반"으로, 항목을 목록(스택)에 밀어 넣고 상단 항목에 작업을 수행하여 데이터를 처리합니다.

스크립트는 튜링 완전하지 않습니다. 이는 무한 루프나 복잡한 논리를 생성할 수 없음을 의미합니다. 이 설계 선택은 의도적인 보안 기능입니다. 언어의 복잡성을 제한함으로써 네트워크는 노드를 충돌시키거나 계산 비용이 많이 드는 명령으로 시스템을 방해할 수 있는 무한 루프를 방지합니다.

스크립트는 UTXO가 지출되기 위한 조건을 규정합니다. 거래가 생성될 때 발신자는 출력에 "잠금 스크립트"(ScriptPubKey)를 첨부합니다. 이 스크립트는 본질적으로 "이 특정 공개 키 해시에 맞는 서명을 제공할 수 있는 사람만 이 자금을 이동할 수 있습니다."라고 말합니다.

해제 및 검증

나중에 그 자금을 지출하려면 소유자는 "해제 스크립트"(ScriptSig)를 포함한 새 거래를 생성합니다. 이 스크립트는 디지털 서명과 공개 키를 포함합니다. 노드가 거래를 검증할 때 두 스크립트를 함께 실행합니다. 이전 거래의 잠금 스크립트 뒤에 해제 스크립트를 스택에 배치합니다.

노드는 지시사항을 순차적으로 실행합니다. 최종 결과가 "True"이면 거래가 유효하며 자금이 이동할 수 있습니다. "False"이면 거래가 무효입니다. 이 메커니즘은 단순 소유권보다 복잡한 조건을 허용합니다.

예를 들어 스크립트는 여러 서명(Multi-Sig)을 요구하도록 작성될 수 있으며, 지정된 세 키 중 두 개가 서명해야 자금이 이동합니다. 스크립트는 또한 특정 블록 높이에 도달할 때까지 자금 지출을 방지하는 시간 잠금을 적용할 수 있습니다. 이 프로그래머블 기능은 라이트닝 네트워크와 사이드체인 같은 고급 기능의 기반으로, 복잡한 스크립트를 사용하여 더 빠르고 저렴한 오프체인 결제를 가능하게 합니다.

거래 수명 주기: 지갑에서 블록체인까지

생성 및 방송

비트코인 거래의 여정은 사용자 지갑 소프트웨어에서 시작됩니다. 지갑은 사용자의 사용 가능한 UTXO에서 필요한 입력을 수집하고 출력을 정의합니다. 입력과 출력의 차이를 계산하여 거래 수수료가 됩니다. 세부 사항이 설정되면 지갑은 개인 키를 사용하여 디지털 서명을 생성합니다.

이 서명된 데이터 패킷은 네트워크로 방송됩니다. 사용자 노드는 피어에게 메시지를 보내고, 이는 전 세계로 전파됩니다. 거래를 받은 각 노드는 초기 검사를 수행합니다. 디지털 서명이 유효한지, 입력이 이미 지출되지 않았는지, 거래 가치가 음수가 아닌지를 확인합니다.

거래가 이러한 검사를 통과하면 노드는 "mempool"(메모리 풀)로 알려진 임시 보관 영역에 추가합니다. mempool은 단일 중앙 큐가 아니라 각 노드가 저장하는 유효하고 확인되지 않은 거래의 로컬 컬렉션입니다. 이 단계에서 거래는 네트워크에 알려졌지만 영구 블록체인 기록의 일부는 아닙니다.

수수료 시장 및 우선순위화

비트코인 블록체인의 블록은 제한된 크기 용량을 가지므로 mempool의 모든 거래가 다음 블록에 들어갈 수 없습니다. 이 희소성은 수수료 시장을 만듭니다. 블록을 구성하는 채굴자는 데이터 바이트당 최고 수수료를 지불하는 거래를 포함하도록 재정적으로 동기부여됩니다.

수수료는 보내는 비트코인 가치가 아니라 거래의 데이터 크기로 결정됩니다. 1,000만 달러를 이동하는 거래는 하나의 입력과 출력만 사용하면 데이터 크기가 매우 작을 수 있습니다. 반대로 100달러를 이동하는 거래는 지불을 위해 50개의 작은 입력의 먼지를 모으면 데이터 크기가 클 수 있습니다.

거래를 빠르게 확인받고 싶은 사용자는 채굴자를 유인할 만큼 경쟁력 있는 수수료를 붙여야 합니다. 네트워크 혼잡 기간 동안 mempool은 확인되지 않은 거래로 가득 차며, 채굴자는 자연스럽게 최고 입찰자를 선택합니다. 낮은 수수료 거래는 트래픽이 줄거나 발신자가 수수료를 높일 때까지 mempool에 몇 시간 또는 며칠 머물 수 있습니다.

채굴 및 합의

채굴자는 거래 메커니즘을 확정짓는 최종 역할을 합니다. 채굴자는 mempool에서 거래 배치를 선택하여 후보 블록을 형성합니다. 그런 다음 작업 증명(PoW)에 참여하며, 블록 데이터에 기반한 수학 퍼즐을 해결하기 위해 경쟁합니다.

이 과정은 블록 헤더를 논스(nonce)라는 난수로 반복 해싱하여 결과 해시가 특정 목표 난이도 아래로 떨어질 때까지 요구합니다. 난이도는 2,016 블록마다 자동 조정되어 네트워크에 참여하는 컴퓨팅 파워와 무관하게 새 블록이 약 10분마다 발견되도록 합니다.

채굴자가 유효한 솔루션을 찾으면 새 블록을 네트워크로 방송합니다. 다른 노드는 블록을 받고 솔루션을 검증하며, 블록에 포함된 모든 거래를 재검증하여 규칙 위반이 없는지 확인합니다. 검증되면 노드는 블록체인 로컬 복사본을 업데이트하고 mempool에서 포함된 거래를 제거합니다. 이제 거래가 확인되었습니다.

이중 지출 문제 해결

디지털 중복의 도전

디지털 영역에서 정보는 쉽게 복사됩니다. 이메일로 사진을 보내면 원본 파일을 여전히 보유합니다. 디지털 통화에서 이는 이중 지출 문제로 알려진 치명적 취약점을 만듭니다. 이를 방지하는 메커니즘이 없으면 악의적 행위자는 상인에게 1 BTC를 보내는 거래에 서명하고 동시에 같은 1 BTC를 자신이나 다른 당사자에게 보내는 다른 거래에 서명할 수 있습니다.

중앙화된 시스템에서 은행은 마스터 장부를 유지하여 이를 방지합니다. 탈중앙화 네트워크에서는 어느 거래가 먼저 왔는지 말할 중앙 기관이 없습니다. 비트코인은 공개 블록체인 장부와 작업 증명을 결합하여 이를 해결합니다.

모든 전체 노드가 블록체인의 완전한 복사본을 유지하므로 네트워크 전체가 현재 유효한 UTXO에 합의합니다. 사용자가 두 개의 상충되는 거래를 방송하려 하면 노드는 처음 본 것을 수락하고 이미 참조된 입력을 지출하려는 시도로 두 번째를 거부합니다.

작업 증명을 통한 비가역성

그러나 타이밍 차이로 인해 다른 노드가 일시적으로 다른 진실 버전을 수락할 수 있습니다. 여기서 채굴이 결정적입니다. 비트코인의 "진실"은 가장 많은 작업 증명을 축적한 가장 긴 체인으로 정의됩니다. 거래가 블록에 포함되면 이 공식 기록의 일부가 됩니다.

이미 블록에서 확인된 거래를 역전하거나 이중 지출하려면 공격자는 네트워크 전체의 나머지보다 그 블록과 이후 모든 블록을 더 빠르게 재채굴해야 합니다. 이는 51% 공격으로 알려져 있으며, 이를 달성하는 데 필요한 막대한 에너지와 하드웨어 비용으로 장부가 사실상 불변합니다.

특정 거래가 포함된 블록 위에 더 많은 블록이 추가될수록 보안이 기하급수적으로 증가합니다. 하나의 확인을 가진 거래는 일반적으로 안전하지만, 여섯 확인을 가진 거래는 정상 네트워크 조건에서 수학적으로 역전 불가능합니다. 이 메커니즘은 일반적으로 쉽게 복사되는 디지털 데이터를 고유하고 유한한 디지털 자산으로 전환합니다.

네트워크 무결성에서 노드의 역할

검증 vs. 채굴

채굴자만 네트워크를 보호한다는 오해가 일반적입니다. 채굴자는 거래를 정렬하고 블록을 생성하지만, "노드"는 규칙을 집행하는 감사자입니다. 노드는 블록체인을 저장하고 트래픽을 검증하는 비트코인 소프트웨어를 실행하는 모든 컴퓨터입니다.

전체 노드는 모든 블록과 거래를 다운로드합니다. 디지털 서명을 확인하고 입력 금액이 출력 금액을 충당하는지, 코인이 이중 지출되지 않는지 확인합니다. 중요하게도 노드는 채굴자의 작업을 검증합니다. 채굴자가 자신에게 너무 많은 비트코인을 수여하거나 무효 거래를 포함하는 블록을 생성하면 노드는 즉시 블록을 거부합니다.

이 거부는 채굴자가 블록 생성에 쏟은 에너지와 무관하게 발생합니다. 이 권력 균형은 채굴자가 시스템 규칙을 변경하거나 추가 돈을 인쇄할 수 없도록 합니다. 그들은 프로토콜의 하인으로, 전 세계 개인과 기업이 운영하는 탈중앙화 노드 네트워크에 의해 견제됩니다.

탈중앙화 및 신뢰성

비트코인 거래 메커니즘의 견고함은 이러한 노드의 다양성과 수에 의존합니다. 노드가 더 분산될수록 거래를 검열하거나 네트워크를 종료하기 어려워집니다. 노드는 P2P로 통신하며 군중 속 소문처럼 거래 데이터를 전파합니다.

해킹할 중앙 서버가 없습니다. 인터넷 일부가 오프라인 상태가 되어도 나머지 노드는 계속 작동합니다. 연결이 끊긴 노드가 돌아오면 누락된 기록을 다운로드하여 네트워크와 동기화합니다. 이 아키텍처는 장부가 24/7 다운타임 없이 전 세계적으로 일관되고 이용 가능함을 보장합니다.

사용자는 자체 노드를 실행하여 재정 주권을 얻을 수 있습니다. 제3자 지갑 서비스에 의존하지 않고 자체 거래를 검증함으로써 재정 상태에 대해 타인을 신뢰할 필요가 없습니다. 이는 비트코인의 핵심 정신인 "신뢰하지 말고 검증하라"와 일치합니다.

네트워크 수수료 및 데이터 무게

비용 계산

비트코인 거래 비용은 종종 오해됩니다. 신용카드 처리 수수료처럼 보내는 금액의 백분율이 아닙니다. 대신 블록 공간에 대한 엄격한 지불입니다. 블록 공간은 블록당 특정 용량(개념적으로 1MB, SegWit 가중치로 확장됨)으로 제한된 희귀 상품입니다.

시스템이 UTXO 모델을 사용하기 때문에 거래의 데이터 크기는 입력과 출력의 복잡성에 따라 달라집니다. 10개의 작은 입력을 하나의 출력으로 통합하는 거래는 하나의 입력을 사용하는 거래보다 더 많은 디지털 서명 데이터를 포함합니다. 따라서 블록에서 더 많은 바이트를 소비합니다.

채굴자는 일반적으로 sat/vB(바이트당 사토시)로 데이터 단위당 요금을 청구합니다. "satoshi"는 비트코인의 가장 작은 단위(0.00000001 BTC)입니다. 현재 시장 요율이 50 sats/byte라면 간단한 거래는 2달러, 복잡한 거래는 10달러가 될 수 있으며, 동일한 가치를 이전하더라도 마찬가지입니다.

요인 수수료 영향 이유
입력 수 수수료 증가 각 입력은 디지털 서명 스크립트 필요
출력 수 수수료 증가 각 출력은 새 주소 데이터 추가
혼잡 요율 증가 높은 수요가 sat/byte 시장 가격 상승

혼잡 관리

네트워크 수수료는 수요에 따라 크게 변동합니다. mempool이 비어 있으면 최소 수수료를 지불해도 다음 블록에서 확인됩니다. 네트워크가 바쁠 때는 경쟁해야 합니다. 지갑은 일반적으로 mempool의 현재 백로그를 보고 필요한 수수료를 추정합니다.

수수료를 너무 낮게 설정한 사용자의 거래는 손실되지 않습니다. 단순히 mempool에 매달려 있습니다. 채굴자가 선택하지 않으면 노드 메모리에서 삭제되고 자금은 발신자 지갑에 효과적으로 남습니다. 긴급 상황에서 거래 가속기나 "Replace-by-Fee"(RBF) 프로토콜을 사용하여 멈춘 거래의 수수료를 높여 채굴자에게 더 높은 인센티브로 재방송할 수 있습니다.

결론

비트코인 거래 메커니즘은 신뢰 기반 금융 시스템에서 검증 기반 암호화 시스템으로의 전환을 나타냅니다. 계좌 잔액을 UTXO 모델로 대체함으로써 비트코인은 누구나 감사할 수 있는 디지털 소유권 체인으로 가치를 취급합니다. 공개키 암호화는 개인 키 소유자만 이러한 이전을 시작할 수 있도록 보장하며, 은행 금고나 ID 확인에 의존하지 않는 보안 수준을 제공합니다.

이 시스템은 노드, 채굴자, 비트코인 스크립트의 특정 규칙 간 상호작용으로 유지됩니다. 스크립트 언어는 의도적으로 범위가 제한되지만 소유권을 검증하고 네트워크 안정성을 손상시키지 않으면서 복잡한 지출 조건을 가능하게 하는 필요한 논리를 제공합니다. 경쟁 수수료 시장과 mempool은 블록 공간의 제한된 자원이 효율적으로 할당되도록 하며, 작업 증명은 장부를 불변으로 만드는 열역학적 보안을 제공합니다.

이러한 메커니즘을 이해하면 비트코인이 탈중앙화 장부로 묘사되는 이유가 드러납니다. 단순한 통화가 아니라 전 세계 합의로 유지되는 엄격하고 자동화된 회계 시스템입니다. 키의 수학부터 UTXO 세트의 입력까지 모든 측면이 중개자 없이 낯선 사람들이 가치를 교환할 수 있도록 설계되어 있으며, 권위가 아닌 코드로 이중 지출 문제를 해결합니다.

비트코인은 기관에 대한 신뢰를 암호화 증명으로 대체하여 가치 이전이 검증되고 불변하며 키 보유자에 의해 엄격히 소유됨을 보장합니다.