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%の互換性を持ち、相互運用が可能。