개인키와 공개키 그리고 지갑주소
까지 그리고 내가 비트코인을 쓰기위해 필요한 개인키를 구성하는 해시와
개인키의 해시함수와 타원곡선함수로 만들어진 공개키
그리고 블록헤더 안에 바디의 정보를 담고있는 머클루트
이거 뭐 비트코인 암호화폐
암호의 천국이다 모든게 암호로 이루어져 있는것 같다

오늘 알아볼것은
위에 제목에 나와있듯이
현재 블록의 거래정보의 요약본이라 간단히 설명할수 있는
merkle hash 이다.
merkle root (merkle hash) 는 이진트리 (binary tree) 라고도 한다.
그림을 보면 이해가 빠를것이다.

거래 1과 2가 자식 hash(1,2)는 부모
거래 3과 4가 자식 hash(3,4)는 부모 이렇게 또
hash (1,2),(3,4)가 root 의 자식이 된다
root는 => hash(1,2,3,4)가 되겠다.
그림에서의 root값은 블록헤더에 기록되어있는 머클해쉬의 값이라 생각하면 쉽다.
거래 1,2,3,4는 블록의 바디의 4개의 트랜젝션이다.
머클루트는 4개의 2^n꼴로 거래 내역을 담고있다
근데 거래정보는 무조건 2^n꼴이 될수있는게 아니다
2^n꼴이 아닌 3개나 6개 일때는
2^n꼴로 만들어주면 된다
만약 거래가 5개라면 1,2,3,4,5 이 다섯게를 2^n꼴인
1,2,3,4,5,5,5,5로 만들어 주면되겠다.


이것은 어떤 블록의 머클루트와 2개의 트랜잭션이다
이제부터 위의 머클루트가 어떻게 나오는지 만들어보자
우선 2개의 트랜잭션의 함수를 리틀엔디안으로 변환하는 작업을 하자
#0 : 8974CF019C71A4AA787562251488E1720B4D375568245E676E8E513D4E8D53FB
#1 : 8BA36526716E866F80AC2664E20B3B001A959F04DBC43ED990204A415933FA29
이렇게 엔디안 변환을 거치고
#0+#1 concat :
8974CF019C71A4AA787562251488E1720B4D375568245E676E8E513D4E8D53FB8BA36526716E866F80AC2664E20B3B001A959F04DBC43ED990204A415933FA29
#0+#1 을 두번 SHA 256에 넣고 돌린다
그럼
763ed200a5474a45dc0d196def0f3579d22d8912f1fa0ab3064e627e66fa08a8
이렇게 값이 도출된다 여기서 끝이 아니라 이 값을 다시 엔디안 변환을 해주면
=> A808FA667E624E06B30AFAF112892DD279350FEF6D190DDC454A47A500D23E76
현재블록의 머클해시값이 나온다 EUREKA! 😲🤩