BitcoinCash follows the lessons from economics and this means that the total supply of coins ever created is limited. You probably heard the term, there will never be more then 21 million Bitcoin.
There are obviously a lot more people that are intended to use and own some Bitcoin and therefore there are 8 zero's behind the separator, each is called "a Satoshi". Leading to not 21 million but
two quadrillion one hundred trillion Satoshi. (21 e+14).
While this is a lot, with a population of 8 Billion people that leaves only 2625,00 for each person on average. The actual for a lot of people will be a lot less as the wealth is not evenly spread and this raises the question if this can work as a world currency.
The idea of sub-Satoshis has come up before, it is the simple concept that instead of a bread costing $4.00 it overnight changes to cost $4.00000. Which is actually exactly the same amount, but with extra precision.
The idea, as tested in economics and concepts like stock-splits, is that we simply multiply the amount of money stored in any users wallet. Or, maybe easier to understand. We add a couple of digits behind the separator. Instead of owning $100.00, you now own $100.0000. Which is, exactly the same amount. But with more zeros behind the separator. With more precision for sub-Satoshis.
The benefit is that as the value rises due to BitcoinCash absorbing more and more of the worlds economy, it becomes possible to start giving out sub-Satoshi prices for payments. We can also split the money over more people than before. Essentially it allows us to keep growing whereas otherwise the system may hit a glass ceiling where it simply can't on-board more people.
The 'amount' field in a transaction is capable of expansion. It it an 8-byte number and after 33 halving we'd get 20 999 999.976 900 00 BCH. This, in Satoshi, is the same but without that dot. In absolute storage this is 6 bytes. Hex: 0x0000BEFE6F6399A8
What that means is that if 100% of all block rewards since the beginning of time end up in 1 transaction-output, the number in that transaction-output will only need 6 bytes to record the amount. The actual space reserved is actually 8 bytes. So we have space for more digits. Lets find out how much space we have.
This 1000x is us limiting ourselves based on the assumption that 100% of all BCH ever minted should still be possible to store in a single transaction-output. It should be noted that since this is never actually going to happen in practice, a further 2 zero's should be easy and mostly safe to add. But the complexity in the full node might go up as a result.
In the May 2023 we introduced the protocol rule that transaction versions not known to the network are not allowed. This gives us a good opportunity to allow users to use the transaction version as an indication that something is to be used slightly different again. Similar to how this is happening with version 2 transactions and BIP68.
For transactions that are marked as version 3 or later, the 'amount' field in each output is to be interpreted as being a number that includes sub-Satoshis.
Payments from a version 2 (or earlier) transaction-output to a version 3 (or later) transaction-output will thus convert the amount by multiplying it with 1000. And vice versa.
A version 3 transaction can thus split an amount in sub-Satoshis among its outputs, should it wish to do so. The monetary value of a single Satoshi is so low that doing this in the 2025 upgrade is advised in order to make transactions maybe losing sub-Satoshis if they go back to version 2 transactions accidentally to be a non-event that simply increases the miner fee a tiny little bit. The ability to be backwards compatible at low cost with old transaction generators this way is likely quite valuable.
At the end of 2023 the proposal was massively simplified after realization that some problems that were solved with the extra complexity was a non-issue in practice. Check git if you're curious.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.