2012年の8月に提案されたmempool
メッセージのBIP↓
bips/bip-0035.mediawiki at master · bitcoin/bips · GitHub
mempool
メッセージを受け取ったノードはメモリプール内の全トランザクションハッシュを返すようになり、getdata
メッセージで取得可能なトランザクションもメモリプール内の全トランザクションに対象が広がる。
動機
以下のようなユースケースではネットワークノードのトランザクションのメモリプールを公開するほうが良い。
- SPVクライアントが送信もしくは受信された0 confirmationのトランザクションを入手したい
- マイナーが再起動後に手数料の良い既存のネットワークトランザクションをダウンロードしたい
- リモートネットワークの診断
仕様
- pchCommand == “mempool"の
mempool
メッセージは空のメッセージとして定義される。 mempool
メッセージを受信したノードは、ノードのトランザクションメモリプール内の全てのトランザクションのMSG_TXハッシュを含むinv
メッセージで応答する。inv
のレスポンスに対する典型的なノードの振る舞いはgetdata
だが、Satoshiクライアントは直近で中継されたトランザクションハッシュ以外のトランザクションハッシュに対する要求は無視する。mempool
メッセージをサポートするためにはgetdata
メッセージで取得可能なトランザクションをメモリプール内の全トランザクションにまで拡張する必要がある。- この機能が有効かどうかは以下の
version
メッセージの属性で判断する。 - プロトコルバージョンが60002以上
-
nServices
にNODE_NETWORKビットがセットされている。
既存の実装ではvector sizeが50000を超えるinv
メッセージはドロップされることに注意すること。
後方互換性
古いクライアントは、この変更後も100%の互換性を持ち、相互運用が可能。