2027 protocol upgrade ideas

To continue a bit of a tradition (2021-2023, 2026), this thread is to discuss our collective 2027 upgrade wishlist.

Jeremy, Ryan, Fiendish, and I briefly discussed our opinions on the current CHIP landscape on the 2026 end of year BCH Podcast episode. At the time of writing, it seems that CHIP-2025-03 Faster Blocks for Bitcoin Cash is a potential candidate for the 2027 upgrade cycle, but the CHIP is not complete nor does it have clearly unanimous consensus.

I don’t believe any other CHIP is “on-track” at this time, but that could change. There’s also the potential for 2027 to be a “no-op” year, which may be of some benefit purely to demonstrate discipline in our upgrade process.

Some other notable CHIPs to review and discuss:

All of these CHIPs are currently incomplete and lacking consensus, but may be of interest for further research and development.

An interesting observation: searching this forum for “CHIP” shows how far we’ve come… I would almost believe that if BCH were to ossify today, we’d still be in a great position. The search also shows that we peaked in development activity between 2023 and 2025 - there are only a few new or outstanding CHIPs that have been formally proposed and NOT merged or withdrawn at this point.

On a personal note, I’d like to poke at the idea of “OP_PFX” for purchasing more VM compute budget without inflating script sizes… and I have an inkling that it may be acceptable to raise the OP_RETURN limit to fill up to the maximum transaction size of 100,000 bytes (where OP_RETURN would NOT purchase additional VM compute). Just want to bring these topics up for discussion :slight_smile:

Total aside: when should we fix the 2106 problem? :grin:

3 Likes

Today I’ve been looking into TXv5 in more depth in order to better understand its current status.

The TXv5 CHIP currently aims for mainnet deployment in May 2027. But the CHIP author asserts that if the cost of introducing a new transaction format is too high in 2027, there is still value to be gained by considering some of its components:

CHIP-2025-01 TXv5: Transaction Version 5 - #6 by bitjson

…two components could reasonably be extracted from TXv5 (if BCH doesn’t have sufficient market dominance by 2026 to lock-in a transaction format upgrade), making this into 3 CHIPs:

  1. Read-only inputs – the implementation in the CHIP is already backwards compatible, the TXv5 part just adds a more efficient encoding
  2. Unified bytecode length limits
  3. The v5 encoding itself (everything else in this CHIP)

If an improved encoding format still looks too disruptive in early 2026, I’ll just propose the smaller, backwards-compatible items (1 and 2) for 2027, and re-propose the v5 encoding for 2028.

For anyone interested in this, it’s elaborated here: CHIP 2021-05 Targeted Virtual Machine Limits - #137 by bitcoincashautist

Since you highlighted this aspect, it prompted a few thoughts. It already doesn’t purchase VM compute budget (but in the past VM limits CHIP iteration, a shared TX budget, it would’ve). But why shouldn’t it be able to “purchase” budget? The objective of VM limits is to control CPU density per byte to avoid hot spots, and all outputs are “dumb” bytes and reduce CPU density of the TX because they don’t contribute to budget so they dilute TX’s CPU load. But maybe we could include them: sum all output bytes and divide by number of inputs then add that to each input’s budget. Or, any PREFIX_EXTRA_BUDGET invoked would first “claim” bytes from these currently unclaimed places in the TX, before claiming imaginary bytes (which would count against TX size and block size limits, just not be encoded anywhere and use bandwidth for nothing).

But I’m not sure if all this will really be needed, because a bunch of 0s from a data push are highly compressible and could be transmitted over network in compressed form.

This may be very positive for the growing of the community. Having new stuff every year makes people already there excited, but it doesn’t do much for attracting new blood. Stability and a good base will have a lot of positive influence to allow builders to build and not lose the footing.

Because keeping the chain small is still a serious objective. More transactions fit in the same blocksize as a result.

Today the miners have no way to set the cost to mine a transaction. The producers of blocks can’t set the price of stuff they put in it. There are no tools to do that. There could be, without consensus changes, but miners can’t say that the 100KB mostly op-return transaction should pay more per byte than a transaction that merges 1000s of UTXOs into one of the same size. While the value for the miner and the network is clearly different.

Should we get full blocks, the pressure to get such tools is going to grow. Miners want to optimize cost and value-creation as much as users do. And most users will definitely prefer 400 boring transactions getting mined over 1 op-return one in the same limited blockspace.

So, thinking ahead, op_pfx would allow someone to purchase extra compute without it pushing out a lot of transactions from the limited block space. Which makes everyone happy, the miner gets paid for the op-pfx usage AND the transactions actually doing payments get mined (which the miner gets payment for too).

Or, in simpler words; Create incentives that are misaligned with the goal of Bitcoin being Cash, you disrupt the system. It’s like Gavin Newsom started paying non profits for homeless people, which objectively grew the number of homeless people.

Align your incentives. That could be the simplest explanation of op_pfx :slight_smile:

Note that the imaginary budget bytes added by op_pfx would count against limits as if they were actually part of the TX. Say you have a 1kB TX which “buys” 9kB extra budget by using the pfx. You could only pack 3,200 of such TXs into a block and NOT 32,000 of them, so your block would end up being 3.2MB and at the limit - because those “imaginary” bytes would count - the block would be using as much CPU as if it was a 32MB block filled with reference P2PKH TXs. Of course, the miner could choose to evict one of those 1kB TXs from his block template and replace them with 10kB worth of regular TXs. You can think of it as a compressed TX, but it’s evaluated decompressed against the block size limit.

The pfx would clearly mark the imaginary bytes as such, so I guess this ties in well with your idea of helping miners price these differently from regular TXs, intent behind the bytes would be clear. With op_return or input script - you can’t easily tell whether some bytes have some other purpose than “buying” the budget so makes it harder to have special pricing policy for extra budget bytes.

1 Like

Good observation! That is the kind of thing that needs to be researched. Finger in the air thinking, I’d expect that since the VAST majority of transactions never get close to the limits, your miner will indeed be able to allocate more transactions in the same blockspace when the couple that actually want more budget (RARE!) use op-pfx.
But research is good, to run the numbers and see how that works out would be great.

How cost is defined is up to the actual producers. The miners. It’s basic economics and free market. Better to interfere as little as possible in consensus rules. All we have to do is not fuck it up by creating misalignments.

Since OP_RETURN is unspendable, we never need to spend compute on evaluating unlock conditions later when used as an input.

OP_PFX to explicitly request extra budget without needing the real bytes seems cleaner?

1 Like

Still being fleshed out, but I wouldn’t mind putting this on the table for consideration in 2027:

Technically, the implementation shouldn’t be high-effort (it’s just exposing a subset of OP_CHECKSIG under a new op-code). But it’s contentious whether we want to consume an OP_CODE when we might have a more generalized malleability fix under Jason’s TxV5 CHIP.