Announcement: Inventory ("inv")
Notifies peers about the existence of some information (block or transaction).
Based on selected services in the version message, inventory messages may not be sent.
If a bloom filter has been sent to this node via filterload, a transaction inventory will only be sent for transactions that match the bloom filter.
Message Format
| Field | Length | Format | Description | 
|---|---|---|---|
| inventory count | variable | variable length integer | The number of inventory items in this message. | 
| inventory items | inventory_count* 36 bytes | inventory_countinventory items | The set of inventory items being transmitted. Up to 50,000 inventory items can be sent in a single inventory message. | 
NOTE: Since a block header is a relatively small data structure, and block propagation speed is an important network metric, a peer may send headers messages in place of inventory messages when a block arrives.  This behavior can be requested using the sendheaders message.
Inventory Item Format
| Field | Length | Format | Description | 
|---|---|---|---|
| type | 4 bytes | inventory type(LE) | Indicates what the following hash represents. | 
| item hash | 32 bytes | bytes(LE) | The hash that identifies the item. | 
Inventory Types
The type of the object that is available.
| Type | Value | 
|---|---|
| 0x0001 | Transaction | 
| 0x0002 | Block | 
| 0x0003 | Filtered Block (partial block with merkle proof) | 
| 0x0004 | Compact block | 
| 0x0005 | Xthin block (Bitcoin Unlimited) | 
| 0x0006 | Graphene Block (Bitcoin Unlimited) | 
| 0x94A0 | Double Spend Proof - Beta | 
Implementations: C++