반응형


UTXO 또는 Unspent transaction output는 비트코인 거래를 구성하는 기본 단위가 되며 이 의미를 직역하자면 소비되지 않은 거래 출력 값이 된다. 이는 나누어지지 않은 하나의 덩어리이며 특정 사용자에 의해 잠 겨있어 해당 사용자만 해당 거래를 소비될 수 있다. 


UTXO는 블록체인 안에 기록되어 있으며 네트워크상에 참여한 모든 사용자에 의해 식별될 것이다. 사실상 비트코인 주소나 계정에 저장된 잔고란 개념은 존재하지 않는다. 이는 특정 사용자에 의해 소유된 UTXO를 비트코인 지갑 애플리케이션이 블록체인을 검색하여 사용자에 속한 모든 UTXO를 모아 사용자에게 소유된 잔액을 계산하는 것이다. 


위에서 UTXO는 하나의 덩어리라고 언급하였는데 그 이유는 이를 나누어 소비할 수 없기 때문이다.  즉, UTXO에 명시된 금액보다 적은 금액을 소비할 경우에는 나머지 금액을 다시 본인에게 보내는 과정이 필요하다. 만약 이를 고려하지 않고 원하는 금액만 명시하여 소비할 경우 그 외의 차액은 다른 사용자에게 이전될 것이다. 


이러한 UTXO는 UTXO SET에 저장되는데 이는 아래와 같다.

$DATADIR/chainstate 디렉토리 내에 UTOXS가 저장되고 

UTXO를 쓰면 해당 블록에 INPUT으로 들어온 UTXOS가 다 제가되고(DB에서) 그리고 새로운 UTXO가 모두 다시 저장된다.

(When a new block is received, we remove the UTXOs spent by transactions in the block, and add the outputs of those transactions.)


그리고 잘못되서 재구성이 필요하여 UNDO되면 $DATADIR/blocks/rev*.dat 파일을 통해 백업기능을 가지고 있고 컨펌이 모두 끝나면 저런 파일들은 삭제된다.

(When a reorganization happens, we use undo data (stored in $DATADIR/blocks/rev*.dat)


그리고 마지막으로 ACTIVE CHAIN이 바뀔때마다 여러 네트워크 노드들은 ACTIVE CHAIN노드의 $DATADIR/chainstate 를 갱신한다.






반응형