본문 바로가기
블록체인/블록체인이란?

UTXO 동작 원리

by 제이제이_은재 2022. 7. 7.
반응형

 

💡UTXO 동작 원리

비트코인은 특정 지갑에 저장되는 것이 아니라, 이 UTXO에 저장되며, 이 UTXO를 통해 코인의 존재 여부를 확인할 수 있다. 그렇다면 이 UTXO 는 어떻게 동작하는 걸까?

 

✓ 트랜잭션 구조

 

UTXO를 이해하기 위해서는 우선 트랜잭션 구조를 알아야 한다.

 

 

하나의 트랜잭션은 위와 같은 모양이며, 다양한 데이터 구조들로 구성되어 있다. 

 

* 트랜잭션 버전 (Transaction Version)

트랜잭션 버전은 네트워크에서 트랜잭션의 유형을 지정하는 버전 번호이다. 트랜잭션은 버전 별로 그 구조와 규칙이 조금씩 다르다. 따라서 노드는 트랜잭션을 읽을 때는 버전 번호를 확인하고 트랜잭션을 어떻게 읽어야 하는지 파악할 수 있다.

 

* 잠금시간 (Lock Time)

마지막 데이터는 잠금 시간으로, 트랜잭션을 블록체인에 바로 포함시킬 수 있는지, 아니면 지정된 시간이 지나면 포함시킬 수 있는지를 지정한다.

 

* 입력과 출력 (Inputs & Ouputs)

트랜잭션 버전과 잠금 시간 사이에는 입력과 출력 목록이 들어온다.

 

트랜잭션 출력은 지폐를 사용하는 것과 같다. 우리가 5만원권 한장을 가지고 있는데, 2만원짜리 치킨을 사먹기 위해 돈을 지불해야 한다면 어떻게 해야할까? 우리는 지폐의 2/5를 잘라 지불하는 것이 아니라, 일단 5만원을 전부 건네주고, 2만원을 제한 3만원을 돌려받을 것이다. UTXO 도 동일한다. 

 

트랜잭션 출력은 일종의 5만원권과 같다. 출력은 잠금과 값으로 구성되어 있다. 출력은 기본적으로 잠겨있으며, 입력에는 잠금을 해제할 수 있는 키가 들어있다. 값은 출력 내에 잠겨 있는 사토시의 양을 의미한다. 트랜잭션 입력은 우리가 지불할 치킨값 2만원과 비슷하다. 포인터와 해체키가 들어있다. 포인터는 이전 트랜잭션 출력을 가리킨다. 그리고 키는 포인터로 가리키고 있는 이전 출력을 해제하는데 사용된다. 그리고 남은 3만원은 돈을 지불한 사람에게 돌려주어야 하기 때문에 새로운 출력을 만든다.

 

정리하자면, 출력에는 자산이 잠겨있고 입력으로 출력을 해제하여 출력에 있는 값을 꺼내 새로운 출력에 자산을 담는다. 트랜잭션에는 다른 곳에 잠겨있는 출력을 해체하는 입력과, 입력의 결과로 생긴 새로운 출력이 담기게 된다. 따라서 트랜잭션은 이전 출력을 해제하고, 새로운 출력을 만드는 추상적인 액션이라고 볼 수 있다. 이렇게 입력에 의해 생성된 후, 다른 입력에 의해 해제되지 않은 트랜잭션 출력을 UTXO 라고 한다.

 

UTXO 는 잠겨있는 비트코인 그 이상도 그 이하도 아니다. UTXO 는 코인을 담고 있는 상자이며, 다양한 양의 코인을 담을 수 있다. 만약 처음 비트코인을 가지게 된다면, 블록체인에서 UTXO 를 하나만 가지고 있을 것이다. 그러나, 트랜잭션이 일어나면 누군가에게 코인을 전달해야하기 때문에 UTXO 상장에서 코인을 모두 꺼내고, 새로운 상자에 지불해야 할 코인을 담아 전달하고, 다른 새로운 상자에는 남은 코인을 저장한다.

 

앨리스가 밥으로부터 자동차를 구매했다고 가정해보자. 자동차의 가격은 6BTC이고 앨리스는 현재 10BTC를 가지고 있다. 이 10BTC는 하나의 UTXO에 들어 있다. 이런 경우, 트랜잭션은 입력을 통해 우선 10BTC가 든 출력을 해체한 후에 두 가지 새로운 출력을 만든다. 하나는 밥에게 지불되어야 할 6BTC가 든 출력이고, 다른 하나는 앨리스에게 거슬러줄 4BTC가 든 출력이다. 이 새로운 출력들은 아직 다른 입력에 의해 해제되지 않았기 때문에 UTXO(미사용 트랜잭션의 출력값)가 된다. UTXO 모델은 확장성이 좋다는 장점이 있다. 트랜잭션 로직이 매우 단순하기 때문에 병렬적으로 트랜잭션을 검증할 수 있다.

반응형

댓글