블록의 헤드(Head)가 담고있는 데이터는 무엇인가요?
안녕하세요.
이하의 블록체인 전문가님들로부터 많은 도움을 받아 감사드립니다.
블록체인을 구성하는 각각의 블록에서 블록헤드가 담고있는 데이터, 정보는 무엇인가요?
블록은 블록 헤더와 블록 바디로 이루어져 있습니다. 그 중에서 질문해주신 블록 헤더에 저장되는 정보를 살펴보도록 하겠습니다.
버전 : 클라이언트 소프트웨어의 버전
이전 블록의 해시 값 : 이전 블록헤더를 해싱한 값
머클 루트 : 블록의 거래 정보를 이진 트리로 해싱 했을 때 모든 거래 내역이 포함된 하나의 해시 값
비츠 : 블록의 작업 증명 연산을 위한 난이도 타겟 값
타임 스탬프 : 블록의 생성 시간
논스 : 블록이 설정해 놓은 값보다 더 낮은 값을 찾기 위해 무작위로 대입하는 임시 값
이러한 정보를 활용하여 마이닝 노드가 블록 해시 값을 구하는 연산을 실행하고 그 값을 구해야만 블록을 생성할 수 있습니다.
POW 합의 알고리즘에서 새로운 블록을 생성하기 위해 블록 해시 값을 연산한다고 할 때 소프트웨어 버전, 이전 블록의 해시 값, 머클루트의 해시 값인 머클 해시, 블록이 생성된 시간, 난이도는 결정이 되고 변하지 않습니다.
다만 논스의 경우에는 변할 수 있는 무작위 값이기 때문에 논스가 달라짐으로써 새로운 블록의 해시 값이 다르게 연산되어 나오게 됩니다.
따라서 무작위 논스 값을 해시 함수에 대입하면서 난이도 값과 같거나 낮은 값을 찾는 연산을 진행하게 되는데 이 값을 찾게 되면 블록을 생성할 수 있게 되고 이때 논스를 비롯한 나머지 모든 값을 더한 후 이것을 해싱하게 되면 이 새로운 블록의 해시 값을 구할 수 있게 됩니다.
그리고 그 값이 다시 다음 블록의 해더에 '이전 블록의 해시 값'으로 기록되며 블록체인이 연결된다고 할 수 있겠습니다.
답변이 도움이 되길 바랍니다.