new Pool(options)
A pool of peers for handling all network activity.
Parameters:
Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
Properties
|
- Source:
Fires:
- Pool#event:block
- Pool#event:tx
- Pool#event:peer
- Pool#event:open
- Pool#event:close
- Pool#event:error
- Pool#event:reject
Methods
(private) _addBlock(peer, block) → {Promise}
Attempt to add block to chain (without a lock).
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
block |
Block |
- Source:
Returns:
- Type
- Promise
_connect() → {Promise}
Connect to the network (no lock).
- Source:
Returns:
- Type
- Promise
_disconnect() → {Promise}
Disconnect from the network.
- Source:
Returns:
- Type
- Promise
(private) _handleHeaders(peer, packet) → {Promise}
Handle headers
packet from
a given peer without a lock.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
HeadersPacket |
- Source:
Returns:
- Type
- Promise
(private) _handleInv(peer, packet)
Handle inv
packet (without a lock).
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
InvPacket |
- Source:
(private) _handleMerkleBlock(peer, block)
Handle merkleblock
packet (without a lock).
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
block |
MerkleBlockPacket |
- Source:
(private) _handleTX(peer, packet) → {Promise}
Handle a transaction. Attempt to add to mempool (without a lock).
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
TXPacket |
- Source:
Returns:
- Type
- Promise
(private) _init()
Initialize the pool.
- Source:
(private) addBlock(peer, block) → {Promise}
Attempt to add block to chain.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
block |
Block |
- Source:
Returns:
- Type
- Promise
(private) addInbound(socket)
Create an inbound peer from an existing socket.
Parameters:
Name | Type | Description |
---|---|---|
socket |
net.Socket |
- Source:
(private) addLoader()
Add a loader peer. Necessary for a sync to even begin.
- Source:
(private) addOutbound()
Create an outbound non-loader peer. These primarily exist for transaction relaying.
- Source:
announceBlock(tx)
Announce a block to all peers.
Parameters:
Name | Type | Description |
---|---|---|
tx |
Block |
- Source:
announceList(peer)
Announce broadcast list to peer.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer |
- Source:
announceTX(tx)
Announce a transaction to all peers.
Parameters:
Name | Type | Description |
---|---|---|
tx |
TX |
- Source:
ban(addr)
Ban peer.
Parameters:
Name | Type | Description |
---|---|---|
addr |
NetAddress |
- Source:
(private) bindPeer(peer)
Bind to peer events.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer |
- Source:
broadcast(msg) → {Promise}
Broadcast a transaction or block.
Parameters:
Name | Type | Description |
---|---|---|
msg |
TX | Block |
- Source:
Returns:
- Type
- Promise
connect() → {Promise}
Connect to the network.
- Source:
Returns:
- Type
- Promise
(private) createInbound(socket) → {Peer}
Accept an inbound socket.
Parameters:
Name | Type | Description |
---|---|---|
socket |
net.Socket |
- Source:
Returns:
- Type
- Peer
(private) createOutbound(addr) → {Peer}
Create an outbound peer with no special purpose.
Parameters:
Name | Type | Description |
---|---|---|
addr |
NetAddress |
- Source:
Returns:
- Type
- Peer
disconnect() → {Promise}
Disconnect from the network.
- Source:
Returns:
- Type
- Promise
ensureTX(peer, hashes)
Queue a getdata
request to be sent.
Check tx existence before requesting.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
hashes |
Array:.<Hash:> |
- Source:
(private) fillOutbound()
Attempt to refill the pool with peers (no lock).
- Source:
(private) forceSync()
Force sending a sync to each peer.
- Source:
fulfill(peer, hash) → {Boolean}
Fulfill a requested item.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
hash |
Hash |
- Source:
Returns:
- Type
- Boolean
getBlock(peer, hashes)
Queue a getdata
request to be sent.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
hashes |
Array:.<Hash:> |
- Source:
getBlocks(peer, tip, stopnullable) → {Promise}
Send getblocks
to peer after building locator.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
peer |
Peer | ||
tip |
Hash | Tip hash to build chain locator from. |
|
stop |
Hash |
<nullable> |
- Source:
Returns:
- Type
- Promise
(private) getBroadcasted(peer, item) → {Promise}
Get a block/tx from the broadcast map.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
item |
InvItem |
- Source:
Returns:
- Type
- Promise
getHeaders(peer, tip, stopnullable) → {Promise}
Send getheaders
to peer after building locator.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
peer |
Peer | ||
tip |
Hash | Tip to build chain locator from. |
|
stop |
Hash |
<nullable> |
- Source:
Returns:
- Type
- Promise
getHost() → {NetAddress}
Allocate a host from the host list.
- Source:
Returns:
- Type
- NetAddress
getIP() → {Promise}
Attempt to retrieve external IP from icanhazip.com.
- Source:
Returns:
- Type
- Promise
getIP2() → {Promise}
Attempt to retrieve external IP from dyndns.org.
- Source:
Returns:
- Type
- Promise
(private) getItem(peer, item) → {Promise}
Get a block/tx either from the broadcast map, mempool, or blockchain.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
item |
InvItem |
- Source:
Returns:
- Type
- Promise
(private) getNextTip(height) → {Object}
Find the next checkpoint.
Parameters:
Name | Type | Description |
---|---|---|
height |
Number |
- Source:
Returns:
- Type
- Object
getTX(peer, hashes)
Queue a getdata
request to be sent.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
hashes |
Array:.<Hash:> |
- Source:
(private) handleAddr(peer, packet)
Handle peer addr event.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
AddrPacket |
- Source:
(private) handleAuthChallenge(peer, packet)
Handle authchallenge
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
AuthChallengePacket |
- Source:
(private) handleAuthPropose(peer, packet)
Handle authpropose
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
AuthProposePacket |
- Source:
(private) handleAuthReply(peer, packet)
Handle authreply
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
AuthReplyPacket |
- Source:
(private) handleBan(peer)
Handle ban event.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer |
- Source:
(private) handleBlock(peer, packet) → {Promise}
Handle block
packet. Attempt to add to chain.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
BlockPacket |
- Source:
Returns:
- Type
- Promise
(private) handleBlockInv(peer, hashes) → {Promise}
Handle inv
packet from peer (containing only BLOCK types).
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
hashes |
Array:.<Hash:> |
- Source:
Returns:
- Type
- Promise
(private) handleBlockTxn(peer, packet)
Handle blocktxn
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
BlockTxnPacket |
- Source:
(private) handleClose(peer, connected)
Handle peer close event.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
connected |
Boolean |
- Source:
(private) handleCmpctBlock(peer, packet)
Handle cmpctblock
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
CompactBlockPacket |
- Source:
(private) handleConnect(peer)
Handle peer connect event.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer |
- Source:
(private) handleEncack(peer, packet)
Handle encack
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
EncackPacket |
- Source:
(private) handleEncinit(peer, packet)
Handle encinit
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
EncinitPacket |
- Source:
(private) handleFeeFilter(peer, packet)
Handle sendcmpct
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
FeeFilterPacket |
- Source:
(private) handleFilterAdd(peer, packet)
Handle filteradd
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
FilterAddPacket |
- Source:
(private) handleFilterClear(peer, packet)
Handle filterclear
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
FilterClearPacket |
- Source:
(private) handleFilterLoad(peer, packet)
Handle filterload
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
FilterLoadPacket |
- Source:
(private) handleGetAddr(peer, packet)
Handle getaddr
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
GetAddrPacket |
- Source:
(private) handleGetBlocks(peer, packet)
Handle getblocks
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
GetBlocksPacket |
- Source:
(private) handleGetBlockTxn(peer, packet)
Handle getblocktxn
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
GetBlockTxnPacket |
- Source:
(private) handleGetData(peer, packet)
Handle getdata
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
GetDataPacket |
- Source:
(private) handleGetHeaders(peer, packet)
Handle getheaders
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
GetHeadersPacket |
- Source:
(private) handleHeaders(peer, packet) → {Promise}
Handle headers
packet from a given peer.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
HeadersPacket |
- Source:
Returns:
- Type
- Promise
(private) handleInv(peer, packet)
Handle inv
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
InvPacket |
- Source:
(private) handleMempool(peer, packet)
Handle mempool
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
MempoolPacket |
- Source:
(private) handleMerkleBlock(peer, block)
Handle merkleblock
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
block |
MerkleBlockPacket |
- Source:
(private) handleNotFound(peer, packet)
Handle peer notfound packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
NotFoundPacket |
- Source:
(private) handleOpen(peer)
Handle peer open event.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer |
- Source:
(private) handlePacket(peer, packet) → {Promise}
Handle peer packet event.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
Packet |
- Source:
Returns:
- Type
- Promise
(private) handlePing(peer, packet)
Handle ping
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
PingPacket |
- Source:
(private) handlePong(peer, packet)
Handle pong
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
PongPacket |
- Source:
(private) handleReject(peer, packet)
Handle peer reject event.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
RejectPacket |
- Source:
(private) handleSendCmpct(peer, packet)
Handle sendcmpct
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
SendCmpctPacket |
- Source:
(private) handleSendHeaders(peer, packet) → {Promise}
Handle sendheaders
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
SendHeadersPacket |
- Source:
Returns:
- Type
- Promise
(private) handleSocket(socket)
Handle incoming connection.
Parameters:
Name | Type | Description |
---|---|---|
socket |
net.Socket |
- Source:
(private) handleTX(peer, packet) → {Promise}
Handle a transaction. Attempt to add to mempool.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
TXPacket |
- Source:
Returns:
- Type
- Promise
(private) handleTXInv(peer, hashes)
Handle peer inv packet (txs).
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
hashes |
Array:.<Hash:> |
- Source:
(private) handleUnknown(peer, packet)
Handle unknown
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
UnknownPacket |
- Source:
(private) handleVerack(peer, packet)
Handle verack
packet.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
VerackPacket |
- Source:
(private) handleVersion(peer, packet)
Handle peer version event.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
packet |
VersionPacket |
- Source:
hasBlock(hash) → {Promise}
Test whether the chain has or has seen an item.
Parameters:
Name | Type | Description |
---|---|---|
hash |
Hash |
- Source:
Returns:
- Returns Boolean.
- Type
- Promise
hasTX(hash) → {Promise}
Test whether the mempool has or has seen an item.
Parameters:
Name | Type | Description |
---|---|---|
hash |
Hash |
- Source:
Returns:
- Returns Boolean.
- Type
- Promise
(private) listen() → {Promise}
Start listening on a server socket.
- Source:
Returns:
- Type
- Promise
(private) logStatus(block)
Log sync status.
Parameters:
Name | Type | Description |
---|---|---|
block |
Block |
- Source:
queueFilterLoad()
Queue a resend of the bloom filter.
- Source:
(private) refill()
Attempt to refill the pool with peers (no lock).
- Source:
(private) removePeer(peer)
Remove a peer from any list. Drop all load requests.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer |
- Source:
resetChain()
Reset header chain.
- Source:
(private) resolveChain(peer, hash) → {Promise}
Resolve header chain.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
hash |
Hash |
- Source:
Returns:
- Type
- Promise
(private) resolveHeaders(peer)
Request current header chain blocks.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer |
- Source:
resolveOrphan(peer, orphan) → {Promise}
Send getblocks
to peer after building
locator and resolving orphan root.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
orphan |
Hash | Orphan hash to resolve. |
- Source:
Returns:
- Type
- Promise
(private) sendBlock(peer, item) → {Boolean}
Send a block from the broadcast list or chain.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
item |
InvItem |
- Source:
Returns:
- Type
- Boolean
sendFilterLoad()
Resend the bloom filter to peers.
- Source:
sendGetAddr()
Send getaddr
to all peers.
- Source:
sendMempool()
Send mempool
to all peers.
- Source:
sendSync(peer) → {Promise}
Start syncing from peer.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer |
- Source:
Returns:
- Type
- Promise
setFilter(filter, encnullable)
Set the spv filter.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
filter |
Bloom | ||
enc |
String |
<nullable> |
- Source:
(private) setLoader()
Add a loader peer. Necessary for a sync to even begin.
- Source:
startSync()
Start the blockchain sync.
- Source:
(private) stopSync()
Stop the sync.
- Source:
(private) switchSync(peer, hash) → {Promise}
Switch to getblocks.
Parameters:
Name | Type | Description |
---|---|---|
peer |
Peer | |
hash |
Hash |
- Source:
Returns:
- Type
- Promise
(private) sync()
Send a sync to each peer.
- Source:
unban(addr)
Unban peer.
Parameters:
Name | Type | Description |
---|---|---|
addr |
NetAddress |
- Source:
(private) unlisten() → {Promise}
Stop listening on server socket.
- Source:
Returns:
- Type
- Promise
unwatch()
Reset the spv filter (filterload, SPV-only).
- Source:
watch(data, encnullable)
Watch a an address hash (filterload, SPV-only).
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
data |
Buffer | Hash | ||
enc |
String |
<nullable> |
- Source:
watchAddress(address)
Add an address to the bloom filter (SPV-only).
Parameters:
Name | Type | Description |
---|---|---|
address |
Address | Base58Address |
- Source:
watchOutpoint(outpoint)
Add an outpoint to the bloom filter (SPV-only).
Parameters:
Name | Type | Description |
---|---|---|
outpoint |
Outpoint |
- Source: