Uno de los mayores males en todas las monedas FIAT (dinero fiduciario como EUR,USD,GBP…), es el posible descontrol de generar moneda sin respaldo alguno. Como ejemplos de la hiperinflación tenemos a Zimbabue o Venezuela, paises que con la idea de controlar la deuda, se dedicó a imprimir moneda local sin respaldo y provocando el caos entre la población al devaluar el valor de estas.
WIKIPEDIA: Hiperinflación en Zimbabue
¿Qué es el halving?
Para poder controlar la inflacción, Satoshi ideó dos sencillos mecanismos para ello.
- Suministro total: 21 millones.
- Reducción de recompensa: Cada 210mil bloques (~4 años).
En el caso del halving, cada 210000 bloques minados se reduce a la mitad la recompensa, tal como se observa en la tabla superior. Si el bloque 0, génesis, se inició con una recompensa de 50btc, el bloque 209999 sería el último bloque con una recompensa de 50btc.
El código que permite realizar esta acción se encuentra en las entrañas del bitcoin:
https://github.com/bitcoin/bitcoin/blob/master/src/validation.cpp
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) return 0; CAmount nSubsidy = 50 * COIN; // Subsidy is cut in half every 210,000 blocks which will occur approximately every 4 years. nSubsidy >>= halvings; return nSubsidy; }
https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp
* Main network */ class CMainParams : public CChainParams { public: CMainParams() { strNetworkID = CBaseChainParams::MAIN; consensus.nSubsidyHalvingInterval = 210000;
Y para entender donde se encuentra el resultado de esta recompensa, es necesario ir al modo binario y examinar más de cerca las operaciones que vemos en el código:
int halvings = nHeight / consensusParams.nSubsidyHalvingInterval; ----------------------------------- Recompensa bloque inicial = 50; Nº Bloque / Bloques de cada halving; (630000 / 210000 = 3) 50 binario = 110010 Halving 1 = 11001; Halving 2 = 1100,1; Halving 3 = 110,01; (el nuestro) Halving 4 = 11,001; Halving 5 = 1,1001;
En función del halving en el que nos encontremos, se moverán a la derecha tantos 0 como nivel del halving en el que nos encontremos. En este caso serían 3 posiciones y el resultado sería 110,01 o 6,25 en decimal.
Implicaciones del halving
La recompensa por bloque permite que haya «mineros» dispuestos a gastar potencia de calculo para quedarse la recompensa del bloque, añadiendo todas las transacciones posibles que cumplan lo establecido en el código. Y los nodos aceptan o rechazan este bloque en función de si cumple o no el consenso establecido en el código. Esto evita el doble gasto y que el minero «juegue» a saltarse el consenso. Perder la recompensa de un bloque no es poca cosa.
Esta reducción de la recompensa afecta directamente al minero al reducirse su ganancia por bloque y afecta a todos al añadir menor oferta en los intercambios de bitcoin.
El futuro halving
El 93% de bitcoin se habrán minado en este tercer halving y en el siguiente ya estaremos en el 96%, dejando en circulación la practica totalidad de la moneda. Estos cuatros años que quedarán para el siguiente halving, sobre 2024, serán decesivos para comprobar si los mineros seguirán dispuestos a gastar energía para seguir minando y mantener una red saneada o habrá una espiral descendente de «hashrate» que pueda afectar a la red.