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