mirror of
https://github.com/bitcoinbook/bitcoinbook
synced 2024-11-16 04:59:35 +00:00
65 lines
1.8 KiB
Plaintext
65 lines
1.8 KiB
Plaintext
-------------------------------------------
|
|
BIP: 35
|
|
Title: mempool message
|
|
Author: Jeff Garzik <jgarzik@exmulti.com>
|
|
Status: Accepted
|
|
Type: Standards Track
|
|
Created: 2012-08-16
|
|
-------------------------------------------
|
|
|
|
[[abstract]]
|
|
Abstract
|
|
~~~~~~~~
|
|
|
|
Make a network node's transaction memory pool accessible via a new
|
|
"mempool" message. Extend the existing "getdata" message behavior to
|
|
permit accessing the transaction memory pool.
|
|
|
|
[[motivation]]
|
|
Motivation
|
|
~~~~~~~~~~
|
|
|
|
Several use cases make it desireable to expose a network node's
|
|
transaction memory pool:
|
|
|
|
1. SPV clients, wishing to obtain zero-confirmation transactions sent
|
|
or received.
|
|
2. Miners, to avoid missing lucrative fees, downloading existing
|
|
network transactions after a restart.
|
|
3. Remote network diagnostics.
|
|
|
|
[[specification]]
|
|
Specification
|
|
~~~~~~~~~~~~~
|
|
|
|
1. The mempool message is defined as an empty message where pchCommand
|
|
== "mempool"
|
|
2. Upon receipt of a "mempool" message, the node will respond with an
|
|
"inv" message containing MSG_TX hashes of all the transactions in the
|
|
node's transaction memory pool, if any.
|
|
3. The typical node behavior in response to an "inv" is "getdata".
|
|
However, the reference Satoshi implementation ignores requests for
|
|
transaction hashes outside that which is recently relayed. To support
|
|
"mempool", an implementation must extend its "getdata" message support
|
|
to querying the memory pool.
|
|
4. Feature discovery is enabled by checking two "version" message
|
|
attributes:
|
|
1. Protocol version >= 60002
|
|
2. NODE_NETWORK bit set in nServices
|
|
|
|
Note that existing implementations drop "inv" messages with a vector
|
|
size > 50000.
|
|
|
|
[[backward-compatibility]]
|
|
Backward compatibility
|
|
~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Older clients remain 100% compatible and interoperable after this
|
|
change.
|
|
|
|
[[implementation]]
|
|
Implementation
|
|
~~~~~~~~~~~~~~
|
|
|
|
https://github.com/bitcoin/bitcoin/pull/1641
|