Home

Awesome

bitcoin-inventory

npm version Build Status Dependency Status

Exchange transactions with peers

Usage

npm install bitcoin-inventory

var Inventory = require('bitcoin-inventory')

// "peers" is a PeerGroup or Peer from the `bitcoin-net` package
var inv = Inventory(peers)

// get a tx that was sent to us
inv.get(hash) // returns tx

// add a tx and announce its hash to our peers
inv.broadcast(tx)

inv.on('tx', (tx) => { /* got tx */ })
inv.on('tx:<txid>', (tx) => { /* got tx with hex hash `txid` */ })

Inventory handles the exchange of Bitcoin transactions with peers.

When a peer discovers a new transaction, they send us a message (inv) announcing its hash. If we have not yet seen this transaction, Inventory will request it from the peer and add it to the inventory.

If we create a new transaction, Inventory will announce the hash to our peers, and send the transaction data to them if they request it.


new Inventory(peers, [opts])

Creates an Inventory which listens for and fetches new transactions from peers, and announces transactions to peers.

Transactions are only kept in the Inventory for a limited amount of time, after which they are automatically pruned. (The amount of time is configurable via the ttl option).

peers should be an instance of PeerGroup or Peer, from the bitcoin-net package.

opts may be an object containing:


inv.get(hash)

Returns the transaction from the inventory with the specified hash (which is a Buffer).


inv.broadcast(tx)

Adds tx to the inventory, and announces its hash to the peers. Also listens for peers to request the full transaction from us.


inv.close()

Closes the inventory and clears timers.