“머클 트리(Merkle Tree)” : 진위(眞僞)를 판별하는 나무
블록체인과 관련해서 공부하다 보면 ‘머클 트리(Merkle Tree)’가 나옵니다. 이 용어를 처음 봤을 때 ‘머클’이라는 단어가 생소해서 검색해봤는데, 사람이었습니다. 랄프 머클(Ralph Merkle)이라는 사람이 1979년에 만들어 낸 개념이 ‘머클 트리’입니다.
머클 트리의 목적과 역할
머클 트리의 목적은 간단히 말해서 데이터를 간편하고 확실하게 인증해주는 것입니다. 상식적으로 생각할 때 블록체인의 용량은 시간이 지날수록 계속 늘어날 수밖에 없습니다. 그래서 성능 좋은 컴퓨터만 모든 블록체인을 다운받아 ‘풀 노드(full node)’가 될 수 있습니다. 그러나 실제로 우리가 일상에서 사용하는 모바일로 블록체인의 일부 데이터만 다운받으려 한다면?
이때 머클 트리가 등장합니다. 머클 트리를 사용하면 우리 손안에 있는 모바일로도 블록체인의 일부 데이터만 다운받아 ‘라이트 노드(light node)’가 될 수 있습니다. ‘라이트 노드’가 되면, 특정 거래를 쉽고 빠르게 찾을 수 있고 관련한 거래의 진위도 파악할 수 있습니다.
머클 트리의 구성요소
머클 루트(Merkle Root)
머클 루트란 머클 트리의 뿌리 부분에 해당합니다. 해당 블록에 있는 모든 거래내용을 요약해서 작은 사이즈의 용량으로 압축해 블록 헤더에 저장, 보존한 데이터를 말합니다. 거래가 아무리 많아도 뭉쳐져서 요약한 머클 루트의 용량은 32B(바이트)로 항상 같습니다.
머클 경로(Merkle path)
특정한 거래의 진위를 따질 때 검증하는 과정을 머클 경로라고 합니다. 이때 머클 루트가 주어지면, 더 쉽게 검증할 수 있습니다.
SHA-256 암호화 (해시함수라고도 합니다)
머클 트리는 데이터를 간편하고 확실하게 인증하기 위해서 ‘SHA-256’ 암호화 기술을 사용합니다.
SHA-256은 암호화 기술로서 단방향 암호화 기술입니다. 암호화된 결과는 16진수로 어떠한 수를 암호화하더라고 결과의 크기는 64자로 정해져 있습니다. 이 암호 기술은 특징이 있는데, 입력된 값이 한 개라도 다를 경우, 결과를 전혀 유추할 수 없고, 입력한 글자의 수와 관계없이 결과의 크기가 항상 64자입니다. 수많은 거래가 블록에 포함되더라도 SHA-256가 사용되기 때문에 작은 용량으로 버틸 수 있습니다.
풀 노드(full node)와 라이트 노드(light node)
풀 노드는 말 그대로 제네시스 블록(첫 번째 블록)부터 지금까지의 블록이 연결된 블록체인 전체를 가지고 유지하는 노드입니다. 반면에 라이트 노드는 블록체인 전체가 아닌 몇몇 블록만 가지고 있으면서 풀 노드로부터 필요한 정보만을 받아서 유지하는 노드입니다.
블룸 필터((Bloom filter)
블룸 필터는 특정 원소가 그 데이터 집합에 속하는지, 속하지 않는지를 검사하는데 사용하는 확률 자료 구조입니다. 예를 들어 비트코인 블록체인처럼 수많은 거래에서 특정한 거래가 블록체인에 속한 것인지를 정확하게 따져야 할 때 블룸 필터를 사용하면 모든 정보를 공개하지 않고도 해당 거래의 진위를 검증할 수 있습니다.
위에서 설명한 라이트 노드에서 정보의 진위를 따질 때 블룸 필터를 사용합니다.
머클 트리 구조
블록체인에서는 각 트랜잭션(거래 내용)들을 SHA-256으로 암호화해 64자의 해시 결과를 만듭니다. 다음 각 인접한 노드들을 합한 다음, 다시 SHA-256으로 암호화해 해시 결과를 만들어 냅니다.
단 하나의 해시가 나올 때까지 이런 과정을 반복합니다. 달리 표현한다면, 수많은 거래내용을 해시함수를 통해 압축하고 인접한 노드끼리 더한 다음 다시 압축하는 식입니다. 그리고 이와 같은 과정을 계속 반복합니다.
모든 결과의 값은 이전 해시함수를 거쳤기 때문에 입력이 하나라도 달라지면 최종결과인 ‘머클 루트’가 달라집니다.
이러한 특성 때문에 블록에서 거래 변조의 여부를 확인할 수 있으며, 거래내용이 아무리 길어도 해시함수를 거친 결과는 무조건 64자이므로 블록의 용량도 줄일 수 있습니다.
용어 자체는 복잡하지만, 거래의 진위를 쉽게 가려내고, 수많은 거래를 작은 용량으로 저장하기 위해서 꼭 필요한 ‘진위를 판별하는 나무’라고 할 수 있습니다.
작가: 조연호, 편집: 안대범