In the cryptocurrency space, the term halving refers to a process that reduces the issuance rate of new coins. More precisely, halving is the periodical reduction of the block subsidy provided to miners. The halving ensures that a crypto asset will follow a steady issuance rate until its maximum supply is eventually reached.
When it comes to Bitcoin, news coins are being generated continuously as part of the block reward (which is made up of the block subsidy plus transaction fees). So every time a miner successfully “discovers” and validates a new block, they earn newly created coins as compensation for their work.
So the mining process is what introduces new Bitcoins into the system, and this is done at a predictable and controlled pace. New Bitcoin blocks are mined, on average, every 10 minutes, and the block subsidy follows a controlled decaying rate. Accordingly, the halving is what ensures that the block subsidy will decrease by 50% every 210,000 blocks (roughly every four years).
Starting at the genesis block, Bitcoin’s block subsidy was initially set as 50 BTC. Then, it was reduced to 25 BTC in 2012, and to 12.5 BTC in 2016. The following halving is expected to happen around May 2020, reducing the block subsidy to 6.25 BTC. Once 32 halvings have occurred, the process stops and no more Bitcoins will be created. At this point the maximum supply of 21 million BTC will be reached.
The halving is an important part of the Bitcoin protocol and, since the code is open source, anyone is able to see it. For instance, Bitcoin Core implementation is available on GitHub, and one of the code sections that defines the block subsidy looks like this:
CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams)
int halvings = nHeight / consensusParams.nSubsidyHalvingInterval;
// Force block reward to zero when right shift is undefined.
if (halvings >= 64)
CAmount nSubsidy = 50 * COIN;
// Subsidy is cut in half every 210,000 blocks which will occur approximately every 4 years.
nSubsidy >>= halvings;