본문 바로가기
블록체인

[블록체인] 블록체인에서 말하는 트랜잭션 이란 무엇인가? - (3) UTXO

by hayz 2023. 1. 24.

2023.01.15 - [IT] - [블록체인] 블록체인에서 말하는 트랜잭션 이란 무엇인가? -(2) 사용자간 트랜잭션

 

[블록체인] 블록체인에서 말하는 트랜잭션 이란 무엇인가? -(2) 사용자간 트랜잭션

앞선 글에서, 블록체인에서의 트랜잭션의 간단한 설명과 트랜잭션 유형중 하나인 "코인 베이스 트랜잭션" 에 대해서 살펴보았습니다. 이번 글에서는 실제 사용자간의 트랜잭션이 일어날 경우

hayz.tistory.com

이전 글들에서 블록체인에서 트랜잭션이 생성되고, 트랜잭션 안에 어떠한 값들이 포함되어 생성되는 지를 알아보았습니다. 그리고 생성된 트랜잭션을 mempool(2022.12.31 - [IT] - [블록체인] 간단하게 보는 mempool 이란?)에 저장하는 방법까지 진행했습니다.  

 

이번 글에서는 트랜잭션의 output 을 토대로, 그 다음 거래의 input 으로 사용된다면 기존에 사용된 트랜잭션은 어떻게 처리할 것인지에 대해서 알아보도록 하겠습니다. 


문제 상황

이전 글에서 사용자간 거래를 하게 된다면, 내가 가진 잔액들 (블록체인의 트랜잭션 output 의 주인이 나 인 값들) 을 확인하여, 해당 output 에서 input 을 만들어내는 방식이라고 설명했습니다. 

 

하지만, 기존에 output 에서 이미 input 으로 만들어진 트랜잭션이라고 표시하지 않는다면, 평생 무한대로 값을 전달할 수 있는 것입니다.

 

그림으로 예를 들면, 내가 150 개의 코인을 가지고 있었을 때 두명의 상대방에게 각각 100, 30을 전달했다고 가정해보겠습니다. 정상적인 상황이라면, 내가 가지고 있는 150개중에 130개를 나누어줬으니 20개가 남은 것이 정상적이지만, 사용했다고 표시하지 않는다면 평생 150개라고 표시될 것입니다. 

위 같은 방식을 방지하는 블록체인의 매커니즘이 "UTXO(Unspent Trancsaction Output)" 를 사용하는 방법입니다. 

 

UTXO 란?

위 문제 상황을 통해 우리의 거래내역들, 즉 트랜잭션에 이미 사용된 내역인지를 표시해야할 필요성을 알게되었습니다. UTXO 는 이러한 방법을 해결할 수 있는 방안으로, 풀어서 설명하면 "아직 사용되지 않은 트랜잭션" 이라고 할 수 있습니다.

 

위 그림에 UTXO 를 적용했을때 어떻게 되는지 살펴보겠습니다. 

 

위 그림에서 달라진 점은, A 의 거래후 잔액이 150이 아니라 30으로 정상 반영되었다는 점이고, 잔액에 UTXO 로 표시된 것을 확인할 수 있습니다. UTXO 라고 되어 있는 것은 아직 거래 되기 전을 나타냄으로, 유효한, 거래할 수 있는 잔액으로 사용할 수 있습니다. 

그리고, 송금되어진 B와 C 에게도 각각 UTXO 로 표시가 되며 전달됩니다. 처음 거래하며 받은 값으로, 아직 사용한 적이 없는 내역이기 때문입니다. 

 

여기서 만약, C 가 새로운 거래를 생성한다면 아래와 같이 될 것입니다. 

C 의 기존 잔액인 30 중 20을 D 에게 전송하고, 남은 금액인 10 이 UTXO 로 설정되었습니다. 그리고 D 도 C 에게 받은 금액이 UTXO 로 설정된 것을 확인할 수 있습니다. 

 

블록체인에서는 위처럼 각각의 트랜잭션의 사용 여부를 판단하여 내가 쓴 금액인지 아닌지를 판단하게 됩니다. 

 

실제로 트랜잭션 안에서 UTXO 임을 판단하는 방법에 대한 자세한 로직은 다음 글에서 설명하도록 하겠습니다. 

댓글