블록체인

UTXO란?

ziwookim 2022. 11. 9. 02:06

UTXO란?

UTXO는 Unspent Transaction Outputs의 약자로서, 미사용 트랜잭션 출력값을 말한다. 비트코인은 이더리움의 ‘계좌 잔고 모델’(Account Balance Model)과 달리 계정이나 잔고가 없고, 블록체인에 기록된 “소비되지 않은 출력값”을 통해 거래의 유효성을 검사하여 코인의 존재 여부를 확인한다. UTXO를 이용해, 이중 지불(Double Spending) 문제를 방지한다.

 

왜 UTXO를 써야 할까?

기존 은행시스템에서 송금 방식은 매우 간단하다. 송금 신청을 하면 은행에서 ‘잔액'을 확인하고, 잔액이 있다면 상대방의 통장으로 송금을 해준다. 이런 변동 내역은 고스란히 DB에 저장 되고, 잔액을 확인하게 될 때는 단순히 이름에 매칭 되어 있는 잔액을 확인해 준다.

 

그러나, 비트코인에서 위와 같은 방식을 사용하게 된다면 문제가 생길 수 있다. 현재 블록에는 n-1번째 블록의 정보가 있지만, 이전 블록의 정보는 Hash화 되어 있다. 즉, 과거의 내역을 ‘검증'할 수 있지만 과거의 내역들을 확인할 수는 없다. 또, 모든 Address에 대한 잔액을 갱신 시키며 블록을 생성하기에는 비효율적이다. 그렇기 때문에 비트코인에서 특정 Address에 대한 잔액 조회는 Genesis Block 부터 현재 Block 까지의 검사가 필요하다.

 

 

 UTXO개념의 이해

블록체인에서의 잔액 조회와 송금은 어떻게하며, UTXO는 무슨 역할을 할까? 예를 들어보겠다. 지금 주머니에 5만8,400원이 있다고 하자. 5만원 짜리와 5,000원 짜리 각 한 장, 1,000원짜리는 3장, 100원 짜리는 4개가 짤랑이고 있다. 이 5만원은 반으로 찢을 수는 없다. 5만원은 내 잔고 5만8,400원을 구성하는 하나의 기본 단위다. 나머지 5,000원 1,000원, 100원짜리도 마찬가지다.

이 각각의 지폐 또는 동전은 비트코인 네트워크로 치면 UTXO(Unspent Transaction Output·미사용 출력값)라는 개념에 근접한다. 원화라는 통화에 동전이나 지폐가 있듯, 비트코인에는 UTXO가 있다. 차이가 있다면 현금은 지폐나 동전 단위가 정해져 있지만 UTXO는 무수한 단위로 형성될 수 있다는 점 정도다. 1BTC짜리, 0.001BTC짜리, 5,734BTC짜리 등 이전 소유주가 보낸 덩어리 단위로 UTXO는 존재한다.

 

실제로는 비트코인의 단위는 '사토시' 단위로 적힌다. 1사토시는 1억분의 1BTC, 즉 0.00000001BTC다. 이에 가장 최하단위의 UTXO 금액은 1사토시이다. 비트코인은 앞으로 총 2,100만개 까지만 발행되므로 비트코인 네트워크에서 이론상 존재할 수 있는 가장 큰 UTXO의 크기는 2,100만 비트코인이다. (물론 어떤 참여자가 네트워크에 존재하는 모든 비트코인을 보유하고 있다가 이를 다른 이에게 한 번에 보낼 때 2,100만 비트코인짜리 UTXO가 만들어진다. 현실적으로는 일어나기 힘든 일이다.)

blockchain.info에 1QM23...18R인 내 주소를 검색하면 7.6BTC가 있다고 나오지만

사실은 3.1/ 2.8/ 1.2/ 0.5BTC가 들어있는 UTXO가 내 지갑주소 아래에 있는 것이다

비트코인 블록체인에서 돈을 보내는 작업은 크게 두 단계에 걸쳐 처리된다. 첫 번째가 거래(Transaction·트랜잭션)의 단계며, 두 번째가 채굴 단계다. 먼저 거래가 일어나면 이후 블록안에 이 거래가 담기는 구조다. UTXO는 이때 모든 거래의 기본 구성 요소다. 이에 거래 검증도 UTXO를 단위로 이뤄지며 거래 조작의 가능성도 UTXO 단위에서 일어난다. 블록체인에 최종 기록되는 정보도 따지고 보면 결국 누가 어떤 UTXO를 누구에게 보냈는가 하는 내용들다. UTXO가 비트코인의 거래와 전체 네트워크의 구조, 작동 원리를 이해하기 위해 반드시 알고 넘어가야 할 개념으로 꼽히는 이유도 이 때문이다.

'블록체인' 카테고리의 다른 글

DeFi 기반 금융 서비스 사례  (0) 2022.11.08
스마트 컨트랙트(Smart Contract)란?  (0) 2022.11.08
디앱(DApp)이란?  (0) 2022.11.08
포크, 하드포크와 소프트 포크 (Fork, Hard Fork vs Soft Fork)  (0) 2022.11.08
Nonce란?  (0) 2022.11.08