> The additional benefit of the input script/outpoint filter is to watch for > unexpected spends (coins getting stolen or spent from another wallet) or > transactions without a unique change or output address. I think this is a > reasonable implementation, and it would be nice to be able to download that > filter without any input elements. As someone who's implemented a complete integration of the filtering technique into an existing wallet, and a higher application I disagree. There's not much gain to be had in splitting up the filters: it'll result in additional round trips (to fetch these distinct filter) during normal operation, complicate routine seed rescanning logic, and also is detrimental to privacy if one is fetching blocks from the same peer as they've downloaded the filters from. However, I'm now convinced that the savings had by including the prev output script (addr re-use and outputs spent in the same block as they're created) outweigh the additional booking keeping required in an implementation (when extracting the precise tx that matched) compared to using regular outpoint as we do currently. Combined with the recently proposed re-parametrization of the gcs parameters[1], the filter size should shrink by quite a bit! I'm very happy with the review the BIPs has been receiving as of late. It would've been nice to have this 1+ year ago when the draft was initially proposed, but better late that never! Based on this thread, [1], and discussions on various IRC channels, I plan to make the following modifications to the BIP: 1. use P=2^19 and M=784931 as gcs parameters, and also bind these to the filter instance, so future filter types may use distinct parameters 2. use the prev output script rather than the prev input script in the regular filter 3. remove the txid from the regular filter(as with some extra book-keeping the output script is enough) 4. do away with the extended filter all together, as our original use case for it has been nerfed as the filter size grew too large when doing recursive parsing. instead we watch for the outpoint being spent and extract the pre-image from it if it matches now The resulting changes should slash the size of the filters, yet still ensure that they're useful enough for our target use case. [1]: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-May/016029.html -- Laolu