UTXO(Unspend Transaction Output) 쉽게 이해하기

    시작하며...


    오늘은 UTXO(Unspend Transaction Output)에 대해서 설명해보겠습니다. UTXO는 대표적으로 비트코인이 쓰고 있는 기법으로, 거래 처리 및 검증하는 기법으로 이해를 하시면 됩니다. 블록체인을 라이트하게 이해하고 싶으신 분들은 UTXO를 굳이 알아야 하나? 라고 생각하실 수 있습니다.


    하지만 퀀텀(QTUM)과 같은 코인은 비트코인의 UTXO와 이더리움의 Account 개념을 이어주어 두 코인간의 장점을 흡수했다라는 식의 어필을 하기도 하며, 레이븐코인(Ravencoin) 같은 경우도 UTXO의 기술을 사용했다라는 말을 하는데 기술을 모르고 코인을 투자하는 것만큼 무모한 것은 없습니다. 이 기회에 UTXO에 대해서 이해를 하시면 추후 코인을 판별할 때 매우 유리할 수 있습니다.



    일반적인 잔고의 개념(금전 거래)


    우선 A라는 사람이 B라는 사람에게 1만원을 줬다고 해보겠습니다. 그런데 여기서 알아야 될 것은 오프라인에서 직접 주는 것과 온라인에서 인터넷 뱅킹등을 통해서 주는 것은 많이 다를 것입니다. 직접 주게 되면, 받는 사람이 다시 ATM기기나 은행에 가서 통장에 넣거나 소비하지 않는 이상 만원은 받는 사람한테서 사라지지 않을 돈입니다.


    현물이 직접 오가는 모습


    그럼 똑같이 A라는 사람이 B라는 사람에게 1만원을 줬는데 온라인 뱅킹으로 줬을 경우 어떨까요? 온라인 뱅킹에도 똑같이 10,000만원이라는 지폐가 "전송"이 될까요? 온라인뱅킹은 바로 위에서 직접 주는 방식과 다르게 장부를 수정하는 방식을 이용합니다. 


    계좌를 수정하여 잔고를 맞추는 모습


    바로 A의 계좌에 10,000원을 깎고, B의 계좌에 10,000원을 더하여, 서로간의 계좌의 밸런스를 맞추게 되는 방식을 취합니다.



    비트코인과 이더리움 방식 비교


    위에서 설명한 첫번째 방식인 지폐를 직접 주는 모습은 UTXO와 매우 유사한 개념을 갖고 있습니다. 그러나 일반적으로 첫번째 방식은 뭔가 미개한 모습처럼 보일 수 있습니다. 여기서 알아야 둬야 할 것은 방식만 유사할 뿐 실제 현물을 줄리가 없습니다. 어차피 비트코인도 현물이 존재하지 않는 해시값들의 잔치이니까요.



    위의 예시는 비트코인과 이더리움의 차이를 좀 쉽게 알려주기 위한 예시일 뿐이며 본격적으로 UTXO의 방식이 어떤 것인지 UTXO의 원리를 좀 더 파보겠습니다.



    UTXO의 원리


    홍길동이 한예슬에게 10,000원을 전송하였다고 가정을 해보겠습니다. 이때 한예슬은 원래 2,000원을 갖고 있었다고 가정을 하면 UTXO는 아래와 같은 모습으로 보여집니다.


    홍길동에게 추가로 만원을 받게 되면서 한예슬은 12,000원이 생겼지만, 실제 데이터 내부의 모습은 2,000원의 객체와 10,000원의 UTXO의 객체가 존재하게 됩니다.

    일반적으로 이더리움은 Account라는 방식을 사용하여 잔고를 합쳐 하나의 잔고가 나오게 되지만 비트코인은 굳이 잔고를 합치지 않습니다. 그냥 현재 한예슬이 소유한 코인들을 모두 모을 뿐입니다. 여기서 UTXO 객체를 어음과 같이 "금액을 적은 종이" 정도로 이해하셔도 좋을 것입니다. 아직은 이해하기 좀 힘들 수 있습니다. 


    이번에는 한예슬이 고길동에게 돈을 보내는 모습입니다. 한예슬은 2000원의 객체와 10,000원의 객체를 가지고 있는데 고길동에게 11,000원을 보낸다고 합니다. UTXO의 로직은 일단 딱 맞는 금액을 찾으며 없을 경우 보낼 금액보다 큰 UTXO를 찾게 됩니다. 


    11,000원과 같거나 큰 UTXO를 한예슬이 보유하고 있지 않기 때문에 2,000원과 10,000원을 합해서 1,000원과 11,000원을 만들어 내며, 11,000원은 고길동에게 보내고 1,000원은 본인이 다시 소유하게 됩니다. 즉 2개의 UTXO 객체를 합치고 나눠서 새로운 UTXO 객체를 만들어내는 것입니다. 


    UTXO의 방식을 이해하셨나요? 다시 한번 정리하자면, 비트코인에서 쓰이는 UTXO의 방식은 돈들이 살아 움직이면서 소유자의 금액을 파악하는 방식이고 이더리움의 잔고와 같은 방식은 송신자와 수신자의 잔고를 수정하는 방식을 채용하는 차이점이 있습니다.




    UTXO의 장단점

    UTXO는 돈들이 살아움직이며 추적하기가 용이한 장점이 있습니다. 그러다보니 거래에 대한 유효성을 검증하기가 매우 쉽습니다. 일반적으로 이더리움같은 경우는 트랜잭션들을 모두 검증 및 확인하여 최종적으로 잔고를 유추하지만 UTXO는 굳이 그럴 필요가 없습니다.

    그냥 해당 사용자의 UTXO만 확인하면 그만이니까요. UTXO와 일반적인 방식과 또 하나의 차이점은 UTXO는 체인 상에서 퍼져있습니다. 이더리움처럼 어느 계좌에 귀속이 된 기록이 아니라 흩어져 있는 UTXO의 객체들로 특정 소유자의 계좌를 유추하는 것입니다.

    그러다보니 특정 계좌의 잔고를 알기가 힘들 수 있으나, 수많은 어플리케이션들이 이러한 기능들을 모두 제공하고 있어서(특정 사용자의 UTXO를 모와주는 기능) 잔고를 확인하는데 큰 불편함은 없습니다.

     


    사실 UTXO의 가장 큰 단점은 UTXO가 너무 과하게 생성이 될 경우 입니다. 이더리움은 결과적으로 잔고하나만 체크하면 끝이지만, UTXO 방식을 채용하는 코인들은 흩어져 있는 UTXO를 모두 모와야 되며 소액 결제를 엄청 자주 하거나, 채굴로 이자등을 받게 되면 과도한 UTXO로 인해서 불필요한 수수료를 내야 하는 단점이 생길 수 있습니다.


    마치며...

    UTXO는 비트코인을 추종하는 개발자 집단들이 꾸준히 사용하고 있으며 대표적으로 당연히 비트코인을 포함하여 비트코인과 이더리움의 장점만 수용했다고 말하는 퀀텀(QTUM) 그리고 레이븐코인(Ravencoin) 등이 있습니다. 


    유튜브의 구독과 좋아요는 양질의 컨텐츠를 만들기 위한 힘이 됩니다 :)

    참고자료
    https://www.decenter.kr/NewsView/1RZJK9SEOA
    https://komodoplatform.com/whats-utxo/

    연관자료


    댓글

    Designed by JB FACTORY