the problem is not RBF, the problem is that blocks are full which makes it impossible to predict the fee needed to be confirmed. That makes zeroconf broken.
RBF behavior is already possible, it defines previously undefined behavior.
mixing zeroconf with a non-permanent sequenceid is horrible design. Trying to use RBF to work around the fact that blocks are full is not going to work.
Full blocks break zeroconf. So if zeroconf is broken, then adding anything, it is still broken. Might as well say multisig breaks zeroconf since you cant be sure the tx will be confirmed when the blocks are full. p2sh breaks zeroconf since you cant be sure the tx will be confired when the blocks are full. everything breaks zeroconf when the blocks are full, since it is already broken.
how exactly can one be sure a tx will confirmed before it is confirmed, if there are more tx in the mempool than can be confirmed?
RBF has been politicized (illogical arguments used to justify either position), RBF does change sequenceid field to be the RBF field and that is bad design and an overreach, so I dont like it for that reason. but defining how a mempool tx is treated is not any problem. If the rerouting of funds is such an issue, change it so only the change address can have its output reduced and all others outputs must be the same or more.
zeroconf is the lowest security method for tx. RBF are non-permanent sequenceid's. Mixing the two is like combining drinking and driving. The fact that we are thinking about doing it, is because the blocks are full and zeroconf is already broken
[doublepost=1457991206][/doublepost]
Some truly excellent background reading about fee updating with focus on RBF.
https://gist.github.com/roybadami/7bd2ea56a06984fedace
This is a rats-nest of a subject and just because RBF is "opt-in" does not make it fine and dandy.
good summary.
FSS-RBF: First seen safe RBF
and define the first output as the change address. Then there is no danger of double spend and it wont be very hard to figure out if it is valid or not.
The big technical problem is how to deal with "first seen". First seen, by whom? which node? So we can end up with half the network having seen txA first and the other half txB first.
However, this is ok, as the usual zeroconf technique of checking the other node's mempools could detect that case.