블록체인의 핵심은 탈중앙화 분산 데이터베이스 또는 원장입니다. 그렇다면 '블록체인 원장'은 어떻게 기록을 보관하는 걸까요? 현재 블록체인 프로젝트에는 계좌 잔고 모델(Account Balance Model, 이더리움이 대표적)과 UTXO(Unspent Transaction Output, 미사용 트랜잭션 출력) 모델(비트코인이 대표적)이라는 두 가지 주요 회계 방법이 있습니다. UTXO를 이해하면 비트코인 블록체인의 회계 논리를 이해하는 데 도움이 됩니다.
Unspent Transaction Output의 약자인 UTXO는 비트코인 트랜잭션의 기본 단위로 이해될 수 있습니다. 예를 들어, 밥(Bob)이 비트코인 지불금을 받고 이를 사용하지 않으면 해당 비트코인은 UTXO가 됩니다. UTXO 모델은 각 UTXO가 일회용 종이 청구서와 같은 지갑을 갖는 것과 유사합니다. 각 UTXO(종이 청구서)는 특정 금액을 나타내며, 모든 UTXO(종이 청구서)를 합산하여 사용자의 잔액을 결정할 수 있습니다.
각 트랜잭션에는 UTXO의 정배수가 사용됩니다. 예를 들어, 1개의 UTXO, 2개의 UTXO를 사용할 수 있지만 0.5UTXO와 같은 분수는 사용할 수 없습니다(종이 지폐의 절반을 사용할 수 없는 것과 유사). 트랜잭션이 발생하면 기존 UTXO(구 종이 지폐)가 소비되고, 새로운 UTXO(신 종이 지폐)가 생성됩니다. 예를 들자면, 아침에 당신은 5달러짜리 커피와 패스트리를 사러 갑니다. 계산원에게 10달러짜리 지폐를 건네줍니다. 하나의 UTXO로 표시되는 이 10달러 지폐는 판매자에게 제공됩니다. 그러면 상인은 당신에게 5달러의 거스름돈을 주고, 이 시점에서 당신은 새로운 UTXO(새로운 5달러 지폐)를 받습니다.
이 트랜잭션이 UTXO 모델을 사용하는 블록체인에서 발생한다면 어떻게 작동할까요? 이해를 돕기 위해 세 가지 전송 방법을 추상화하고 각각의 예를 제시합니다. 논의의 편의를 위해 여기서는 채굴 수수료를 생략합니다.
밥이 10 BTC를 받았고 그의 비트코인 주소와 연결된 10 BTC의 UTXO가 있다고 가정해 보겠습니다. 이제 밥은 2 BTC를 앨리스(Alice)에게 전송해야 합니다. 이 경우 10 BTC UTXO는 전체적으로 소비됩니다(기존 종이 청구서는 모두 사용됩니다). 2 BTC(새 종이 청구서)는 앨리스에게 전송되고 나머지 8 BTC(새 종이 청구서)는 밥에게 거스름돈으로 반환됩니다. 즉, 원래 10BTC는 하나의 UTXO로 존재했지만, 트랜잭션 과정에서 이 UTXO(오래된 종이 지폐)가 폐기되어 더 이상 존재하지 않게 되는 것입니다. 대신 두 개의 새로운 UTXO(새 종이 지폐)로 대체되었습니다. 하나는 8 BTC(밥에게 반환된 잔액) 값을 가진 밥의 소유이고, 다른 하나는 2 BTC 값을 가진 앨리스의 소유입니다. 앞으로 앨리스는 이 UTXO를 잔액으로 사용하여 다른 사람에게 전송할 수 있습니다.
앨리스가 2 BTC를 프랑크(Frank)에게 전송하고 앨리스가 2 BTC를 이중 지출(잘 알려진 이중 지출 공격과 유사)하는 것을 방지하려면 채굴자는 UTXO가 다른 트랜잭션에서 사용되지 않았는지 확인해야 합니다. 이 UTXO가 이전 트랜잭션에서 이미 사용된 경우 채굴자는 이 새로운 트랜잭션의 실행을 거부합니다.
이해를 돕기 위해 두 가지 예를 살펴보겠습니다. (1) 하나의 주소가 세 개의 주소로 전송됩니다. (2) 세 개의 주소가 하나의 주소로 전송됩니다. 이 4개의 주소를 A, B, C, D라고 하겠습니다. 시나리오 ① A가 B, C, D로 전송됩니다. 시나리오 ② A, B, C가 D로 전송됩니다. 처음에는 주소 A에 10 BTC가 있고 B는 C와 D에는 BTC가 0개 있습니다.
시나리오 (1)에서 주소 A는 처음에 하나의 10 BTC UTXO를 가지고 있으며 각 주소 B, C, D로 2 BTC를 전송하려고 합니다.
먼저, A로부터 원래 있던 10 BTC UTXO가 모두 소진되고, 2 BTC가 각각의 주소 B, C, D로 전송됩니다. 나머지 4 BTC는 거스름돈으로 A로 반환됩니다. 이 시점에서 이전 10 BTC UTXO는 더 이상 존재하지 않으며 4개의 새로운 UTXO가 됩니다. 하나는 4 BTC 가치의 A에 속하고 나머지 3개는 B, C, D에 속하며 모두 2 BTC 가치를 갖습니다. 전송이 발생한 후 주소 A에는 4 BTC의 1 UTXO, 주소 B에는 2 BTC의 1 UTXO, 주소 C에는 2 BTC의 1 UTXO, 주소 D에는 2 BTC의 1 UTXO가 있습니다.
이제 A, B, C가 각각 2 BTC를 D로 전송하는 시나리오 (2)를 시뮬레이션해 보겠습니다.
주소 A에 있는 4 BTC의 UTXO는 전체적으로 소비되며, 이 중 2 BTC는 D로 전송되고 2 BTC는 자체적으로 변경됩니다. 주소 B의 2 BTC UTXO는 D로 전송되고, 주소 C의 2 BTC UTXO는 D로 전송됩니다. 전송이 발생한 후 주소 A에는 2 BTC의 UTXO 1개가 있고 주소 B와 주소 C에는 없으며, 주소 D에는 2 BTC의 UTXO 4개가 있습니다.(시나리오 ①에서 발생하는 전송 중 1개, 나머지는 시나리오 ②에서 발생)
A가 1 BTC UTXO, 2 BTC UTXO, 3 BTC UTXO, 4 BTC UTXO 등 여러 UTXO를 갖고 있고 B는 BTC가 없다고 가정합니다. 이 시점에서 A는 B에게 2.5 BTC를 전송해야 합니다. UTXO 모델은 어떻게 작동할까요?
이때 A주소에 있는 2BTC의 UTXO가 B로 바로 전송됩니다. 1 BTC의 UTXO가 전체적으로 소비되며, 그 중 0.5 BTC는 B로 전송되고, 0.5 BTC는 거스름돈으로 돌려받게 됩니다. 전송 후에도 주소 A에는 여전히 0.5 BTC UTXO, 3 BTC UTXO, 4 BTC UTXO가 있습니다. B에는 2 BTC UTXO와 0.5 BTC UTXO가 있습니다.
UTXO 모델을 활용하는 암호화폐에서는 사용자가 실수로 잘못된 계약 주소를 입력하면 자금을 회수할 수 없을 가능성이 높습니다. 이는 UTXO가 거래의 발신 상태에 대한 추가 정보를 저장하지 않고 암호화폐 거래가 완료되면 해당 UTXO가 더 이상 데이터베이스에 존재하지 않기 때문입니다. 본질적으로 시스템은 귀하가 이미 자금을 지출했다고 가정하며 이 작업은 취소할 수 없습니다. 또한, 계약 주소가 호환되지 않거나 부정확한 경우 잘못된 입력이 발생할 수 있으며, 이는 수신자가 암호화폐를 제대로 받을 수 없음을 의미합니다. 결과적으로 암호화폐를 복구할 수 없을 가능성이 매우 높습니다.
① UTXO는 최종 상태가 아닌 이벤트를 기록합니다. ② 각 UTXO는 비트코인의 특정 수량을 나타내며, 모든 UTXO의 합이 계정 잔액을 결정합니다. ③ UTXO는 비트코인 트랜잭션 출력물입니다. ④ 완전한 트랜잭션은 트랜잭션 출력(보내는 사람)과 트랜잭션 입력(받는 사람)으로 구성됩니다. 트랜잭션 출력은 출력이라고 할 수 있고, 트랜잭션 입력은 입력이라고 할 수 있습니다. 트랜잭션이 완료된 후 새로 생성된 UTXO는 비트코인 원장에 기록되며 추가 트랜잭션에 사용될 수 있습니다. 비트코인 트랜잭션의 초석인 UTXO는 보안, 개인정보 보호, 확장성과 같은 이점을 제공하며, 수많은 블록체인 프로젝트의 기본 트랜잭션 프레임워크 역할을 합니다.
MEXC에 상장된 다음 토큰은 UTXO 모델을 사용합니다.
ada, ae, avax-xchain, bch, bcha, beam, bhd, bsv, btc, btcv, btm, btm2,
chia, ckb, dash, doge, firo, hc, hns, hydra, ioex, KAS(KASPA), lbc, lbtc, ltc,
mass, pac, plcu, psl, qtum, rvn, sc, sys, ut, wit, xrd, xvg, zel, zen
위에서 언급한 암호화폐 전송 시 오류가 발생한 경우 복구를 도와드릴 수 없습니다. 입금 전 올바른 입금 주소를 입력했는지 확인하시기 바랍니다!