BIP: 133
Layer: Peer Services
Title: feefilter message
Authors: Alex Morcos <morcos@chaincode.com>
Status: Deployed
Type: Specification
Assigned: 2016-02-13
License: PD
概要
新しいメッセージ「feefilter」を追加する。このメッセージは、指定された手数料率を下回る手数料のトランザクションについて、ノードへinvを送らないようピアに指示する役割を持つ。
動機
限定的なメンプールという概念は、マイニングされない低手数料の攻撃・スパムトランザクションへの対策として、Bitcoin Core 0.12で導入された。また、手数料不足で最近拒否されたトランザクションへの繰り返しの要求を防ぐための拒否フィルターも導入された。これらの手法は、ノード上のリソース使用量が制御不能になることを防ぐのに役立っている。
しかし、これらの手法の効果には限界がある。拒否フィルターはブロックごとにリセットされるため、より長い期間にわたってinvされたトランザクションは再要求されてしまい、最初の要求そのものを防ぐ手段は存在しない。さらに、メンプールに受理されたすべてのトランザクションについて、各ピアへ、または各ピアから、少なくとも1回はinvデータが送信されるが、あるピアへ送ったinvが、そのトランザクションの手数料が少なすぎることを理由にgetdata要求につながらない、ということを知る手段は存在しない。
feefilterメッセージを受信すると、ノードはinvを送信する前に、あるトランザクションの手数料率が特定のピアが現在要求している最低値を下回っているかどうかを知ることができ、したがってそのピアへそのトランザクションのinvを中継することを省略できる。
仕様
- feefilterメッセージは、pchCommand == “feefilter” でありint64_tを含むメッセージとして定義される
- 「feefilter」メッセージを受信すると、ノードはfeefilterメッセージ中で提供された手数料率(1キロバイトあたりのsatoshiとして解釈される)を下回るトランザクションのinvをフィルタリングすることが許可される。ただし必須ではない。
- 手数料フィルターはトランザクション用のブルームフィルターと加算的に作用する。したがってSPVクライアントがブルームフィルターを読み込みfeefilterメッセージを送信した場合、トランザクションは両方のフィルターを通過した場合にのみ中継される。
- mempoolメッセージから生成されたinvも、手数料フィルターが存在する場合はその対象となる。
- プロトコルバージョンが70013以上であることを確認することで機能の発見が可能になる
考慮事項
この変更によって、ネットワーク全体にわたるトランザクションの伝搬効率が悪化することはないはずである。一般に、あるノードのメンプールに受理されなかったトランザクションは、そのノードによって中継されない。本メッセージで実装される機能は、そうしたトランザクションのみをフィルタリングすることを意図している。ノードのメンプール最低手数料が、あるピアが認識しているフィルター値よりも実際には低い、という少数のエッジケースが存在しうる。この場合、両者の間の手数料率を持つトランザクションは、新たに抑制されることになる。
「-whitelistforcerelay」オプションが設定されている場合、feefilterメッセージはホワイトリスト登録済みのピアには送信されない。この場合、トランザクションはメンプールに受理されていなくても中継される想定である。
ノードが自身のメンプール最低手数料という、ノードを特定しうる情報をブロードキャストするので、匿名性が損なわれるという、プライバシー上の懸念がある。この懸念を緩和するため、実装はブロードキャストするフィルター値をわずかなランダム性を持たせて量子化するほか、メッセージは各ピアへ個別にランダムに分布したタイミングでブロードキャストされる。
ノードがprioritisetransactionを用いて、実際の手数料率がノードのメンプール最低手数料を下回りうるトランザクションを受理している場合、あらゆるtxidを確実に受け取れるよう、手数料フィルターを無効にすることを検討するとよいかもしれない。
後方互換性
旧来のクライアントは、この変更後も完全な互換性と相互運用性を保つ。また、本BIPを実装するクライアントは、feefilterメッセージを一切送信しないことを選択できる。
実装
https://github.com/bitcoin/bitcoin/pull/7542
著作権
本文書はパブリックドメインに置かれる。
