I cant agree or disagree with abstract examples that dont actually show the specific tx usage of sequenceid. I am thinking about this from an alternate core developers point of view. There is already a mechanism for miners to decide to make more money by using the tx with higher fees. I think it is called the "comparison" operation where you compare X and X+delta and decide you like X+delta more.
"high degree of connectedness of the p2p network"?
Why do you consider a high degree of connectedness? 8 to 16 nodes out of 6000?
I like to work with math, not subjective examples.
sorry but I do not see evidence either way to be able to conclude either:
###
One has to acknowledge though that there are real world risks if RBF is widely available.
The fact is it makes it easier for criminals to conduct double spends.
###
Please tell me use cases where RBF and zeroconf have to be used in conjunction. zeroconf is the least secure so why combine that with temporary sequenceid? It seems a very bad design. Also CURRENTLY the miners that are financially motivated could behave in the exact same way as with RBF. But since miners are all so altruistic I guess this is not an issue at all?
Please tell me specific cases when sequenceid other than 0xffffffff needs to be used so that zeroconf works. other sequenceids indicate it is not a permanent transaction, which means it will be changed and usually these are all exchanged offchain. By the time it is pushed to the network you change the sequenceid to 0xffffffff, avoiding RBF.
currently sequenceid has UNDEFINED behavior and as such it really cant be used other than offchain, and that has the risk the other side broadcasts it early. At that point I dont see how you can end up reversing what is already sent, but maybe following transactions wont be confirmed. that can happen NOW.
technically, RBF appears to provide a way to know what willl happen. If the BIP is adding a new constraint that doesnt allow changing the output destination, the chance of using it to reroute funds might be able to be closed. to do that some convention about the change output and which one is active would need to also be decided.
I have written a bitcoin core (without all the cases covered yet) from scratch, so I need to fully understand what the protocol and blockchain fields actually do. I thought this was the Bitcoin protocol section and not the Bitcoin politics section. I know if politics are being used against you like in this case, the instinct is to tit for tat, but to use a flawed technical argument does not help your case.
The most valid objection to RBF to me right now is the total domination of sequenceid, we might as well rename it RBFid.
I do not have time to get involved in debating non-technical presumptive declarations. I have had enough of that elsewhere. I am totally open minded as to seeing specific usecases where combining zeroconf with sequenceid's that are not 0xffffffff are needed. The only one I can think of would be that CSV would be forced to use RBF. One way that limits the RBF bitspace domination is to allocate the LSB to being its flag. this sacrifices the timestamps to 2 second resolution, but it would allow for both RBF and non RBF usage across the entire sequenceid bitspace.
So lets discuss technical details, instead of trying to bully people with declarative statements that are not having the tech details. OK?
James
P.S. On the politics issue, have you considered you are being misdirected to fight the wrong battle? Maybe you are setup to being discredited or distracted from the real issues. Clearly political shenanigans are going on, but using a weak tech argument only makes you look like an alarmist.
[doublepost=1456614176,1456613288][/doublepost]sorry to discredit another of your points, but on the chicken and egg comment, it appears you are not understanding fully how the zeroconf works. Since zeroconf is not any official documented this, you need to deduce how to implement it properly, so unless you are a core dev, it will not be expected to be common knowledge.
Here are the constraints with zero-conf.
1. Nodes that you send a tx to wont relay it back to you
2. Nodes that you are not connected to are hard to communicate directly with
3. We assume the attacker has 100% connectivity to the network
4. We want to maximize the chances that when we accept zeroconf it really did propagate
5. We assume there is an offchain communication between the two parties, ie QR code
Now the most effective attack against zeroconf would be if the attacker knew the exact peers your node has and created two sets of nodes, ones with direct contact to you and ones without. Simultaneously all the nodes you are in contact with are pushed the valid tx and all the others are pushed the double-spend. To reduce latency and get the timing as precise as possible you transfer all but the last byte for all connections. The protocol specifies how many bytes to expect, so all the nodes are now waiting for that last byte. Then you using 6000 threads to simultaneously release that last byte. This would maximize the chance for the attacker's desired pattern to be achieved, ie all your peers tell you the tx you want to see, while 99% of the network has a different one.
Notice RBF plays no part at all in this attack. and why on earth would non-permanent sequenceid be used?
Now with the above assumptions and attack scenario, I claim that the fewer of our peers that we get data from the worse it is for us. So while if the attacker does the above perfectly, it will most likely work, for low value tx it just isnt worth all the effort to set it up, we hope. The way to get the most data is to NOT relay the tx at all, but let the other side do it, that way all of our peers will INV us the new tx and we can see if all of them have the desired tx. When 100% of our peers have the tx, we conclude it is safe enough. If there is any disagreement, we simply wait for it to be confirmed.
Now that is how I plan to do my zeroconf and nowhere in there is a sequenceid that is not 0xffffffff any part of it, since it leads to UNDEFINED behavior at the mercy of a miner who might or might not want the extra fee.
This is my analysis of zeroconf, which combined with my analysis of RBF that leads me to conclude that only insecure implementations of zeroconf that for some unknown reason use RBF will be insecure.
Please enlighten me the errors of my conclusions
James
P.S. I know about 0xfffffffe being another permanent sequenceid to be used in conjunction with CLTV, in the above treat 0xffffffff as covering both cases