I just released satd 0.4.0 which has some major new features. If you aren't familiar with satd, it's a completely new, ground-up implementation of the Bitcoin node protocol in Rust with a lot of operational and ergonomic improvements. More info in the README.
One of the headline new features in 0.4.0 is the transaction filtering policy language. This is a maximally flexible, fixed cost language that allows node operators to express exactly which transaction types they want their node to participate in relay and block construction. Given all the controversy about BIP-110, this filtering policy allows node owners to completely control which transactions consume resources on their node, but without affecting consensus. I have no interest in changing what Bitcoin is, and Bitcoin is defined by consensus rules. However we can give node operators maximum sovereignty and ability to control their node behavior, as long as consensus rules are maintained.
Here's an example policy:
# Resource protection: cheap, oversized generic OP_RETURN
# eg, bulk data that doesn't pay its way. Small markers
# and well-paying data both pass freely.
quarantine cheap-bulk-opreturn when
any output (out.script_type == op_return and out.op_return_size > 83)
and tx.fee_rate < node.min_relay_fee * 3There are more examples in the operator manual. You can be as strict or permissive as you want and your node will respect your wishes and decline to relay transaction types you filter. You can't prevent consensus-valid transactions from appearing in blocks (that requires consensus changes), but you can control what your node spends resources on.
Bitcoin Core has nothing like this. There's little indication that they will ever have interest in implementing something like this. Why should your node be captive to the arbitrary decisions hard-coded in C++?
Download and install satd here: https://github.com/epochbtc/satd/releases/tag/v0.4.0