@Tom Zander
So at least we have clarified that in case a merchant is using a full node (directly or not) to accept a 0-conf payment, double spend relaying won't make the status quo worse, on the contrary. Am I right a thinking that?
A full node already gets notified about double-spends, assuming they check (Flowee does). Its not perfect (hence the proof) but its pretty good and doesn't really require much of an improvement.
But back to your question.
There are lots of reasons why a transaction is not accepted in the mempool of a full node. Many to do with local configuration. For instance a node uses a too high min-relay-fee (he copied the config from some core howto for instance). BU rejects transactions at a configurable maximum size is another.
But zero-fee transactions are also a great example which are rate limited by default and as such there is a simple way for an attacker to make the chance of a full node not seeing his transaction higher.
If a remote full node doesn't have one of the two transactions of a double spend, then relaying the other to them is a net negative. Because you are not giving a double spend notification, you are sending a transaction and assuming the other side will conclude it is a double spend. That strategy only works if everyone has exactly the same mempool and exactly the same rules for accepting transactions. And this is simply not true.
Another example where this is not true is in the case of a full mempool (think 1st aug or 1st sept) and low-fee transactions are pushed out of the mempool.
In all these cases the exepected outcome is that a full node concludes it is a double spend, but the actual outcome is that people using that node just got confirmation of a transaction. Which is exactly the opposite of what you wanted.
Now, the really big issue with relaying known double spends is not just that you might hit a node that doesn't have the other transaction. The really big issue is that in the current system we can say that after 5 to 10 seconds nobody will accept a second transaction anymore. But BU relaying one anyway removes that protection! It essentially means that a thief can wait as long as it takes till the next block comes and double-spend in that time.
So where before a thief had to do exact timing and make sure he hit the right nodes, all of that is gone if you start relaying the double spend transaction.
This is because this relaying destroys the first-seen adage. And the first seen adage is what gave us the timeout because even if a section of the nodes (doesn't have to be 100%) rejects a transaction, it won't propagate under the 'first seen' adage.
BU and thezerg noticed that it would be wonderful if in a point-of-sale software the wallet sends the transaction to the merchant first so the merchant broadcasts it. This is useful to make the timing requirements practically impossible to cheat with. As the thief doesn't know exactly when the transaction will be broadcast.
This advantage is taken away if you relay double spends, suddenly there is no time constraint anymore (other than the tx being mined)...
At this cost adding a way to accept BCH that does not bring any fixed cost and that have a fee around 1% or less would be a good thing to have for any merchants out there.
Fully agreed!