ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 비트코인에 UTXO방식이란 무엇을 뜻하는가?
    블록체인 2024. 9. 13. 07:01
    728x90
    반응형

    UTXO(Unspent Transaction Output) 방식은 비트코인의 핵심적인 거래 처리 방식으로, 미사용 트랜잭션 출력을 기반으로 작동합니다. 이는 비트코인의 트랜잭션을 추적하고 검증하는데 중요한 개념입니다. UTXO 모델은 복잡한 방식으로 보일 수 있지만, 간단히 말하면 "사용되지 않은 자금의 기록"을 유지하는 시스템입니다.

    아래에서는 UTXO 개념을 아주 상세히 설명하겠습니다.

    1. UTXO 기본 개념

    UTXO는 말 그대로 아직 사용되지 않은 트랜잭션 출력입니다. 비트코인의 모든 트랜잭션은 입력출력으로 구성되며, 출력 중에서 아직 다른 트랜잭션에 사용되지 않은 것들이 UTXO입니다.

    • 입력(Input): 트랜잭션을 만들 때 사용하는 이전 트랜잭션의 UTXO. 즉, 이전 트랜잭션의 출력 중에서 사용되지 않은 부분을 새로운 트랜잭션에서 사용함.
    • 출력(Output): 새로운 트랜잭션에서 생성되는 자금의 분배. 이 중에서 아직 사용되지 않은 부분이 UTXO로 남음.

    예시:
    Alice가 Bob에게 1 BTC를 송금한다고 할 때, Alice의 지갑에서 1 BTC에 해당하는 UTXO를 입력으로 사용하고, 그 결과로 Bob에게 1 BTC가 전달됩니다. 이때 Bob의 지갑에 있는 1 BTC는 새로운 UTXO가 됩니다.

    2. UTXO의 작동 방식

    트랜잭션 구조

    비트코인의 트랜잭션은 두 가지 주요 부분으로 구성됩니다:

    1. 입력(Input): 이전 트랜잭션의 미사용 출력(UTXO)을 참조하여 새 트랜잭션을 생성하는 데 사용됩니다.
    2. 출력(Output): 해당 트랜잭션이 발생한 후에 수신자가 받을 자금을 나타냅니다. 이 출력은 새로운 UTXO로 기록됩니다.

    트랜잭션 처리 흐름

    • 사용자는 이전 트랜잭션에서 생성된 UTXO를 자신의 트랜잭션의 입력으로 사용합니다.
    • 입력된 UTXO를 바탕으로 새로운 트랜잭션을 생성하면, 새로운 트랜잭션의 출력은 새로운 UTXO가 됩니다.
    • 이전에 사용된 UTXO는 "소모"된 것으로 간주되어 더 이상 사용할 수 없으며, 새로운 트랜잭션에서 사용 가능한 UTXO만 남게 됩니다.

    중요한 특징

    • 입력의 총합 >= 출력의 총합: 트랜잭션을 만들 때, 입력(사용된 UTXO)의 총합이 출력(새로 만들어진 UTXO)의 총합보다 크거나 같아야 합니다. 잉여 부분은 네트워크에 트랜잭션 수수료로 지급됩니다.
    • 잔돈 관리: 입력된 UTXO가 송금할 금액보다 크면, 남은 금액은 "잔돈"으로 새로운 UTXO로 생성되어 사용자의 지갑으로 돌아옵니다. 예를 들어, Alice가 1.5 BTC UTXO를 가지고 Bob에게 1 BTC를 보낸다면, 0.5 BTC는 Alice에게 다시 UTXO 형태로 반환됩니다(수수료 제외).

    3. UTXO의 장점

    • 간편한 검증: 각 트랜잭션의 입력은 이미 존재하는 UTXO를 기반으로 하기 때문에, 네트워크는 해당 입력이 유효한지(즉, 이전에 사용되지 않았는지) 검증하는 것이 간단합니다.
    • 병렬 처리: UTXO는 독립적인 데이터 구조이므로 병렬 처리가 가능합니다. 이는 비트코인 노드가 여러 트랜잭션을 동시에 처리할 수 있음을 의미합니다.
    • 보안성: 트랜잭션에서 사용된 UTXO는 소모된 것으로 기록되기 때문에 이중 지불(double spending)을 방지하는 데 도움이 됩니다. 동일한 UTXO는 한 번만 사용할 수 있습니다.

    4. UTXO와 잔고 개념의 차이

    UTXO 모델은 전통적인 은행 시스템의 잔고 기반 모델과는 다릅니다. 은행 시스템에서는 계좌에 잔고가 누적되고 그 잔고에서 금액이 차감되지만, UTXO 모델에서는 잔고가 아닌 "미사용 트랜잭션 출력"을 추적합니다. 사용자 지갑에서 보유한 비트코인은 각 UTXO의 합계로 계산됩니다.

    예시:

    • Alice가 0.7 BTC와 0.3 BTC UTXO 두 개를 보유하고 있다면, 그녀의 총 비트코인 잔액은 1.0 BTC입니다. 하지만 이는 하나의 값이 아닌 두 개의 UTXO에 의해 구성됩니다.
    • Alice가 0.5 BTC를 보내려고 할 때, 그녀는 두 UTXO를 입력으로 사용하여 트랜잭션을 만들고, 그 중 0.5 BTC를 보낸 뒤 남은 0.5 BTC는 자신의 주소로 돌아옵니다.

    5. UTXO의 데이터 관리

    비트코인 네트워크는 모든 UTXO를 추적하고 관리하기 위해 UTXO 집합을 유지합니다. 이 UTXO 집합은 네트워크에 있는 모든 사용되지 않은 트랜잭션 출력을 포함하고 있으며, 노드는 이를 통해 트랜잭션을 검증하고 처리합니다.

    6. UTXO 모델과 계정 기반 모델 비교

    비트코인의 UTXO 모델은 이더리움 같은 플랫폼에서 사용하는 계정 기반 모델과 비교되기도 합니다. 계정 기반 모델에서는 사용자의 계정이 있고 그 안에서 잔액을 관리하는 방식으로, 트랜잭션이 발생할 때 잔액에서 바로 차감됩니다. UTXO 모델과의 주요 차이는 다음과 같습니다:

    • UTXO 모델: 각 트랜잭션이 미사용 출력(UTXO)을 기반으로 하여 작동. 트랜잭션은 독립적으로 처리될 수 있으며, 다중 입출력이 가능한 구조.
    • 계정 모델: 하나의 계좌에 잔액이 존재하고, 해당 잔액을 차감하여 트랜잭션을 처리. 단일 입출력 구조로 이루어지는 경우가 많음.

    요약

    비트코인의 UTXO 모델은 사용자가 소유한 비트코인을 단일 잔고로 보는 대신, 사용되지 않은 트랜잭션 출력들의 집합으로 추적하는 방식입니다. 이를 통해 트랜잭션의 효율성과 보안성을 높이고, 네트워크 전체에서 검증 및 처리를 용이하게 합니다.

     

    UTXO가 N개여도 송금을 하고나면 1개의 UTXO(트랜잭션)으로 대체된다

     

    세 개의 UTXO가 있을 경우에도 기본 원리는 동일하게 적용됩니다. 비트코인 트랜잭션은 항상 사용된 UTXO를 완전히 소모하고 새로운 UTXO를 생성합니다. Alice가 1.0 BTC, 0.5 BTC, 1.0 BTC의 세 가지 UTXO를 가지고 있고, Bob에게 1 BTC를 보내려 한다면, Alice는 필요에 따라 여러 UTXO를 입력으로 사용할 수 있습니다.

    이 경우 트랜잭션의 구성은 다음과 같습니다:

    1. 입력 (Input):
      • 1.0 BTC UTXO (Alice 소유)
      • 0.5 BTC UTXO (Alice 소유)
      • 1.0 BTC UTXO (Alice 소유) => 총 입력 금액: 2.5 BTC
    2. 출력 (Output):
      • 1.0 BTC UTXO (Bob에게 보냄)
      • 1.5 BTC UTXO (잔돈, Alice에게 반환) — 수수료 제외

    세 개의 입력을 모두 사용하고, 그에 따라 총합 2.5 BTC가 트랜잭션에 입력됩니다. 이 금액에서 Bob에게 보낼 1 BTC를 제외하고 남은 1.5 BTC는 Alice에게 새로운 UTXO로 반환됩니다.

    즉, 몇 개의 UTXO를 사용하든지 상관없이, 선택된 UTXO는 모두 소모되고, 그에 상응하는 새 UTXO들이 생성되어 잔돈과 송금액을 처리합니다.

    728x90
    반응형
Designed by Tistory.