# 인벤토리 (Inventory)

비트코인 P2P 네트워크에서 인벤토리는 노드가 가진 트랜잭션이나 블록을 데이터 유형과 해시의 쌍으로 알리는 식별 정보로, inv 메시지에 담겨 전파됩니다. 창고의 '재고'와는 관계가 없으며, 개발 문서에서는 영어 그대로 인벤토리(inventory, inv)라고 부릅니다.

## 자세히 알아보기

인벤토리 항목 하나(inventory vector)는 4바이트 유형 값과 32바이트 해시로 구성됩니다. 대표적인 유형은 트랜잭션(MSG_TX, 1)과 블록(MSG_BLOCK, 2)이며, 이후 SPV용 필터 블록(MSG_FILTERED_BLOCK), 압축 블록(MSG_CMPCT_BLOCK), 세그윗 데이터를 포함해 달라는 위트니스 변형 유형 등이 추가되었습니다. 해시는 트랜잭션이라면 txid(또는 wtxid), 블록이라면 블록 헤더 해시입니다.

전파 과정은 '알림 → 요청 → 전송'의 세 단계입니다. 새 트랜잭션을 받은 노드는 연결된 피어들에게 inv 메시지로 그 해시만 알립니다. 해당 데이터를 아직 갖고 있지 않은 피어는 getdata 메시지로 같은 인벤토리 항목을 요청하고, 노드는 tx 또는 block 메시지로 실제 데이터를 보냅니다. 요청받은 데이터가 없으면 notfound로 답합니다. 이렇게 해시만 먼저 주고받기 때문에, 이미 가진 데이터를 여러 피어로부터 중복해서 내려받는 낭비를 줄일 수 있습니다.

블록 전파는 이후 효율화되었습니다. BIP-130 이후에는 inv 대신 블록 헤더를 바로 보내는 방식(sendheaders)을 쓸 수 있고, BIP-152 압축 블록은 상대가 이미 멤풀에 가진 트랜잭션을 짧은 ID로만 알려 블록 전파 시간을 크게 줄였습니다. 트랜잭션 알림은 지금도 inv 기반이며, 노드는 알림 시점을 무작위로 지연시켜 트랜잭션을 처음 보낸 노드를 추적하기 어렵게 만듭니다.

## 블록체인·암호화폐에서는

인벤토리 메커니즘은 트랜잭션이 몇 초 만에 전 세계 노드의 멤풀로 퍼지는 기반입니다. 이더리움도 비슷한 구조를 써서, 새 트랜잭션은 먼저 해시만 알리고(NewPooledTransactionHashes) 필요한 피어가 본문을 요청합니다. 네트워크 감시 노드를 많이 운영하는 분석 업체는 어떤 노드가 특정 트랜잭션의 inv를 가장 먼저 보냈는지 관찰해 송신자의 IP를 추정하려 하므로, 프라이버시가 중요한 사용자는 Tor 같은 익명 네트워크를 통해 트랜잭션을 전파하기도 합니다.

## 쉽게 말하면

택배를 통째로 보내기 전에 "이 송장번호의 물건이 있어요"라고 목록만 먼저 돌리고, 필요한 사람만 실물을 받아 가는 방식입니다.

---
출처: https://achivx.kr/glossary/inventory-%EC%9E%AC%EA%B3%A0/ · ACHIVX 용어 사전 · 수정일 2026-10-20
