블럭체인 (Blockchain)

블럭체인 (Blockchain)

블럭체인은 특별한 타입의 데이타베이스로서 데이타 집합의 단위인 블럭(block)들을 암호학적 해시값을 사용하여 연결하여 마치 모든 블럭들이 체인으로 연결된 것과 같이 구성한 것이다.

블럭체인은 분산 처리 환경을 위해 고안된 것으로, 블럭체인 네트워크 상의 모든 사용자가 모두 블럭체인 데이타를 가지고 있으며, 중앙 집중화된 통제를 할 수 없도록 하고 있다. 분산환경에서의 블럭체인 데이타는 일단 블럭에 저장되면 이후이 변경 불가능한 데이타(Immutable Data)가 된다.

블럭체인 안에는 임의의 데이타가 들어갈 수 있는데, 대표적인 데이타 타입으로 암호화폐의 트랜잭션 정보를 들 수 있다.

비트코인 블럭체인은 블럭 파일들(blocks/blk*.dat)에 저장되며, Peer 네트워크들과 통신하면서 새로운 블럭(들)을 받아 저장하게 된다. 비트코인 데몬 프로그램(bitcoind)은 프로그램이 시작되면, 블럭체인의 메타 데이타를 블럭 인덱스 파일(blocks/index/*)로부터 메모리에 로딩하게 되고, 블럭체인 상에서 사용가능한 계정들(UTXO, Unspent Transaction Output, 잔액이 남아있는 계정)에 대한 정보를 체인스테이트(chainstate/*)에서 로딩한다.

블럭트리 (Block Tree)

블럭체인은 일반적으로 링크드 리스트(linked list)와 같은 구조로 표현되는데, 실제로는 중간 중간에 짧은 Fork가 일어나 트리와 같은 구조를 갖는다. 흔히 현재 사용되는 주 블럭체인을 Active Blockchain이라 하는데, 이는 일반적으로 가장 긴 블럭체인 길이를 갖는 체인이다. 만약 마이너들이 동시에 마지막 블럭을 생성한다면, 블럭체인은 복수개로 분기되어 나누어지게 되는 이것을 Fork라 부른다. 일시적으로 일어날 수 있는 이러한 Fork로 인해 실제 블럭체인은 Tree와 같은 구조를 갖게되며, 이러한 구조를 Block Tree라고 부른다. 이러한 Fork는 이후 새로운 블럭들이 어떤 Branch에 추가되는지에 따라 가장 긴 블럭체인를 길이를 갖는 것으로 Active Blockchain이 만들어지면서 나머지 Branch들이 제거되면서 정리된다.