Given the recent drama unfolding in crypto-Twitter, I find it important to move beyond the limitations of the 280 character format to, hopefully, give people a foundation for critiquing preconsensus mechanism proposals.

I do not pretend that this is a comprehensive review of preconsensus mechanisms in general - in fact, I will only go into some depth regarding one of the more popular proposals, Weak Blocks - instead, I aim to provide a new perspective to people those who do not have a sufficient understanding of Bitcoin to fully analyze and critique such proposals.

Preconsensus

On a very basic level, a "preconsensus mechanism" is a tool that is used to identify transactions that miners intend to include in the next block that they mine. The intention of such a mechanism is to allow miners to verify blocks over more time, rather than racing to verify and propagate blocks as soon as a block is mined.

By doing this, the node hardware (as opposed to hashing hardware) of a mining setup will be less expensive for a given block size because the calculations are spread out over more time.

Weak Blocks

On the surface, Weak Blocks makes a lot of sense.

The idea is that miners are constantly hashing, and they always come up with a hash even if it does not satisfy the difficulty conditions of the mining process. But so many of those hashes go to waste, considering they're not currently used for anything of value.

What if you were to accept hashes with less leading zeroes - essentially, hashes at a lower difficulty - than the main chain to create a sort of "sub chain," which consists of "preconsensus blocks" that are being built on top of each other until a block is found at the main chain's difficulty?

Those sub chain blocks, we can call them "weak blocks," would be proof that miners are building blocks including specific transactions. This enables miners to start verifying blocks before the "real" block is completed. It is "pre-consensus" in that way, and helps to organize miner's mempools, making sure everyone has the same transactions, and enabling miners to verify portions of the upcoming block before it is mined and propagated.

Isn't that cool? Miners waste less of their hashes by putting more of them to use, transaction and block verification is easier, and as a result, it's less expensive to run a successful, profitable mining node. Sweet!

This would even enable 0-conf to reliably use these weak blocks to reduce 0-conf risk! Right?

I mean, if the miners can trust them, then why can't the merchants?

The Same Proposal, Rewritten

Now that we've established a basic outline on the Weak Block proposal, let's test the concept by seeing what happens if we make a single, simple change.

Strong Blocks

What if whenever a miner finds an especially difficult block such that the hash contains more leading zeroes than are necessary to satisfy the main chain's difficulty conditions, they create a "strong block" which serves to solidify all blocks up to that point. This approach would be very secure because it's that much harder to overturn these strong blocks.

And it's really cool, because the extra difficulty of producing such a hash isn't wasted. It's more efficient, and these blocks could even serve as checkpoints for the network so everyone knows they can trust the chain up to and including the latest strong block.

But... what happens to the main chain blocks under this proposal?

Consider... A miner finds a strong block, but excludes blocks that have already been created from the main chain, essentially reversing those blocks. Now, any blocks not included in the strong block's chain are orphaned unless a competing miner can create two strong blocks that include them, thus out-competing the initial, apparently dishonest strong block chain.

But that's a hard problem, isn't it? And it enables people to double-spend by taking advantage of the reversal of weaker blocks. At the very least, transactions in the main chain will be uncertain until the strong block consensus is resolved. And if a transaction chain builds on top of a double-spent transaction from a previous main-chain block, all subsequent transactions are no longer valid, until the strong blocks are resolved - if they are resolved. That's a lot of risk and uncertainty. Bummer.

Under this proposal, you can't trust the main chain anymore. Only the super blocks are actually trustworthy.

Reevaluating Weak Blocks

Consider: I did not specify target difficulties, nor did I specify how long of an interval is targeted between blocks.

If I told you that my "Strong Blocks" proposal was actually the "Weak Blocks" proposal wherein the weak blocks are, in fact, the main chain, could you argue from my proposal that I am lying?

Fundamentally, there is no difference between the "Strong Blocks" and "Weak Blocks" proposals. The only difference is perspective.

Using this restatement of the idea, I have demonstrated how weak blocks are not trustworthy. In fact, they introduce moral hazard by making people feel safer, feeling as though they have coordinated the contents of a block before it's actually produced.

In fact, weak blocks coordinate miners in a way that makes them, and people using weak blocks for things like 0-conf, vulnerable. 0-conf is actually easier to circumvent with a double-spend transaction, and resolving a weak blocks consensus problem introduces a lot of uncertainty.

Meanwhile, miners are lulled into a false sense of security by trusting this preconsensus mechanism, leading them to reduce their investments in infrastructure for supporting connections with other miners, performing sigops, and propagating transactions and blocks. This makes them more vulnerable to such attacks, as anyone seeking to exploit the moral hazard of weak blocks doesn't need to invest as much money into their node (hardware or software) in order to successfully attack the network in this way.

Why? Because the miners feel they only ever need to keep up with the weak blocks, and not the true consensus level blocks. That is the moral hazard for miners, and it filters down into a less robust, less reliable system as a whole.

Preconsensus is Extremely Dangerous

While this is only an analysis of the Weak Blocks proposal and not other preconsensus mechanisms, it is imperative that the broader implications are observed. The problems that plague weak blocks are not done away with just because another proposal is presented.

Any preconsensus proposal must be thoroughly rigorous in tackling problems such as these, and serious criticisms must be levied against every single proposal before it is even considered as a potential for inclusion in Bitcoin, whether as a protocol change or not.

I, for one, am so skeptical of comprehensive preconsensus mechanisms that I am willing to predict that proponents of the general idea will call all preconsensus proposals that have been shot down "no true preconsensus mechanism," much like the Soviet Union wasn't "true communism," and that failed apocalypse prediction was perpetrated by someone who wasn't a "true Christian."

Conclusion

Quite frankly, I am tired of seeing otherwise intelligent, hard working, good people acting negligently by proposing alterations to how Bitcoin works without exploring the implications and second order effects of what they propose.

Again, this article is not meant to be a comprehensive overview of preconsensus proposals, but the Weak Blocks proposal has been out in the wild for a relatively long time now without any real substantive critiques being levied against it.

It's time for people to start thinking critically about proposed changes to how the system works, and to more thoroughly explore the capabilities of the system as it currently works before jumping into calls to change the system (whether on the protocol level or the economic level.)