# Merkle Tree

> 머클 트리(Merkle Tree)는 컴퓨터 과학의 데이터 구조로, 블록체인 기술에서 블록체인 데이터를 효율적이고 안전하게 인코딩하는 데 사용됩니다.

- Canonical URL: https://iq.wiki/kr/wiki/merkle-tree
- Categories: Glossary
- Created: 2023-10-08T07:30:00.000Z
- Last updated: 2026-06-03T01:58:42.110Z
- Source: IQ.wiki — the world's largest blockchain and crypto encyclopedia (https://iq.wiki)

---

**머클 트리(Merkle tree)**는 이진 해시 트리라고도 하며, 컴퓨터 과학 응용 분야에서 사용되는 데이터 구조입니다. [블록체인](https://iq.wiki/wiki/blockchain) 기술의 맥락에서 머클 트리는 블록체인 데이터를 보다 효율적이고 안전하게 인코딩하는 역할을 합니다.[\[1\]](#cite-id-m5x4yae2g9q)​

[YOUTUBE@VID](PraPZFMj6h8)

## 개요

[비트코인](https://iq.wiki/wiki/bitcoin)의 [블록체인](https://iq.wiki/wiki/blockchain)에서, 트랜잭션 [블록](https://iq.wiki/wiki/block)은 알고리즘을 통해 실행되어 해시를 생성합니다. 해시는 특정 데이터 세트가 원래의 트랜잭션 세트와 동일한지 확인하는 데 사용할 수 있는 숫자와 문자의 문자열입니다. 각 트랜잭션은 해시화되고, 각 트랜잭션 쌍은 연결되어 함께 해시화되는 과정을 전체 블록에 대해 하나의 해시가 남을 때까지 반복합니다. 이 구조는 나무와 비슷하며, 맨 아래 줄의 해시를 "리프(leaves)", 중간 해시를 "브랜치(branches)", 맨 위의 해시를 "루트(root)"라고 부릅니다.

특정 블록의 머클 루트는 헤더에 저장됩니다. 머클 트리를 통해 사용자는 전체 블록체인을 다운로드하지 않고도 특정 트랜잭션을 확인할 수 있습니다. 예를 들어, 특정 트랜잭션이 블록에 포함되어 있는지 확인하려는 경우 네트워크에 해당 트랜잭션의 해시를 쿼리하면 모든 것이 반영되었는지 확인하는 데 필요한 해시를 반환해 줍니다.[\[1\]](#cite-id-m5x4yae2g9q)​[\[4\]](#cite-id-1xs5n5tytwk)​[\[7\]](#cite-id-d0enxej3o1v)​

![](https://ipfs.everipedia.org/ipfs/QmUoPRKWj2rjU7zx8NT9CdJ3QYP1gpuZCFpAgS3HHQ4REk)

머클 트리의 주요 목적은 데이터의 무결성을 검증하는 것입니다. 머클 트리는 블록체인 기술의 보안과 효율성을 보장하는 데 필수적입니다. 블록체인 기술의 맥락에서 다음과 같은 몇 가지 중요한 목적을 수행합니다.

* **효율적이고 안전한 데이터 검증:** 머클 트리를 사용하면 대규모 데이터 세트를 효율적이고 안전하게 검증할 수 있습니다. 이는 데이터 양이 상당히 많고 지속적으로 증가하는 블록체인 기술에서 매우 중요합니다.
* **트랜잭션 검증:** 예를 들어 비트코인 블록체인에서 머클 트리를 사용하면 사용자가 전체 블록체인을 다운로드하지 않고도 특정 트랜잭션을 확인할 수 있습니다. 이는 트랜잭션 확인을 위해 블록체인의 일부만 다운로드하는 경량 SPV(Simplified Payment Verification) 클라이언트에 특히 유용합니다.
* **데이터 무결성 및 일관성:** 블록 헤더에 저장되는 머클 루트는 블록 내 모든 트랜잭션의 무결성과 일관성을 보장하는 데 도움이 됩니다. 단 하나의 트랜잭션이라도 변경되면 머클 루트가 달라지게 됩니다.
* **이중 지불 방지:** 각 트랜잭션 블록이 이전 블록을 참조하도록 함으로써, 머클 트리는 사용자가 동일한 돈을 두 번 이상 쓸 수 있는 디지털 현금 체계의 잠재적 결함인 [이중 지불](https://iq.wiki/wiki/double-spending-problem)을 방지하는 데 도움을 줍니다.

## 역사

머클 트리의 개념은 1987년 랄프 머클(Ralph Merkle)이 발표한 "A Digital Signature Based on a Conventional Encryption Function"이라는 논문에서 처음 제안되었습니다. 그는 암호화 해싱도 발명했습니다. 머클 트리 기술은 1989년에 특허를 받았습니다.

[비트코인](https://iq.wiki/wiki/bitcoin)이 발명되기 전에도 소프트웨어 개발에서 데이터를 보호하기 위해 암호학이 사용되었습니다. 공개 키 암호학으로 유명한 머클이 피어 투 피어(P2P) 네트워크에서 데이터 무결성을 검증하기 위해 머클 트리를 도입한 후, 새로운 검증 수행 방식으로서 해싱 개념을 도입했습니다. 머클 트리는 현재 P2P 네트워크, 분산 시스템, [블록체인](https://iq.wiki/wiki/blockchain) 기술을 포함한 다양한 응용 분야에서 사용되고 있습니다. 이는 [비트코인](https://iq.wiki/wiki/bitcoin) 및 [이더리움](https://iq.wiki/wiki/ethereum)과 같은 암호화폐 운영의 근간이 됩니다.[\[1\]](#cite-id-m5x4yae2g9q)​[\[5\]](#cite-id-xpkpgp69le9)​[\[9\]](#cite-id-eccsnmxm9db)​

## 머클 트리의 종류

각 부모 노드가 가질 수 있는 자식 노드의 수에 따라 다양한 유형의 머클 트리가 있습니다. 몇 가지 예시는 다음과 같습니다.[\[8\]](#cite-id-tpx2xwcsms)​

* **이진 머클 트리(Binary Merkle trees)**: 가장 단순하고 일반적인 유형의 머클 트리로, 각 부모 노드가 두 개의 자식 노드만 가집니다. 파일이나 트랜잭션과 같은 대규모 데이터 세트를 효율적으로 요약하고 검증하는 데 사용됩니다.
* **패트리샤 트리(Patricia trees)**: 스마트 계약의 트랜잭션을 처리하기 위해 [이더리움](https://iq.wiki/wiki/ethereum)에서 사용되는 더 복잡한 유형의 머클 트리입니다. 패트리샤 트리는 부모당 훨씬 더 많은 자식 노드를 가질 수 있어 더 복잡한 작업에 적합합니다.

## 사용 사례

머클 트리는 특히 데이터 무결성 확인이 필요한 시스템에서 광범위하게 응용됩니다. 다음은 주목할 만한 응용 분야이며 머클 트리의 활용은 다른 많은 영역으로도 확장됩니다.[\[2\]](#cite-id-w1isme21ksc)​[\[7\]](#cite-id-d0enxej3o1v)​[\[10\]](#cite-id-r1pcwhos6ra)​

* **암호화폐:** 머클 트리는 비트코인 및 이더리움과 같은 암호화폐 운영의 핵심입니다. 블록 내 트랜잭션을 효율적으로 저장하고 검증하는 데 사용됩니다.
* **분산 시스템:** P2P 네트워크와 같은 분산 시스템은 머클 트리를 사용하여 다른 피어로부터 받은 데이터 블록이 손상되지 않고 변경되지 않은 상태로 수신되었는지 확인합니다.
* **파일 시스템:** [IPFS(InterPlanetary File System)](https://iq.wiki/wiki/ipfs), Btrfs, ZFS와 같은 파일 시스템은 데이터 성능 저하에 대응하기 위해 머클 트리를 사용합니다.
* **데이터베이스:** Dynamo DB 및 Apache Cassandra와 같은 확장 가능한 데이터베이스는 머클 트리를 사용합니다.
* **인증서 투명성(Certificate Transparency):** 인증 기관은 인증서 투명성 검증을 위해 머클 트리를 사용합니다.
* **디지털 서명:** 머클 트리는 디지털 서명에 사용됩니다.
* **데이터 무결성 검사:** 불일치를 확인해야 하는 모든 시스템은 머클 트리를 사용할 수 있습니다.
* **주식 거래:** 일일 주식 거래 활동을 추적해야 하는 애플리케이션은 머클 트리가 유용하게 사용될 수 있는 완벽한 예입니다.

## 예시

머클 트리가 구현된 몇 가지 예시는 다음과 같습니다.[\[7\]](#cite-id-d0enxej3o1v)​

* **IPFS**: [IPFS](https://iq.wiki/wiki/ipfs)는 분산 파일 시스템에서 파일을 저장하고 공유하기 위한 P2P 프로토콜입니다. IPFS는 머클 트리를 사용하여 파일과 디렉토리를 머클 [DAG](https://iq.wiki/wiki/directed-acyclic-graph-dag)(방향성 비순환 그래프)로 표현합니다. DAG의 각 노드는 고유한 해시로 식별되며, 다른 노드에 대한 링크는 데이터의 일부로 인코딩됩니다. 이를 통해 네트워크 전체에서 데이터의 효율적인 중복 제거, 검증 및 동기화가 가능합니다.
* **ZFS**: ZFS는 데이터 무결성, 압축, 암호화 및 스냅샷과 같은 기능을 제공하는 파일 시스템입니다. ZFS는 머클 트리를 사용하여 파일 이름, 크기, 권한 및 체크섬과 같은 파일 시스템의 메타데이터를 저장합니다. 각 데이터 블록에는 부모 블록에 저장되는 체크섬이 있어 루트 블록에서 끝나는 트리를 형성합니다. 이를 통해 데이터 손상을 감지하고 수정할 수 있을 뿐만 아니라 스냅샷과 백업의 일관성을 확인할 수 있습니다.
* **이더리움**: [이더리움](https://iq.wiki/wiki/ethereum)은 스마트 계약과 [탈중앙화 애플리케이션](https://iq.wiki/wiki/decentralized-application)을 지원하는 블록체인 플랫폼입니다. 이더리움은 머클 트리를 사용하여 계정, 잔액, 트랜잭션 및 계약 코드와 같은 네트워크 상태를 저장합니다. 이더리움은 패트리샤 트리라고 불리는 머클 트리의 변형을 사용하는데, 이는 부모 노드당 두 개 이상의 자식 노드를 가질 수 있고 키-값 쌍을 효율적으로 저장할 수 있습니다. 패트리샤 트리는 데이터의 존재 및 부재에 대한 빠른 증명과 라이트 클라이언트 프로토콜을 가능하게 합니다.
