블록해쉬를 알아보자!

고정훈·2023년 10월 27일

우선 제일먼저 기초부터 다져보자
블록해쉬를 보면 무엇으로 이루어져 있는가
바로 16진수이다!

먼저 우리가 흔히 아는 10진수와 비교하여 보면
0,1,2,3,4,5,6,7,8,9,10
이렇게 숫자가 있는반면 16진수는
0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f 이렇게 16개로 되어있다
두 수를 비교해 보면 10진수에 10은 16진수에 f 이다
이것을 보자마자 모두 같은 반응일거다 잉?
이 숫자를 어떻게 10진수에서 16진수 16진수에서 10진수를 알란 말인가 ...

자 한번 파헤쳐 보자 한자리숫자는 뭐 그냥 보기만해도 알겠지 모두
숫자 3은 16진수에 3이다
숫자 8은 16진수에 8이다
자 여기서 숫자 10진수에 10은 16진수에서 a 이다 응!?
그럼 10진수 숫자 16은 16진수에서 무엇일까 ?
f이다 오케이 여기까지 쉽다
10진수에서 숫자 33은 16진수에서는 몇일까 ?
바로 21 이다 .. 계산하는 방식은 쉽다 33에서 16을 나눈숫자에서 나머지만 구한다
처음에 33에서 16을 나누면 나머지 1 그리고 남은 2를 16으로 나누면 몪은 0 이지만
나머지는 2로 거꾸로 2와 1 21이 16진수이다.
거꾸로 16진수에서 10진수로 계산하는방식은
21을 10진수로 구하면 거꾸로 두번째 자리 16^1x2=32 첫번째자리 16^0x1=1 하면 33이 나온다
이거 이해하는데 정말 오래걸렸다.

자 10진수와 16진수는 여기까지하고

블록헤더에 대해서 알아보자 !

우선 알아보기전에
Big Endian 과 Small Endian이 있다.

Big Endian

우리가 흔히쓰는 방식 ex)16진수 123456 그대로 -> 12/34/56
큰자릿수부터 작은자릿수로 차례대로 적는 방식이고

Small Endian

작은 자릿수부터 작성 되는 방식이다
처음 ex) 에서 16진수 12/34/56 이거를 작은순부터 작성해주는방식
-> 56/34/12 이것을 Small Endian 이라한다.

블록헤더는

우선
version, merkle(merkle hash), time stamp, bits, nonce, previous hash 작성되어있다
merkle hash 안에는 거래정보(transaction)가 저장되어있다 .

제일 중요한 블록해시의 정보는
이 6요소 들이다 이 요소들을 하나하나 가져온다

그리고나서 version 과 bits nonce에 있는 접두사 0x는 모두
제거해준뒤에

time stamp 는 UTC 시간으로 바꾼뒤 UNIX 로 변환한다

그리고 모두 Big Endian에서 Little Endian 으로 변환
version ,previous hash, merkle , time stamp ,bits , nonce
이순으로 이어 붙인뒤 SHA 256 해쉬값을 두번 반복 한다
그러면 헤더의 해쉬가 나온다 !!

profile
Every day Learning and kaizen

0개의 댓글