×
Crocus
공부한 내용을 정리하는 블로그로 시작한
Crocus는 2014년 1월 14일 부터 시작하여
현재 월 6만명, 총 1,488,524명의 방문자 수를 기록하고 있습니다.
Donation
이제 많은 사용자들이 이용하는 만큼
더 다양한 서비스 개발/제공을 위해 후원금을 모금하고자 합니다.
후원을 해주시는 분들은 Donators 명단에 성명, 후원금을 기입해드리며
Crocus 블로그가 아닌 다른 곳에 정리해둔 저만의 내용을 공유해 드리고자 합니다.
Account
예금주 : 고관우
신한은행 : 110-334-866541
카카오뱅크 : 3333-01-7888060

👉 후원 페이지 바로가기 Donators
익명 : 5000원(Crocus응원합니다.)
busyhuman: 5000원(유용한 지식 감사합니다.)
익명 : 5000원(알고리즘 학습러)


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 를 갱신한다.






'Applied > Blockchain' 카테고리의 다른 글

EVM에 대한 간단한 정리  (0) 2018.10.31
블록체인 Finality 개념, 중요한이유  (3) 2018.10.28
UTXO SET이란  (0) 2018.10.26
SPV(Simple Payment Verification)  (0) 2018.10.02
블록체인 간단한 개념 PPT  (0) 2018.07.22
Public network 구축 및 web3.js 이용하기  (0) 2018.06.14