As this has gotten some unexpected push, which I don’t really understand, here is the current state of the union.
- ZCEs are in essence allowing a 3rd party triple spending a transaction that was double spend by the user.
- ZCEs thus require the first-seen rule to be (partially) broken in order to ensure a “correct” double spend can take place to punish an “incorrect” attempt of double spend. Today it would block both indiscriminently.
- Double spends today are insanely hard to do. You need specialized software, you need very good connectivity and an ideal setup with a merchant and your merchant should not listen to double spend proofs.
Even then you’re not going to get a very good result. Most double spend attempts will fail for various reasons.
I don’t really understand the reason why people want to have ZCEs, there is no actual problem we have today that would be fixed by them. It sounds geeky and fun, devs love to dev, but it would be better to not actually require breaking even a little the actual rule that protects the network today.
Remember, a ZCE is an actual double spend. It tries to front-run the transaction being paid to the merchant with one that sends the money elsewhere. Likely a miner.
Which leads to the not very technical observations:
- A merchant honestly doesn’t want the escrowed money. Where would they put that? Especially since the original party has a clear claim to want it back.
A merchant doesn’t care about all of this. They just want to get paid the money they asked for. And BCH delivers that much better than visa or btc. - There seems to be a theory that miners in future would turn evil and start doing replace-by-fee.
Apart from the fact that this hasn’t happened in 15 years, neither have the assisted-double-spend services.
Apart from that, the miners don’t actually have the ability to do that.
This was a consious decision in the design of the double spend proof, for instance, we don’t propegate the second transaction. A double spend is ONLY seen by the peers that the user send it to and they reject it and do not forward it.
Miners never see the higher-fee transaction, as such they can’t be tempted to implement replace-by-fee. - A customer may be asked to spend $50 plus lock up $50 for at most a couple of hours. But the customer may very honestly not have that money in their wallet. A huge percentage of the population lives paycheck to paycheck!
This requirement of locking up money in order to allow people to use zero conf is completely at odds with the markets wishes. - Double Spend Proofs exist. Their purpose is simple and effective.
Protect the 99.99% of the normal every day transactions. It can do that with some engineering in middleware or in all wallets. Make the ones that do funky things (using custom wallets designed to do funky things, really) stand out as a sore thumb.
And make the transaction finality show to the end-user after some 3 to 5 seconds.
That is possible today with the tech that is running on the network today. Why ZCEs?
Edit, adding more points. Can’t call it a state of the union and then trying to be terse
- The concept of confiscating the person’s money has always been possible using double spend proofs. It was silent, but the graph here explains it: The Double Spend flowchart
- The idea that seems to go around about double spend proos not being complete is misunderstanding their purpose.
In essence people are saying that since p2sh isn’t covering them, they need fixing. I disagree.
The basic concept of dsproofs are to make normal daily payments smoother. In normal daily payments people use p2pkh. People have wallets that in almost all cases will spend confirmed coins.
It would make sense to go back a couple of transactions in the chain, but honestly the moment you get to a situation that seems artificial you don’t have to bother. You can just tell the customer to wait for a confirmation. Because those situations don’t actually happen in normal shopping. Normal wallets can avoid them very easily.
So you have two states. Either a payment is not protected and this means the customer did weird stuff. Make them wait and bear the consequences of said weird stuff.
The second state is it is eligable for double spend protection and you know that after a couple of seconds you can give the product to the customer because the transaction is settled. - Exchanges. Yeah, it needs attention since so many people seem to care an exceptional amount about sending coins there. Mind you, those people are selling their BitcoinCash, why would we need enabling them? Anywho…
Catering to exchanges is equivalent to you trying to change yourself in order for that movie star to notice you. Sorry, that’s just not going to happen. The reason they are not noticing you has practically nothing to do with the technicals of BitcoinCash. Has nothing to do with anything we can actually change.
If you want exchanges to be more friendly to Bitcoin Cash: get a wider userbase. Make products that actual normal people want to use.