Amaury Séchet wrote On markets and pre-consensus and drama followed. I'm not sure if it is summer or because everything in Bitcoin become dramatic like in a soap opera or a telenovelas. I'm suspecting it is too many smart talking but no one really listening, sprinkled with a bit a fuzzy concepts. In my opinion, what Amaury did wrong was to say 0-confs are a problem as they are today and need to be made better to increase adoption..

The reactions to the article were pretty emotional and not well thought: Social Insanity -- Today's Crisis: Preconsensus Mechanisms and Pre-consensus implies consent without giving it are examples. The exchange on Twitter between Deadalnix and C.S.W. is not very productive too. Again, I assume, because both are not listening and trying to understand what the other is telling. But this is just coach psychoanalysing at distance, it is boring after a few minutes. What is about the question on hand? What is pre-consensus? What is it useful for and what is it not useful for?

Pre-consensus is not Consensus - not at all!!!

If we are talking about pre-consensus as what the proposed weak-blocks do, we are not interfering with the consensus layer of Bitcoin Cash. Weak-blocks is a way to pre-announce the content of a block a miner is currently mining. Nothing more, nothing less.

Why do they want pre-announce their blocks? Because they want their blocks to be accepted by other miners as fast as possible and this can happen only if they are able to verify them in the fastest way possible. On the other hand the miners receiving a block want be able to verify it as fast as possible to start mining the next block and not losing time and money on an old block.The fastest way possible is for them to already know the block content and just get the PoW when it is found.

A miner mining a block will probably find many solutions with 1/100th of the required difficulty as he work to find a solution with the required difficulty. He then can publish a weak block and the others, instead of rejecting it as invalid, can gain useful informations allowing them to speed up the verification of the next block. The simple fact a small but not irrelevant PoW is included in the block prevent an attacker from spamming the network with fake weak-blocks. Every hash used to fake a weak block is an hash wasted to find a block.

What would a miner do when he sees a weak block?

First of all, he would take every transaction included in the block he is not aware of and add it to his mempool first and then to the block he is mining at the time. Does someone find anything wrong in this? I don't.

Second, he has the choice to continue to mine his block or start mining the block he received (replacing the coinbase transaction - of course). He knows he knows what the other miner is mining but the other miner don't know what he is mining (because he has not published any weak block). The rational solution is to start mining the weak block received, because this allows both miners to verify the block mined faster than when they are mining different blocks. Does someone find anything wrong in this? I don't.

Is this fear for what?

BCH miners already strive to clear up the mempool of every paying transaction and put them in the next block available. This imply the content of the block every miner is working on is around 99.99% the same even without weak blocks. They just need to converge on the ordering of these transactions inside the block. They do it "talking to each other". Canonical Transactions proposal would do the same with a standard ordering inside the software. I didn't heard people crying about that. Did you?

What pre-consensus is not

Pre-consensus or weak block is not a way to change the consensus layer. If a miner ignore the weak blocks mined and find a block, he can publish it and every miner should accept it, if he is able to verify it before any other competing block. Miners remain free to accept or reject any block they like or dislike. Costs and profits are associated with this freedom. Any local rule a miner would enforce (like CSW's "reject a double-spending block") against a full block, he should enforce against a weak block too.

On the other side, because it is not messing with the consensus layer, there is no way to fork it out. Every threat of forking it off is void, because no consensus rule is broken. If someone don't like OTHERS to use weak blocks, they MUST hard fork themselves out of the current consensus and pay the price of their freedom.

Pre-consensus is not a way to fix 0-conf. transactions because 0-conf. transactions work fine as they are. Pre-consensus gives no guarantee a tx will be or not be in the next block; at best, gives the idea of the chance a transaction will be in the next block. Even a 99% chance don't guarantee anything. Ideally, looking at the weak block mined could give an approximate idea about the chances of a transaction to be included in the next block. But the utility of this is vastly exaggerated, in my mind. You have merchants that will have no problem waiting a full block to deliver their goods or services (because the waiting time is a tiny fraction of the time spent to actually deliver). Or you have merchants that will be satisfied by seeing the transaction published on the network and not conflicting transaction at the same time. The waiting time for a full block are one order or more larger than the time to deliver the good or service. Their business model is based on the simple fact 99% of the people are recurring clients and/or they are just honests and pay anyway. And, usually, they have already other methods to deal with bad apples today (E.G. first pay for what you want then do the queue to get it).

If businesses want to take advantage of weak blocks, let them do it. Their choices. Like it is their choice to trust 0-conf. They take a risk hoping it is worthwhile. Real life experience will tell if it is or not.