brunch

You can make anything
by writing

C.S.Lewis

by 갭챠 GAPCHA Apr 23. 2024

[블록체인 뜻] 머클트리란? 생성과정, 구성요소, 장점

CONTENTS

1. 머클트리(Merkle Tree)란?
2. 머클트리 생성과정
3. 머클트리 구성요소
4. 머클트리 장점
5. 머클트리 준비금 증명                     


1️⃣ 머클트리(Merkel Tree)란?

머클트리란 블록에 포함된 거래 내역을 나무 형태로 요약한 것을 말합니다.


즉, 모든 정보를 압축하여 간단하게 표현하는 방식입니다. 구체적으로는 블록 내에서 다수의 장부를 암호화하고 합치는 과정을 반복하여 최종적으로 하나의 값으로 암호화하는 방법을 뜻합니다.


머클트리는 이진트리(Binary trees)라고도 합니다. 이진트리는 블록에 기록되는 데이터를 정확하게 두개씩 묶어준다는 뜻으로, 블록에 기록되는 거래량이 기하급수적으로 많아져도 특정 거래를 찾는 경로는 단순하다는 장점을 가지고 있습니다.


*이진트리(Binary trees) : 모든 노드가 정확하게 두 개의 서브트리를 가지고 있는 트리


2️⃣ 머클트리 생성과정

머클트리는 머클루트를 구하기까지 반복하게 되는 과정이 토너먼트 대진표 모양으로 만들어집니다.


‘log₂[전체거래내역의수]’값을 구하면 해시화한 과정의 횟수를 알 수 있기 때문에 머클트리만 따라가면 특정 거래 내역을 쉽게 찾을 수 있습니다.


머클트리는 트리 구조를 형성하고 있는 암호화 과정으로, 위 그림처럼 맨 아래에 위치한 최종 값을 머클루트, 상부의 값들을 리프(leaf)라고 부릅니다.


8개 거래에 대한 머클트리 예시로 말해보면 그림처럼 거래에 대한 해시값이 TX1부터 TX8과 같이 리프로 이어져있고, 이를 두개씩 묶어 더한 후 같은 방식으로 진행하여 최종값인 머클루트를 얻습니다.


거래가 홀수인 경우, 맨 마지막 거래를 복사하여 거래를 짝수개로 만들어 사용하는 원칙으로 이용되고 있습니다.


이러한 경우를 균형트리라고 하며, 머클트리 생성과정은 아래와 같습니다.


1. 최초 데이터를 SHA256형태의 해시값으로 변환합니다.

2. 가장 가까운 노드 2개를 한쌍으로 묶어 합친 후 그 값을 해시값으로 변환합니다.

3. 하나가 남을때까지 2번 과정을 계속 반복하며 하나의 값만 남았을 때까지 해당 과정을 반복합니다.

4. 최종적으로 남는 하나의 블록은 모든 거래를 합친 해시값을 포함하고 있으며, 이를 머클루트라고 합니다.


3️⃣ 머클트리 구성요소

◼ 머클루트 : 블록이 보유하고 있는 거래 내역들의 해시값을 가장 가까운 거래내역끼리 쌍을 지어 해시화하고 쌍을 지을 수 없을 때까지 이 과정을 반복했을 때 얻게 되는 값을 말합니다.

이는 블록에 저장되어 있는 모든 거래의 요약본으로 해당 블록에 포함된 거래로부터 생성된 머클트리의 루트에 대한 해시 정보가 담겨있습니다. 아무리 거래가 많이 발생하더라도 하나로 압축된 머클 루트의 용량은 항상 32바이트를 유지합니다.


◼ 머클 경로 : 머클경로는 어떤 거래의 진위를 따질 시 이를 검증하는 과정입니다. 머클루트가 주어진다면, 조금 더 쉽게 검증이 가능합니다.


◼ SHA-256 암호화 : 단방향 암호화 기술인 SHA-256은 머클트리가 데이터를 간편하고 확실하게 인증하기 위해 사용하는 암호화 기술입니다. 어떠한 수를 암호화하더라도 결과는 16진수 64자입니다. SHA-256의 특징 중 하나는 입력된 값이 조금이라도 다를 경우 결과를 전혀 유추할 수 없고, 입력도니 글자의 수와 관계없이 결과의 크기가 항상 64자라는 것입니다. 거래량과 관계없이 SHA-256을 사용하여 작은 용량을 유지할 수 있습니다.


