용어집 / 노드와 소프트웨어
최초 블록 다운로드
별칭은 IBD입니다.
- 최초 블록 다운로드란 무엇입니까?
- 최초 블록 다운로드는 새 비트코인 노드가 거치는 따라잡기 단계로, 제네시스 블록부터 현재 체인 끝까지 모든 블록을 내려받아 검증하는 과정입니다.
자체 노드를 운영할 때 실제로 느린 유일한 구간이며, 한 번만 일어납니다. 2026년 8월 기준으로 노드에는 수집하고 검사해야 할 759 GB의 기록이 있으며, 고성능 기기와 솔리드 스테이트 드라이브에서는 몇 시간, 저사양 기기에서는 며칠이 걸립니다. Bitcoin Core는 체인 끝의 블록이 생성된 지 24시간이 지나지 않았고 보유한 체인에 충분한 누적 작업이 쌓여 있을 때 완료된 것으로 판단합니다.
작동 방식
최초 블록 다운로드는 가장 값싼 증거부터 의도적으로 먼저 처리합니다.
블록 헤더가 먼저입니다. 2015년 2월 16일에 공개된 버전 0.10.0부터 Bitcoin Core는 블록 본문을 요청하기 전에 피어에게 80바이트 블록 헤더 체인을 요청합니다. 이 헤더를 검증하는 것은 빠르고, 어느 체인에 가장 많은 작업 증명이 있는지 확립하며, 소프트웨어가 찾아야 할 블록 수를 미리 알 수 있게 합니다. 그다음 블록은 한 번에 하나씩이 아니라 여러 피어에게 병렬로 요청할 수 있으며, 이것이 동기화 시간을 주 단위에서 시간 단위로 줄이는 차이입니다.
서명 검증은 비용이 큰 부분이므로 스위치가 달린 지름길이 있습니다. Bitcoin Core 0.14.0은 특정 과거 블록을 지정하는 설정을 도입했으며, 이 블록은 검토를 거쳐 각 버전에 하드코딩되어 있습니다. 이 설정은 그 아래에 묻힌 모든 항목의 스크립트 서명 검증을 건너뜁니다. 다른 모든 규칙은 그대로 적용됩니다. 금액, 이중 지불, 보조금, 머클 루트, 작업 증명이 그것입니다. 이 옵션을 0으로 설정하면 노드는 2009년부터 모든 서명을 검증하며, 아무것도 신뢰하고 싶지 않다면 한 번쯤 해 볼 가치가 있습니다.
이제 완료되기 전에 유용하게 쓰이는 방법이 있습니다. Bitcoin Core 28.0은 블록 높이 840,000 시점에 기록한 미사용 출력 집합의 스냅숏을 불러오는 매개변수를 포함했으며, 이를 통해 노드는 이전 기록을 뒤에서 조용히 재구축하는 동안 몇 분 안에 지갑에 데이터를 제공할 수 있습니다. 백그라운드 동기화가 스냅숏 높이에 도달하면 자체 계산한 해시를 버전에 포함된 해시와 비교하며, 불일치가 있으면 노드를 종료합니다.
메모리는 대부분의 사람이 당기지 않는 지렛대입니다. 데이터베이스 캐시의 기본값은 450 메비바이트이며, 여유 용량이 있는 기기에서 이를 몇 기가바이트로 높이면 미사용 출력 집합이 디스크를 과도하게 읽고 쓰는 대신 RAM에 유지되어 총 소요 시간이 몇 시간 줄어듭니다.
확인할 수 있는 곳
최초 블록 다운로드는 Bitcoin Core를 처음 시작할 때, 그리고 노드를 몇 달 동안 꺼 두었다가 다시 시작할 때 나타납니다.
인터페이스는 헤더를 동기화 중이라고 알린 뒤 몇 주나 뒤처져 있는지 보고하며, 초기 추정치는 신뢰할 수 없습니다. 2011년의 블록은 아주 작고 지난해의 블록은 그렇지 않기 때문입니다. 진행률은 선형이 아니며, 60%에서 멈춘 것처럼 보이는 노드는 보통 체인에서 가장 무거운 몇 년 치를 처리하고 있는 중입니다.
잘못되는 거의 모든 경우를 세 가지 실용 규칙이 포괄합니다. 솔리드 스테이트 드라이브를 사용하십시오. 회전식 디스크는 하루면 될 작업을 일주일 작업으로 만듭니다. 전체 아카이브가 도착해야 하므로 프로세스에 대역폭과 안정적인 연결을 주십시오. 그리고 동기화가 실제로 끝나기 전에 지갑을 연결하고 잔액이 없다고 당황하지 마십시오. 부분적으로 동기화된 노드는 아직 도달하지 못한 블록의 코인에 대해 아무런 판단도 하지 않습니다.
최초 블록 다운로드 vs 블록 우선 동기화
최초 블록 다운로드는 목표이고, 블록 우선 동기화는 그 목표에 도달하는 한 가지 낡은 방식이었습니다. 이 구분은 오래된 문서를 읽을 때 중요합니다. 그런 문서는 흔히 둘을 같은 것처럼 설명합니다. 따라잡기 중인 모든 노드는 블록을 단일 피어에서 순차적으로 요청하든, 헤더를 먼저 가져온 뒤 여러 피어에서 본문을 한꺼번에 가져오든, 스냅숏을 불러온 뒤 이전 기록을 채우든 최초 블록 다운로드를 수행합니다. 이 단계에 이름이 있는 이유는 정상 운영과 성능 특성 및 공격 표면이 다르기 때문이지, 특정 방식을 규정하기 때문이 아닙니다.