(블록체인ABC)블록해시와 논스…블록의 구성 요소들
2019-06-10 16:42:10 2019-06-10 16:59:54
[뉴스토마토 이우찬 기자] 블록체인은 일정 간격으로 데이터가 저장돼 있는 블록을 생성한 뒤 블록들을 체인처럼 연결하는 데이터 저장 기술입니다. 블록이 만들어지는 시간을 10분이라고 가정하면 1번 블록은 00:00~00:10의 거래정보를, 2번 블록은 00:10~00:20의 거래정보를 기록합니다. 3번 블록이 생성되기 위해서는 2번 블록과 연결이 맞는 것인지 검증을 거치게 됩니다.
 
블록은 블록헤더(Header)와 블록바디(Body)로 구성돼 있습니다. 먼저 블록바디는 거래 정보를 포함하고 있습니다. A가 B에게 1000비트코인을 전송하게 되면 하나의 트랜잭션으로 저장됩니다. 거래정보를 해시화한 값에 거래 쌍방의 디지털서명이 함께 기록돼 있으며, 블록체인 네트워크 참여자들은 해시값으로 해당 거래의 적합성을 검증하게 됩니다. 
 
블록헤더의 경우 블록의 중요한 데이터들을 담고 있는데요. 소프트웨어 버전(version), 이전 블록해시, 머클루트, 타임스탬프, 난이도, 논스 등이 그것입니다.
 
이 중 이전 블록해시는 문자 그대로 바로 앞의 블록해시로, 새로 생성되는 블록의 유효성을 검증하는 데 활용됩니다. 먼저 블록해시(hash)가 무엇인지 알아볼까요. 블록해시는 블록 헤더의 값들을 해시함수로 계산한 값을 말하는데요. 일종의 유전자 같은 개념으로 보시면 됩니다. 디지털 파일을 고유한 값, 즉 해시값으로 바꿔주는데요. 용량이 큰 파일도 짧은 문자열로 변환해주는 이 블록해시는 블록을 구분하는 역할을 하게 됩니다. 블록체인은 결국 이전 블록해시가 다음 블록의 한 구성요소가 되는 방식으로 체인처럼 연결되는 것인데요. 여기서 해시값이 맞지 않으면 다음 블록으로 자격을 갖추지 못하게 됩니다.
 
난이도, 타임스탬프, 논스는 채굴 경쟁과 직접 관련된 용어들입니다. 난이도는 블록체인에서 해시 목표값을 의미합니다. 특정 노드가 목표값보다 같거나 작은 해시값을 찾는 데 성공할 경우 새로운 블록이 만들어집니다. 타임스탬프는 블록 생성 시간을 의미합니다. 논스의 경우 블록 연결의 작업증명(PoW)에 사용되는데요. 논스(nonce)의 사전적 의미는 임의값인데, 블록체인에서는 블록을 채굴할 때 연산하는 과정에서 구하는 임의값을 뜻합니다. 난이도를 만족하는 논스를 찾게 되면 해당 블록은 유효한 것으로 인정되며 체인에 연결됩니다.
 
머클루트란 머클트리(Merkle Tree, 해시트리)에서 뿌리에 해당하는 개념으로, 블록에 있는 모든 거래내역을 요약해 작은 크기로 블록헤더에 보관되는 데이터를 말합니다. 블록이 모든 거래정보를 포함하는 동시에 거래 요약본을 하나 더 갖고 있는 셈입니다. 머클루트의 역할은 거래량이 기하급수적으로 많아져도 특정 거래를 찾는 경로를 단순하게 하는 것입니다.
 
살짝 부연하자면 머클트리는 컴퓨터과학·암호학에서 쓰이는 개념으로 발명자 랄프 머클의 이름에서 유래했습니다. 트리 구조의 일종으로 상위 노드는 각각 자식 노드들의 해시 값이 됩니다. 데이터 일부를 검증할 때 자식 노드 가운데 하나의 해시값을 알면 그 노드의 모든 자식 노드에 대해 데이터를 검증할 수 있는 특징이 있습니다. 
 
사진=픽사베이
 
이우찬 기자 iamrainshine@etomato.com
 
이 기사는 뉴스토마토 보도준칙 및 윤리강령에 따라 김나볏 테크지식산업부장이 최종 확인·수정했습니다.

ⓒ 맛있는 뉴스토마토, 무단 전재 - 재배포 금지

지난 뉴스레터 보기 구독하기
관련기사