"It ain't what you don't know that gets you into trouble. It's what you know for sure that just ain't so"
Hi Deisik! Noooo, not at all. I am often wrong like everybody, and everything I write is simply "my humble opinion". In fact I also wrote, in the "more elaborated reply" which was not quoted, that to cancel the halving is technically possible, although, for the reasons I have explained, is 99.99999999% impossible (unless the miners decide to voluntarily decide to implement a new rule that would put them out of business).
The whole point of what I am writing in this post, is to try and let new users understand how Bitcoin works and that yes, the halving will take place in exactly 409 blocks. Why? Because it's a rule written in the Bitcoin code. Can't the rule be changed? Theoretically yes, but nobody would implement it.
I still have to understand if you disagree with what I say or not!
If you insist that Bitcoin halving is inevitable, then no, I can't agree with that. And I disagree not because there is a tiny but real chance of an asteroid hitting the Earth thereby making Bitcoin and its mining reward halving irrelevant (or something along these lines), but because you base your assumptions and conclusions (that Bitcoin halving is inevitable) on premises which you consider as adamant and rock-solid ("it's a rule written in the Bitcoin code") while I think them rather shaky in fact...
On the other hand, the Bitcoin high price as of recent seems to me to be a more decisive factor in favor of the coming halving than some obscure variable (or constant) hidden in the depths of Bitcoin codebase
Mmmmmh, the problem with what you say, is that the fact that the halving is coded in the Bitcoin, it's not an opinion, is a fact. Obviously I don't pretend that you trust me. In fact you shouldn't. The beauty of Bitcoin is also that you can go on github and look for it yourself.
Anyway, the part of the code that deals with the halving is this:
{
int64_t nSubsidy = 50 * COIN;
int halvings = nHeight / Params().SubsidyHalvingInterval();
// Force block reward to zero when right shift is undefined.
if (halvings >= 64)
return nFees;
// Subsidy is cut in half every 210,000 blocks which will occur approximately every 4 years.
nSubsidy >>= halvings;
return nSubsidy + nFees;
}
The initial reward is calculated (in satoshis) multiplying 50 for the constant of 100.000.000 satoshis {COIN}. The initial reward is therefore 50.000.000.000 satoshis (50 bitcoin).
As you can see, in the line after that, the script calculates the number of halving that have already occurred. It does that dividing the current block height by the interval {SubsidyHalvingInterval}. For blocks from 1 to 209.999, the result is zero. For blocks from 210.000 to 419.999 (which is where we are now) the result is 1. From block 420.000 to 629.999 will be 2, and so on.
The next line of code, the reward {nSubsidy} is divided in two for each halving that has occurred, as calculated above. So if one halving has occurred (which is where we are now) the reward will be 50.000.000.000/2= 25.000.000.000 satoshis (25 bitcoins). The constant has been divided by 2 one time.
In three days, we will reach block 420.000, therefore the result will be 2. Ergo, the reward will be 50.000.000.000/2= 25.000.000.000/2= 12.500.000.000 satoshis (12.5 bitcoins). The costant has been divided by 2, two times.
As you can see in the code, the maximum number of halvings that are allowed is 64 (which will occur in the first half on the next century). After that, the reward drops to zero.
Finally (last part of the cose), the script sums {nSubsidy} and {nFees} which are the transaction fees.
This is how the reward is calculated, and it's not my opinion, it's simply what's written in the code. If this can be changed or not...we have discussed it already.