요약: 블록체인의 과거 데이터에 접근하려면 아카이브 노드(제네시스 블록부터 모든 상태 스냅샷을 저장하는 노드)나, 과거 블록을 검색하여 쿼리 가능한 데이터베이스에 저장하는 데이터 백필 도구가 필요합니다. 표준 풀 노드는 가장 최근의 128개 블록에 해당하는 상태 데이터만 유지하고 그보다 오래된 데이터는 모두 삭제하므로, 풀 노드에서 6개월 전의 지갑 잔액을 조회하려고 하면 실패하게 됩니다. 두 가지 주요 접근 방식은 특정 시점의 상태 조회를 위한 아카이브 노드 RPC 액세스와, 포괄적인 과거 데이터베이스를 구축하기 위한 스트리밍 백필링입니다.
간단한 설명
블록체인은 지금까지 발생한 모든 거래를 기록하지만, 그렇다고 해서 모든 과거 데이터에 쉽게 접근할 수 있는 것은 아닙니다. 여기서 중요한 구분은 거래 데이터와 상태 데이터 사이에 있습니다. 거래 데이터(누가 누구에게 무엇을 보냈는지, 어떤 계약이 호출되었는지, 어떤 이벤트가 발생했는지에 대한 기록)는 영구적이며 모든 블록에서 확인할 수 있습니다. 반면 상태 데이터(특정 시점의 잔액, 저장된 값, 계약 상태 등)는 별도의 story 에 저장됩니다.
대부분의 RPC 제공자가 운영하는 표준 노드인 풀 노드는 블록과 거래의 전체 이력을 저장하지만, 현재 상태와 최근 상태 스냅샷의 롤링 윈도우(일반적으로 Ethereum 기준 마지막 128개 블록, 대략 25분 분량)만 유지합니다. 저장 공간을 확보하기 위해 오래된 상태 데이터는 삭제됩니다. 즉, 풀 노드는 15,000,000번째 블록에서 어떤 거래가 발생했는지는 알려줄 수 있지만, 해당 블록이 최근 보존 기간 내에 포함되지 않는 한 15,000,000번째 블록 시점의 지갑 잔액은 알려줄 수 없습니다.
애플리케이션이 과거 블록 번호를 포함한 “eth_getBalance”와 같은 RPC 호출을 풀 노드에 전송하면, 해당 블록에 대한 상태 데이터가 정리(pruning)되었기 때문에 노드는 “missing trie node” 오류를 반환합니다. 이는 개발자들이 과거 데이터를 처음 다룰 때 가장 흔히 겪는 예상치 못한 문제입니다. 블록체인은 모든 거래가 기록된다는 점에서 모든 것을 “기억”하지만, 과거의 임의 시점에서 상태를 복원하려면 특별한 인프라가 필요합니다.
풀 노드와 아카이브 노드의 차이점은 무엇인가요?
역사적 데이터 접근 방식을 이해하는 가장 빠른 방법은 대부분의 제공업체가 운영하는 두 가지 노드 유형을 비교해 보는 것입니다. 풀 노드는 블록과 거래의 전체 이력을 보관하되 오래된 상태는 정리하는 반면, 아카이브 노드는 모든 과거 상태 스냅샷을 보관합니다. 최근 데이터만 필요한 경우 풀 노드가 비용 면에서 더 저렴하고 속도도 빠르지만, 특정 시점의 과거 상태에 대한 쿼리를 수행하려면 아카이브 노드가 필요합니다. 더 자세한 내용은 ‘풀 노드 대 아카이브 노드’ 가이드와 ‘블록체인 노드란 무엇인가’ 개요를 참고하시기 바랍니다.
역량
풀 노드
아카이브 노드
주별 보유율
최근 ~128블록 ( Ethereum 기준 약 25분)
창세기부터 최신판까지 모든 주
저장 공간 점유 면적
약 1TB가 Ethereum
12TB 이상 Ethereum
과거 상태 조회
트리 노드가 없다는 오류로 실패함
임의의 블록 높이에 대한 상태를 반환합니다.
운영 비용
아래로
상당히 더 높다
다음에 가장 적합합니다
현재 잔액 및 최근 거래 내역
감사, 세무 신고, 포렌식, 분석
특정 시점 쿼리를 위한 아카이브 노드
아카이브 노드는 제네시스 블록 이후의 모든 상태 스냅샷을 보관함으로써 상태 정리(state pruning) 문제를 해결합니다. Ethereum 아카이브 노드는 풀 노드의 약 1TB에 비해 12TB 이상의 데이터를 저장하므로, 운영 및 유지 관리 비용이 훨씬 더 많이 듭니다. 하지만 이를 통해 과거 어느 블록 높이에서든 계정, 계약, 또는 스토리지 슬롯의 정확한 상태를 조회할 수 있는 중요한 기능을 제공합니다.
이는 다양한 사용 사례에서 필수적입니다. 재무 감사에서는 특정 시점의 계정 잔액을 재구성해야 합니다. 세무 보고에서는 연말 기준 보유 자산의 가치를 산정해야 합니다. 포렌식 분석에서는 과거 상태 변화를 추적하여 자금의 이동 경로( flow )를 파악합니다. 스마트 계약 디버깅에서는 과거 상태를 활용하여 과거의 버그나 악용 사례를 재현하고 분석합니다. DeFi 프로토콜 분석에서는 과거 블록 높이에서 풀 상태를 조회하여 과거 TVL, APY 및 기타 지표를 계산합니다.
자체 아카이브 노드를 운영하는 데는 많은 리소스가 소요됩니다. 초기 동기화에는 몇 주가 걸리고, 스토리지 비용도 높으며, 노드에 대한 지속적인 유지 관리, 클라이언트 업데이트 및 모니터링이 필요합니다. 대부분의 팀은 자체 노드를 운영하기보다는 인프라 제공업체를 통해 아카이브 데이터에 접근합니다. 제공업체를 평가할 때 핵심 고려 사항은 아카이브 접근 권한이 요금제에 포함되어 있는지, 아니면 프리미엄 추가 기능으로 별도 과금되는지, 그리고 해당 제공업체가 애플리케이션에 필요한 모든 체인의 아카이브 데이터를 지원하는지 여부입니다.
블록체인 과거 데이터를 얼마나 먼 시점까지 조회할 수 있나요?
아카이브 노드를 사용하면 제네시스 블록까지 거슬러 올라가 어떤 계정, 계약, 저장 슬롯의 상태든 조회할 수 있습니다. 표준 풀 노드에서도 모든 블록의 트랜잭션 및 이벤트 데이터를 확인할 수 있지만, 과거 잔액과 계약 저장소는 아카이브 노드에서만 복구할 수 있습니다. 이 차이는 특정 시점의 상태가 필요한지, 아니면 과거 활동의 전체 기록이 필요한지를 결정할 때 중요하며, 이러한 상충 관계는 ‘실시간 대 과거 블록체인 데이터’에서 다루고 있습니다. 쿼리가 계속 실패한다면, 대개 요청이 풀 노드에 도달했기 때문입니다. 따라서 RPC 요청이 어떻게 작동하는지 이해하면 요청을 올바르게 라우팅하는 데 도움이 됩니다.
이력 데이터베이스를 위한 스트리밍 백필
아카이브 노드는 특정 시점의 상태에 대한 쿼리에 응답하지만, 많은 과거 데이터 활용 사례에서는 이와는 다른 것이 필요합니다. 바로 과거 블록, 트랜잭션, 이벤트 로그 및 추적 정보를 포함하는, 쿼리 가능한 완전한 데이터베이스입니다. 블록체인 분석 대시보드, 토큰 전송 내역 API 또는 포괄적인 블록 탐색기를 구축하려면, 단순히 필요에 따라 아카이브 노드에 쿼리를 보내는 것만으로는 부족하며, 과거 블록 데이터를 구조화된 데이터베이스에 처리하고 저장해야 합니다.
이 데이터베이스를 구축하는 전통적인 방식은 스크립트를 작성하여 블록을 하나씩 순차적으로 처리하고, RPC를 통해 각 블록의 데이터를 가져온 다음, 트랜잭션과 로그를 디코딩하여 그 결과를 데이터베이스에 삽입하는 것입니다. 이 방법은 작동하기는 하지만, 대규모 환경에서는 속도가 극도로 느리고 안정성이 떨어집니다. 순차적인 RPC 호출을 통해 Ethereum 의 전체 이력(2,000만 개 이상의 블록)을 백필링하는 데는 몇 주 또는 몇 달이 걸릴 수 있습니다. 이 스크립트는 속도 제한, 연결 오류, 노드 타임아웃, 재시도 및 블록 순서 정리를 처리해야 합니다. 스크립트가 중간에 중단될 경우, 데이터에 누락이나 중복이 발생하지 않도록 중단된 지점부터 다시 시작할 수 있는 로직이 필요합니다.
푸시 기반 백필링 도구는 공급자 측의 복잡한 인프라를 처리함으로써 이러한 운영상의 골칫거리를 해결합니다. 사용자는 블록 범위를 지정하고, 필요한 데이터 세트(블록, 트랜잭션, 영수증, 추적 정보, 로그)를 선택하며, 필요에 따라 필터를 적용하면, 시스템이 데이터의 전달을 보장하고 올바른 순서를 유지하며, 오류 발생 시 자동으로 재시도하여 데이터를 대상 위치로 푸시합니다. 과거 데이터 백필이 완료되면, 동일한 파이프라인을 실시간 스트리밍 모드로 전환하여 새로운 블록이 생성될 때마다 데이터베이스를 최신 상태로 유지할 수 있습니다.
과거 데이터 보충에는 얼마나 걸리나요?
백필 소요 시간은 체인, 블록 범위 및 요청한 데이터 세트에 따라 달라집니다. 표준 RPC를 통해 블록을 한 번에 하나씩 가져오는 순차적 스크립트의 경우, 2,000만 개의 블록을 처리하는 데 몇 주 또는 몇 달이 걸릴 수 있으며, 재시도, 순서 지정 및 작업 재개 등을 자체적으로 처리해야 합니다. 관리형 푸시 기반 백필은 작업을 병렬화하여 최대 7배 더 빠르게 완료할 수 있으며, 시작 전에 예상 비용과 완료 시점을 확인할 수 있습니다. 기본 RPC 인프라의 처리량은 자체 구현 방식의 주요 제한 요소입니다.
역사적 데이터를 위한 다른 방법들
The Graph 및 기타 인덱싱 프로토콜은 서브그래프를 통해 특정 스마트 계약에 대한 사전 인덱싱된 이력 데이터를 제공합니다. 필요한 데이터가 있는 프로토콜(예: Uniswap, Aave, Lido 등)에 대해 이미 누군가가 서브그래프를 배포한 경우, 별도의 파이프라인을 구축하지 않고도 해당 서브그래프의 GraphQL API를 통해 이력 데이터를 조회할 수 있습니다. 단, 서브그래프는 특정 계약 및 특정 스키마에 한정되어 있으므로, 서브그래프 작성자가 인덱싱 대상으로 선택한 항목에 대해서만 조회할 수 있습니다.
Dune Analytics, Flipside Crypto, Nansen과 같은 제3자 데이터 제공업체들은 주요 블록체인 네트워크 전반에 걸친 포괄적인 과거 데이터베이스를 유지 관리하며, 이를 SQL 인터페이스나 API를 통해 공개합니다. 이러한 방식은 분석 및 연구에 편리하지만, 제3자의 데이터 최신성, 정확성, 가용성에 대한 의존성을 초래합니다. 자체 데이터 파이프라인을 구축해야 하는 실제 운영 환경의 애플리케이션의 경우, 원시 블록체인 데이터(아카이브 노드 또는 백필 streams 을 통해)를 기반으로 구축하는 것이 더 높은 제어력과 신뢰성을 제공합니다.
체인별 탐색기 및 API(예: Etherscan의 API)는 과거 데이터에 접근할 수 있는 또 다른 경로를 제공하지만, 일반적으로 무료 요금제에서는 엄격한 요청 제한을 적용하며, 실제 운영 환경에서 필요한 수준의 세부성이나 완전성을 제공하지 못할 수도 있습니다.
블록체인 과거 데이터에 접근하려면 어떤 방법을 사용해야 할까요?
단연코 가장 좋은 방법은 없습니다. 올바른 선택은 특정 시점의 상태가 필요한지, 쿼리 가능한 전체 데이터베이스가 필요한지, 아니면 미리 집계된 분석 데이터가 필요한지에 따라 달라집니다. 아래 표에는 주요 옵션들이 요약되어 있습니다. 일회성 조회보다는 효율적인 반복 접근이 목표라면, RPC와 인덱싱을 비교하고, 결정하기 전에 블록체인 인덱싱이 무엇인지 검토해 보시기 바랍니다. 대규모로 블록체인 데이터를 쿼리하는 것은 겉보기에 생각보다 어렵기 때문입니다.
방법
다음에 가장 적합합니다
주요 한계
아카이브 노드 RPC
임의의 블록에 대한 특정 시점의 상태
대용량 데이터베이스가 아닙니다
스트리밍 백필
검색이 가능한 완전한 데이터베이스 구축
데이터를 저장할 대상이 필요합니다.
색인 생성 프로토콜 및 부분 그래프
계약별 과거 데이터
색인된 내용으로 한정됨
타사 데이터 API
분석 및 연구
공급업체에 대한 의존도
블록 익스플로러 API
간편 조회
엄격한 속도 제한 및 제한된 세분화 수준
Quicknode 가 과거 데이터에 대한 접근을 제공하는 방식
Quicknode 모든 요금제에서 아카이브 노드 액세스를 포함하여, 아카이브 인프라를 별도로 관리하거나 비용을 지불할 필요가 없습니다. 모든 Quicknode RPC endpoint 는 제네시스 블록부터 최신 블록까지, 어떤 블록 높이에서든 과거 상태 쿼리를 처리할 수 있습니다. Quicknode 의 QRoute 기술은 과거 상태 요청을 아카이브 노드로, 현재 상태 요청을 풀 노드로 자동으로 라우팅하며, 별도의 구성 없이 단일 endpoint URL을 통해 두 가지 모두를 제공합니다.
이력 데이터베이스를 구축하기 위해, Quicknode Streams 20개 이상의 네트워크에 걸친 완전한 체인 이력을 데이터베이스에 채울 수 있는 원클릭 백필 템플릿을 제공합니다. 체인, 데이터셋 유형(블록, 트랜잭션, 영수증, 트레이스 또는 올인원 조합) 및 대상(PostgreSQL, Snowflake, Amazon S3, Azure Storage, webhooks)을 선택하기만 하면, Streams 가 데이터 전송 보장, 정확한 블록 순서 및 내장된 재시도 로직을 통해 데이터를 전송합니다. 시작 전에 예상 비용과 완료 시간이 표시되어 완벽한 투명성을 제공합니다. 백필(backfill)은 기존의 RPC 기반 스크립트보다 최대 7배 더 빠르게 동기화되며, 완료된 후에는 동일한 스트림이 실시간으로 계속 실행되어 mode 데이터베이스를 최신 상태로 유지합니다.
블록체인 이력 데이터란 블록, 거래, 이벤트 로그, 추적 정보, 그리고 특정 블록 높이에서의 상태(잔액 및 계약 저장소)를 포함하여 과거 온체인 활동에 대한 모든 기록을 말합니다. 거래 데이터는 모든 노드에 영구적으로 저장되지만, 이력 상태를 확인하려면 아카이브 노드나 저장된 백필 데이터가 필요합니다.
왜 오래된 블록의 경우 eth_getBalance가 실패하나요?
일반적인 풀 노드는 대략 최근 128블록보다 오래된 상태를 제거하므로, 과거의 eth_getBalance 호출 시 트라이 노드가 없다는 오류가 발생합니다. 모든 상태 스냅샷을 보관하고 있는 아카이브 노드에 쿼리를 보내면 이 오류가 해결됩니다.
과거 데이터에 접근하려면 아카이브 노드가 필요한가요?
임의의 블록 높이에서 특정 시점의 상태를 조회하려면 아카이브에 대한 액세스 권한이 필요합니다. 과거 거래 내역과 이벤트 로그만 필요한 경우, 풀 노드에서 이를 읽거나 백필을 통해 자체 데이터베이스에 저장할 수 있습니다.
블록체인 데이터 백필이란 무엇인가요?
백필은 과거의 특정 범위에 해당하는 블록과 해당 데이터 세트를 가져와 데이터베이스나 저장소로 로드합니다. 푸시 기반 백필은 순서 처리, 재시도, 전달 보장을 처리하며, 데이터 처리가 최신 상태와 동기화되면 실시간 스트리밍으로 전환할 수 있습니다.
Ethereum 아카이브 노드에는 얼마나 많은 데이터를 저장할 수 있나요?
Ethereum 의 아카이브 노드는 풀 노드의 약 1TB에 비해 대략 12TB 이상을 저장합니다. 이 추가 저장 공간에는 모든 과거 상태 스냅샷이 저장되어 있기 때문에, 아카이브 인프라의 운영 비용이 더 많이 듭니다.