読者です 読者をやめる 読者になる 読者になる

Develop with pleasure!

福岡でCloudとかBlockchainとか。

リモートピアのメモリプール内のトランザクション情報を取得できるようにしたBIP-035

2012年の8月に提案されたmempoolメッセージのBIP↓

bips/bip-0035.mediawiki at master · bitcoin/bips · GitHub

mempoolメッセージを受け取ったノードはメモリプール内の全トランザクションハッシュを返すようになり、getdataメッセージで取得可能なトランザクションもメモリプール内の全トランザクションに対象が広がる。

動機

以下のようなユースケースではネットワークノードのトランザクションのメモリプールを公開するほうが良い。

  • SPVクライアントが送信もしくは受信された0 confirmationのトランザクションを入手したい
  • マイナーが再起動後に手数料の良い既存のネットワークトランザクションをダウンロードしたい
  • リモートネットワークの診断

仕様

  1. pchCommand == “mempool"のmempoolメッセージは空のメッセージとして定義される。
  2. mempoolメッセージを受信したノードは、ノードのトランザクションメモリプール内の全てのトランザクションのMSG_TXハッシュを含むinvメッセージで応答する。
  3. invのレスポンスに対する典型的なノードの振る舞いはgetdataだが、Satoshiクライアントは直近で中継されたトランザクションハッシュ以外のトランザクションハッシュに対する要求は無視する。mempoolメッセージをサポートするためにはgetdataメッセージで取得可能なトランザクションをメモリプール内の全トランザクションにまで拡張する必要がある。
  4. この機能が有効かどうかは以下のversionメッセージの属性で判断する。
  5. プロトコルバージョンが60002以上
  6. nServicesにNODE_NETWORKビットがセットされている。

既存の実装ではvector sizeが50000を超えるinvメッセージはドロップされることに注意すること。

後方互換

古いクライアントは、この変更後も100%の互換性を持ち、相互運用が可能。

実装

github.com