I am slowly starting to understand this a bit more, so there are two main ways to store data in the bitcoin blockchain (right?).
1. OP_RETURN - provably unspendable, the data is not part of the utxo set and can be pruned (even if you have a full node you could prune this in theory, since it doesn't affect consensus).
2. Encoding it in outputs - creating outputs with scriptPubKey that look spendable syntactically but are actually unspendable in practice. From Bitcoin’s point of view, these outputs look like valid spendable coins, so they get added to the UTXO set. But since the “keys” to spend them don't exist, they are forever unspendable. That means they sit in the UTXO database forever, wasting space and resources for every full node.
So lets say some illegal data enters the chain and the police visits you because you run a full node, or you are a miner...etc. In case of OP_RETURN you can dump that data since it doesn't affect consensus. In case the data is in the outputs you can't just dump it, because it affects consensus.
So to my understanding, lets assume there will always be people that want to spam the chain and they will find a way to do so and spamming in the outputs can't be prevented anyway. It seems wiser to let them use OP_RETURN (doesn't hurt as much) instead of spamming the utxo set (it hurts).
Am I missing something?
Btw are these patches enabled in knots by default or do you need to set it in the config?