UTXO 는 Unspent Transaction Output 의 약자로 "소비되지 않은 거래 출력값" 을 의미합니다.
잔돈이 있는 실제 현금 지갑을 상상하면 이해가 쉽습니다.
우리가 오만원권 한장을 가지고 3만 5천원을 결제한다면, 만 원권 한장 과 오천원권 한 장을 받습니다.
UTXO 모델에서도 마찬가지로 3비트코인을 가지고 1비트코인을 결제하면 2비트코인이 찍힌 UTXO를 받는 것입니다.
예를 들어 A 지갑에 3 BTC가 있고 B 지갑에 2 BTC가 있다고 가정해 봅시다. A가 B에게 1 BTC를 보낼 때, A의 잔고 3 BTC가 전부 UTXO에 입력됩니다. UTXO에 잠시 들어간 모습 UTXO에 입력된 3 BTC는 분리되어 2 BTC는 A 지갑으로 돌아가고 1 BTC만 B 지갑으로 전송됩니다. 그럼 이때 B 지갑에는 총 3 BTC가 있다고 생각할 수 있지만, 실제로는 2 BTC가 입력된 UTXO(기존에 있던 UTXO)와 1 BTC가 입력된 UTXO(A가 보낸 UTXO)로 분리되어 존재합니다.대충 요런식으로?
UTXO 모델은 자금 추적과 거래 검증이 용이합니다. 그러나 UTXO가 과하게 생성될 경우 스마트컨트랙트 연결이 어려워지는 문제점이 있습니다. (증권사의 Book 거래느낌..?)
계좌 / 잔고 모델
이더리움의 계좌/잔고 모델은 각 지갑이 은행 계좌와 유사하다.
UTXO 모델과 달리 지갑은 총 잔액만 표시한다.
예를들어 잔고가 1 ETH인 계좌 C에서 잔고가 0 ETH인 계좌 D로 0.5 ETH를 전송하는 트랜잭션이 발생. 이후 계좌 C와 D는 모두 0.5 ETH의 잔고가 나타나게 될 것입니다.
계좌/잔고 모델의 주요 특징은 컨트랙트 제어 지갑의 존재입니다.
지갑은 개인 소유 / 컨트랙트 제어 지갑 두 종류로 분류됩니다.
이 중 컨트랙트 제어 지갑은 스마트 컨트랙트 배포 시 생성되는 지갑으로,
컨트랙트 자체적으로 자금을 가질 수 있어 다양한 DApp(탈중앙화 애플리케이션)의 기반이 됩니다.
계좌/잔고 모델은 UTXO 모델에 비해 트랜잭션 크기가 작아 보관 측면에서 유리하지만, 스마트 컨트랙트의 실행으로 비용이 많이 발생하고 보안이 취약할 수 있다는 단점을 가진다.
댓글