# 헤더 우선 동기화 (Headers-First Sync)

**헤더 우선 동기화(Headers-First Sync)**는 새로 시작한 비트코인 전체 노드가 초기 블록 다운로드(IBD)를 할 때, 먼저 블록 헤더의 사슬 전체를 받아 검증한 뒤 그 헤더가 가리키는 블록 본문을 여러 피어에게서 병렬로 내려받는 동기화 방식입니다. Bitcoin Core 0.10(2015년)에서 이전의 블록 우선(blocks-first) 방식을 대체했습니다.

**작동 방식**

1. **헤더 수신:** 노드는 동기화 피어에게 getheaders 메시지를 보내 블록 헤더를 한 번에 최대 2,000개씩 받습니다. 블록 헤더는 80바이트로 작아 전체 헤더 사슬을 비교적 빨리 받을 수 있습니다.
2. **헤더 검증:** 각 헤더가 이전 블록 해시로 올바르게 이어지는지, 작업 증명(PoW)이 난이도 목표를 만족하는지 확인하고, 누적 작업량이 가장 큰 최선의 헤더 사슬을 정합니다.
3. **블록 병렬 다운로드:** 최선의 사슬이 정해지면 그 사슬에 속한 블록 본문을 여러 피어에게 나누어 요청하고 동시에 내려받습니다. 받은 블록은 순서대로 모든 거래를 완전히 검증해 체인에 연결합니다.

**장점**

- **병렬 다운로드:** 블록 우선 방식에서는 한 피어에게서 블록을 순서대로 받아야 했지만, 헤더로 사슬 전체를 먼저 알면 여러 피어에게서 블록을 나누어 받을 수 있어 초기 동기화가 빨라집니다.
- **잘못된 사슬 회피:** 블록 본문을 받기 전에 헤더의 작업 증명과 누적 작업량으로 최선의 사슬을 판단하므로, 고아 블록이나 작업량이 적은 가짜 사슬의 블록을 내려받느라 대역폭을 낭비하지 않습니다.
- **느린 피어의 영향 감소:** 특정 피어가 느리거나 응답하지 않으면 다른 피어에게서 해당 블록을 다시 요청할 수 있습니다.

**전송량에 대한 오해**

헤더 우선 동기화는 전체 노드의 데이터 전송량을 줄여 주지 않습니다. 전체 노드는 헤더를 먼저 받을 뿐, 결국 모든 블록을 내려받아 모든 거래를 검증합니다. 이 방식이 개선하는 것은 다운로드의 순서와 병렬성, 그리고 잘못된 사슬에 대한 방어입니다.

**SPV(경량 지갑)와의 차이**

헤더만 받고 필요한 블록이나 거래만 골라 확인하는 것은 경량 지갑이 쓰는 SPV(Simplified Payment Verification) 방식입니다. SPV 지갑은 헤더 사슬과 자신과 관련된 거래의 머클 증명만 받아 데이터 사용량을 줄이지만, 모든 거래를 직접 검증하지는 않습니다. 헤더 우선 동기화는 이와 달리 모든 블록을 완전히 검증하는 전체 노드의 동기화 방식입니다.

**비유**

책 본문을 읽기 전에 목차부터 훑어보는 것과 비슷합니다. 다만 전체 노드는 목차(헤더)로 책의 순서와 진위를 먼저 확인한 다음, 여러 사람에게 나누어 모든 장(블록)을 받아 처음부터 끝까지 읽습니다. 필요한 장만 골라 읽는 것은 SPV 지갑의 방식입니다.

---
출처: https://achivx.kr/glossary/headers-first-sync-%ED%97%A4%EB%8D%94-%EC%9A%B0%EC%84%A0-%EB%8F%99%EA%B8%B0%ED%99%94/ · ACHIVX 용어 사전 · 수정일 2026-10-20