◼ 풀 노드와 라이트 노드 : 풀 노드는 제네시스 블록부터 현재 시점의 형성된 블록이 연결된 블록체인 전체를 유지하는 노드입니다. 그와 대조적으로 라이트 노드는 일부 블록만 소유하고 풀 노드에서 필요한 정보만을 받아서 유지하는 노드입니다. 머클트리는 라이트 노드에서 거래를 검증하기 위하여 사용하게 됩니다.


4️⃣ 머클트리 장점

머클트리 자체가 해시로 이루어진만큼 하나의 트랜잭션 혹은 블록 내 필드값이 변조될 경우 머클루트 해시 값이 변조되는 쇄도 효과가 발생합니다. 이러한 이유로 잘못된 해시값이 검출될 경우 해당 블록을 거부하고 블록체인 네트워크를 지속적으로 안정적이게 유지할 수 있게 됩니다.


머클트리는 2가지 이유로 블록체인 효용성 향상에 기여하고 있습니다.


1. 특정 거래 내역을 증명하기 위하여 모든 거래내역을 검색할 필요가 없습니다. 블록체인은 시간이 지날수록 블록체인에 저장된 데이터가 늘어나 용량이 커진다면, 거래 처리 속도는 느려질 수 밖에 없습니다.

따라서 모든 거래 내역을 저장하고 있는 풀노드와 데이터 일부만을 처리해 보관하는 라이트노드를 분리하여 거래 처리 속도를 높이는 방법을 선택하는 블록체인도 존재합니다.


머클트리의 머클루트가 바로 이러한 라이트 노드와 같은 역할을 합니다. 머클루트값만 알면 최소한의 정보만으로도 필요한 정보를 블록에서 가지고 올 수 있습니다. 블록체인 네트워크 용량 중 큰 부분을 차지하고 있는 거래내역을 조회하지 않고 32바이트에 불과한 값 하나로 거래내역 검증을 간편하고 확실하게 할 수 있기 때문에 사양이 낮은 기기들의 네트워크 접근성이 높아지는 동시에 탈중앙화를 통한 네트워크 안정성이 향상됩니다.



2. 모든 거래내역들이 합하여 해시화된 값이 머클루트이기 때문에 하나의 거래내역에 작은 변화가 생기더라도 상위 해시값 모두가 변하게 됩니다. 따라서 특정 거래 내역을 확인하기 위하여 모든 거래 내역을 일일이 검사해야하는 번거로움을 줄일 수 있습니다. 또한 거래내역을 위변조하려는 잘못된 해시값이 검출되는 경우 네트워크 접속을 거부할 수 있습니다. 기존 거래 내역 일부에 작은 변화가 있기만 해도 상위 해시값이 모두 변환되기 때문입니다.

네트워크 접근성은 높아졌지만 동시에 보안성도 높아지는 일석이조 효과가 있습니다.


5️⃣ 머클트리 준비금 증명

암호화폐 거래소 FTX의 파산과 유동성 위기로 인해 암호화폐 시장에 매우 큰 충격을 받은 적이 있습니다.

특히 FTX 사태의 가장 큰 원인은 자산의 대부분이 거래소 자체 토큰이었다는 것과 자체 토큰의 레버리지를 활용했다는 것이었습니다.


이에 따라 바이낸스를 시작으로 해외 거래소들이 줄지어 준비금 증명 움직임에 동참하고 있습니다.

게이트 아이오, 쿠코인, 플로닉스, 비트겟, 후오비, OKX, 비트맥스 등 10개 거래소가 준비금 증명에 동참하겠다는 설명문을 발표한 바 있습니다.


준비금 증명이란 머클트리를 활용하여 사용자가 자신이 사용하는 거래소의 보유 자산을 실시간으로 감사할 수 있는 방법을 말합니다.


제 2의 FTX 사태를 방지하기 위하여 이러한 머클트리 준비금 증명 외에도 외부 회계법인으로부터 감사를 받는 등 투자자 보호를 위해 여러방면으로 업계가 노력중에 있습니다.
















브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari