비트코인의 블럭해시를 구하는 방법 (How to calculate the block hash in Bitcoin)

아래 그림은 비트코인에서 블럭의 블럭해시(Txid)를 구하는 방법을 개략적으로 보여줍니다.,


비트코인의 블럭해시를 구하는 방법은 블럭 해더부에 있는 ver, prev_block, mrkl_root, time, bits, nonce를 합친다.


여기서 ver는 비트코인 버전이고, prev_block는 바로 전 블럭의 블럭해시입니다.

현재 블럭의 블럭 해시를 만들 때 이전 블럭 해시가 포함되기 때문에 블럭을 체인으로 묶은 것과 같다고 하여 블럭체인이라고 부릅니다.

그리고, mrkl_root는 거래 데이터를 암호화하여 트리 형태로 만들어서 최상에 있는 머클트리의 root 값입니다.

time은 unix에서 사용되는 timestamp, bits는 난이도를 표시하고, nonce는 원하는 블럭해시를 찾을 때까지 0부터 +1로 증가시켜서 블럭해시를 다시 계산하도록 합니다.


주의할 것은, 이때 이들은 모두 반대 순서로 바꾼 후에 하나로 합친다는 것입니다.

이때 이것을 digest로 메세지 암호화를 한 후 이후 sha256으로 다시 암호화를 하며 이를 두번 해주고,, 이를 뒤로 다시 뒤집어서 블럭의 해쉬값을 구합니다.


두번째 그림에서는 제가 실제로 python언어를 이용하여 블럭의 해쉬(TxID)를 구하는 방법을 실제로 보였습니다.



위 그림의 맨 아래의 부분이 계산한 블럭 해시가 되고, 박스 부분에 영(zero) 의 개수가 bits에서 정해지는 영의 개수보다 많으면 블럭을 찾게 되고 보상으로 당시는 50 비트의 보상이 주어졌습니다. 현재는 12.5비트의 보상이 주어집니다.

아래는 blockexplorer에서 찾은 실제 비트코인의 블럭의 내용을 보여 줍니다. 그림의 박스 부분이 실제 블럭해시입니다. (계산으로 구한 블럭해시(2번째 그림)와 실제 블럭해시(3번째 그림)가 똑같습니다.

(https://blockexplorer.com/block/00000000000000001e8d6829a8a21adc5d38d0a473b144b6765798e61f98bd1d)


H2
H3
H4
3 columns
2 columns
1 column
3 Comments