UTXO
UTXO(유티엑스오)는 Unspent Transaction Outputs의 약자로서, 미사용 트랜잭션 출력값을 말한다. 미지출 거래 출력이라고도 한다. 비트코인은 이더리움의 '계좌 잔고 모델'(Account Balance Model)과 달리 계정이나 잔고가 없고, 블록체인에 기록된 "소비되지 않은 출력값"을 통해 거래의 유효성을 검사하여 코인의 존재 여부를 확인한다.[1]
개요
비트코인에서 대중들에게 널리 퍼진 UTXO(Unspent transaction output : 아직 소비되지 않은 트랜잭션 결과물)라는 개념이 현재 다양한 블록체인 플랫폼들에서도 사용되고 있다.[2] 비트코인이나 큐텀의 경우, 누군가로부터 받은 금액을 UTXO로 저장한다. 예를 들어, A와 B로부터 각각 1비트코인과 3비트코인을 받아 총 4비트코인을 갖게 되었으면, 지갑에는 4비트코인이 한꺼번에 묶여 있지 않고 1비트코인, 3비트코인을 각각 UTXO로 저장한다. 다시 UTXO 안에 있는 금액을 송금할 때는 새로운 UTXO을 생성하기 때문에 기존 UTXO는 파기한다. 예를 들어, 4비트코인이 있는 UTXO에서 2비트코인을 타인에게 송금하면 2비트코인을 송금한 UTXO와 남겨진 2비트코인에 대한 UTXO가 새로 생성된다.[3]
기존 은행 시스템과 비교
기존 은행 시스템에서 송금 방식은 매우 간단했다. 송금 신청을 하면 은행에서 잔액을 확안하고 잔액이 존재하면 상대방의 통장으로 송금한다. 이런 변동 내역은 DB에 저장되고, 잔액을 확인하게 될 때는 단순히 이름에 매칭 되어 있는 잔액을 확인한다. 하지만, 비트코인에서 이와 같은 방식을 사용하면 문제가 생길 수 있다. 현재 블록에서는 n-1번째 블록의 정보가 있지만, 이전 블록의 정보는 해시화되어있다. 즉, 과거의 내역을 검증할 수 있지만 과거의 내역들을 확인 할 수 없다. 또한 주소에 대한 잔액을 갱신시키며 블록을 생성하기에는 비효율적이다. 그렇기 때문에 비트코인에서 특정 주소에 대한 잔액 조회는 제네시스 블록(Genesis Block)부터 현재 블록까지의 검사가 필요하다.[4]
원리
A, B, C라는 사람이 있다고 가정하고, A가 B에게 10,000원을 전송합니다. 이때 B는 원래 2,000원을 갖고 있었다고 가정합니다. B는 A에게 추가로 만원을 받게 되면서 B는 12,000원이 생겼지만, 실제 데이터 내부의 모습은 2,000원의 객체와 10,000원의 UTXO의 객체가 존재하게 된다. 일반적으로 이더리움은 계좌(Account) 방식을 이용하여 잔고를 합쳐 하나의 잔고가 나오게 되지만 비트코인은 굳이 잔고를 합지지 않는다. 현재 B가 소유한 코인들을 모두 모을 뿐이며, 이 때 UTXO 객체를 '금액을 적은 종이'라고 이해할 수 있다. 이번에는 B 가 C에게 돈을 보냅니다. B는 2,000원의 객체와 10,000원의 객체가 있는데 C에게 11,000원을 보내고 1,000원은 B가 다시 소유하게 된다. 즉, B에게 있는 2개의 UTXO 객체를 합치고 나눠서 새로운 UTXO 객체를 만들어 낸다. 따라서 비트코인에서 쓰이는 UTXO의 방식은 돈들이 살아 움직이면서 소유자의 금액을 파악하는 방식이고 이더리움의 잔고와 같은 방식은 송신자와 수신자의 잔고를 수정하는 방식을 채용하는 차이점이 있다.[5]
장점
- 이중 지불 방지 : 트랜잭션을 발생 시키면 해당 UTXO는 검증을 받은 후 TX Pool에 들어간다. 그렇기 때문에 이중지불이 발생하면 채굴자들은 Pool에서 UTXO 검사 후 사용 기록이 있다면 해당 거래를 무효화 할 수 있다.[4]
- 잔고의 증명 : UTXO는 돈들이 살아움직이며 추적하기가 용이한 장점이 있다. 따라서 거래에 대한 유효성을 검증하기가 매우 쉽다. 일반적으로 이더리움같은 경우는 트랜잭션들을 모두 검증 및 확인하여 최종적으로 잔고를 유추하지만 UTXO는 해당 사용자의 UTXO만 확인하면 되기 때문에 그럴 필요가 없다. 이더리움처럼 어느 계좌에 귀속이 된 기록이 아니라 흩어져 있는 UTXO의 객체들로 특정 소유자의 계좌를 유추하는 것이다. 그래서 특정 계좌의 잔고를 알기가 힘들 수 있지만, 수 많은 어플리케이션들이 이러한 기능들을 모두 제공하고 있어서(특정 사용자의 UTXO를 모와주는 기능)잔고를 확인하는데 큰 불편함이 없다. [5]
단점
UTXO의 가장 큰 단점은 UTXO가 너무 과하게 생성이 될 경우이다. 이더리움은 결과적으로 잔고하나만 체크하면 끝이지만, YTXO 방식을 채용하는 코인들은 흩어져 있는 UTXO를 모두 모와야 되며 소액 결제를 엄청 자주하거나, 채굴로 이자를 받게 되면 과도한 UTXO로 인해서 불필요한 수수료를 내야하는 단점이 생긴다.[5]
각주
- ↑ 비트웹 편집국, 〈퀀텀(QTUM) - 비트코인과 이더리움의 장점을 하나에! 모바일 애플리케이션에 최적!〉, 《비트웹》, 2018-01-25
- ↑ 이승현, 〈UTXO〉, 《네이버블로그》, 2019-04-02
- ↑ Patrick Dai, Neil Mahi, Jordan Earls, Alex Norta, "Smart-Contract Value-Transfer Protocols on a Distributed Mobile Application Platform", Qtum Whitepaper, Qtum Foundation.
- ↑ 4.0 4.1 Johnson Ryu, 〈'알쓸신블' 제5장 UTXO〉, 《MEDIUM》, 2018-11-04
- ↑ 5.0 5.1 5.2 스틸스타크, 〈UTXO(Unspend Transaction Output) 쉽게 이해하기〉, 《FLATINUM》, 2019-02-06
참고자료
- 비트웹 편집국, 〈퀀텀(QTUM) - 비트코인과 이더리움의 장점을 하나에! 모바일 애플리케이션에 최적!〉, 《비트웹》, 2018-01-25
- Patrick Dai, Neil Mahi, Jordan Earls, Alex Norta, "Smart-Contract Value-Transfer Protocols on a Distributed Mobile Application Platform", Qtum Whitepaper, Qtum Foundation.
- 이승현, 〈UTXO〉, 《네이버블로그》, 2019-04-02
- Johnson Ryu, 〈'알쓸신블' 제5장 UTXO〉, 《MEDIUM》, 2018-11-04
같이 보기