블록체인 공부 - 블록체인의 구조와 머클트리

  먼저, 블록체인의 전체적인 구조를 살펴보면, 블록체인에서 하나의 블록은 블록체인마다 다른 정해진 기준(시간 제한, 거래 수 제한 등)을 충족하면 블록을 형성하고 다음 블록으로 작업을 이어간다. 블록은 크게 블록 해쉬, 블록 헤더, 거래 정보들로 이루어져 있다. 하나의 블록을 형성하는 과정은 먼저 기록된 각 거래 정보들의 디지털 서명을 검증한 후 이 거래 정보들이 블록을 이어가는 과정에서 변조되지 않았음을 확인하는 것인데, 머클트리 구조에 따라 해시 계산을 해서 머클루트 값을 만들고, 이 머클루트 값과 블록 헤더 파일의 여러 값들(여기에는 이전 블록의 해시 값도 포함되어 있다. 따라서 블록을 완전히 변조하려면 이전 해시값을 알아야 하고, 블록체인을 완전히 해킹하려면 모든 블록에 대해 순차적으로 각 블록마다 검증에 참여한 채굴자의 절반 이상을 내 편으로 만들어야하고, 그래서 보안성이 높다고 한다.)과 임의의 nonce값을 선택해 정해진 채굴 난이도를 충족하는 값을 찾을 때 까지 해시 계산을 반복한다. 충족하는 값을 찾으면 나머지 노드들이 같은 방법으로 계산 해서 이 블록의 유효성을 검증하고, 유효하다는 합의에 도달하면 이 값은 블록을 식별하는 식별자인 블록 해시가 되고 블록이 만들어 졌다고 한다. 이 때 가장 먼저 계산하고 검증받은 채굴자가 수수료와 새로 생성된 블록을 가져가는 구조가 작업 증명(POW)이다.

  머클 해시 값을 만들 때 머클 트리 구조를 사용한다고 했는데, 머클 트리는 기본적으로 이진 트리 구조를 가진다. 각 거래 정보를 숫자로 표시한다고 하면 각각의 거래정보 [1],[2]를 이용해 해시값 [12], 같은 방식으로 [34]와 해시 함수에 넣어 머클 루트 [1234]를 계산한다. 이러한 머클 트리의 계산 방식은 블록 해시를 처음 생성할 때와 유효성을 검증할 때 쓰이며, 모든 거래 정보가 계산에 이용되면서도 계산 횟수는 logN(밑이 2, N은 거래 수)에 불과하다는 것과 매번 해시 계산 때마다 해시값의 길이가 유지되므로 8개의 거래정보가 모두 관여하면서도 길이는 짧은 머클 해시 값을 만들어 낼 수 있다는 두가지 장점을 가지고 있다.

댓글

가장 많이 본 글