본문으로 바로가기

블록체인에서 블록이란?

category 비트코인/Bitcoin Core 2018. 3. 1. 18:26

블록체인에서 블록이 무엇인지에 대해서 정리하고자 합니다.

블록은 다수의 거래정보와 블록헤더로 구성되어 있습니다.

블록체인이란 말그대로 이러한 블록들이 연속적으로 연결되어 있음을 의미합니다.

그럼 이와같은 블록이 어떤정보로 구성되어있는 보도록 하겠습니다.


비트코인의 블럭정보는 https://blockchain.info/ 에서 확인이 가능합니다.

가장 최신블럭이 다음과 같이 보여지고 있으며, 여기서 관심있게 봐야할 부분인 Age를 보면 평균적으로 블록간의 시간이 10분정도 소요됩니다.

이말은 비트코인의 블록은 평균 10분마다 생성이 되며, 10분간의 거래가 해당블럭에 포함이 된다는 말입니다.



그럼 511435번 블럭을 살펴보도록 하겠습니다.

이 블록은 말그대로 511435번째로 생성된 블럭을 말하며, 0번 블록은 비트코인이 최초에 실행될때 만들어진 제네시스(Genesis) 블록이 됩니다.

각 블록간의 생성시간은 위에 언급한것처럼 평균 10분이 소요됩니다.


블록은 헤더와 트랜잭션(Transaction)으로 구성되며, 블록헤더는 다음과 같이 구성되어 있습니다. (Block.h)


hashPrevBlock과 hashMerkleRoot의 데이타타입이 uint256으로 구성되어있음을 볼수있는데, 이 값들은 모두 SHA256 알고리즘을 통해 생성되는 값이기 때문에 256비트값을 가지게 됨을 짐작할수 있습니다.



Timestamp(블록이 생성된 시간) : 2018-03-01 08:11:49 

Bits(블록 생성의 난이도) : 392009692

Version(프로토콜 버전) : 0x20000000

Merkle Root(트랜잭션 정보를 머클트리 형태로 구성한 해시정보) : 

   b958fda3ce4d3cd0a41f01a6b00f6ae4e70f498a27f526cc5612f72450152d17

Previois Block(이전 블록의 해시정보)

   00000000000000000029b633899beed322666cc0041fbdf471300d52e6de1887

Nonce : 2170187189


Hash : 0000000000000000003265329296e10cc51cc37cb0fb8f31636bb15d9fdf8a60


블록헤더과 트랜잭션은 다음과 같이 구성됩니다.



여기서 블록헤더를 구성하는 6개값중 아래의 5개는 그 값이 고정된 상수입니다.

(version, previous hash, merkle root, timestamp, bits)

이 5개의 정보와 Nonce 값을 사용하여 SHA256 알고리즘을 통해 해당 블록의 Hash 값이 계산됩니다.

이 Hash 값이 Bits로 지정된 난이도값보다 작게 생성될때 해당블록이 생성에 성공이 되며, 이 과정이 채굴(Mining) 입니다.

채굴알고리즘은 이후에 다시 정리할려고 합니다.


이와같이 하나의 블록은 계산된 Hash 값과 블록헤더, 10분간 진행된 거래(Transaction) 내역이 포함되며 이 블록이 다음과 같이 연속된 체인형태로 구성되게 됩니다.

이렇게 블록들이 연속적인 체인형태로 구성이 되었다고 해서 블록체인이라고 하는것입니다.