Pàgines

diumenge, 4 d’agost del 2024

Què és exactament minar bitcoins?

 Any 2024; tothom sap que per a minar bitcoins cal resoldre problemes matemàtics complexos... excepte els qui sabem que no és així!

Com? No pot ser! Sempre he llegit que s'han de resoldre problemes matemàtics COMPLEXOS!

Doncs no, petit Padawan. Repetir molts cops una informació incorrecta no la converteix en realitat. De fet, l'operació a resoldre és tan senzilla que es pot fer a mà: https://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html.

Però anem a pams. Miraré d'explicar de forma senzilla com funciona tot el procés per tal que quedi clar, com a mínim a nivell conceptual.

Minar bitcoins consisteix en validar un bloc d'informació. I què és un bloc d'informació? Doncs a la blockchain (literalment, cadena de blocs) de Bitcoin, un bloc conté aproximadament de 1.000 a 2.500 transaccions (transferències de bitcoin d'una adreça a una altra). I què vol dir validar un bloc d'informació? Ens hi anem acostant. Validar un bloc d'informació, o guanyar la cursa del bloc actual, consisteix a ser el primer de trobar un valor especial i per tant aconseguir la recompensa que té el fet de guanyar aquesta cursa (actualment 3,125 BTC, Déu n'hi do!). Sembla que la cosa es va complicant, però tot això és necessari per tal d'entendre el procés; tot plegat tindrà sentit en pocs minuts si vós, amable lector, continueu llegint només una mica més. Paciència.

Anem finalment al gra. Si heu visitat l'enllaç de més amunt, podreu entendre de forma detallada com es fa el càlcul que busca el famós valor que busca tothom qui prova de minar bitcoins, però de forma resumida seria així: la funció hash (en el cas de bitcoin es fa servir concretament la SHA-256) el que fa és obtenir un valor de sortida a partir d'un valor d'entrada. En el cas del bitcoin, aquest valor d'entrada té relació amb la informació que conté el bloc actual; no entrarem en més detall aquí. Una de les característiques fonamentals de les funcions hash és que no són reversibles: a partir del valor d'entrada és molt fàcil obtenir el de sortida, però és dificilíssim -a la pràctica és impossible- fer-ho en sentit contrari: a partir del resultat d'aplicar la funció, és impossible obtenir el valor d'entrada. Ja gairebé ho tenim. En resum: el que busquen els miners per tal de guanyar la recompensa és un hash inferior a un valor arbitrari definit prèviament. D'on surt aquest valor? Per no allargar-ho excessivament, el que fa aquest valor és ajustar el que se'n diu la dificultat, de forma que s'aconsegueixi o s'estigui tan a prop com sigui possible de l'objectiu de generar un bloc nou cada 10 minuts. I això es fa establint per a cada bloc una quantitat de zeros determinada que ha de tenir al començament aquest valor definit prèviament. I quin és el problema? Doncs que tenint en compte que la funció hash no és reversible, l'única forma de trobar un hash que compleixi la condició de ser inferior al valor predeterminat és anar provant. El procés és el següent:

  • La informació de resum del bloc és un valor invariable.
  • Els miners hi afegeixen uns caràcters (aquesta part s'anomena nonce)
  • Calculen el hash (amb la funció SHA-256) d'aquest valor invariable un cop afegits els caràcters nonce.
  • El resultat del punt anterior és inferior al valor arbitrari definit prèviament? Enhorabona! El primer que demostra que el seu nonce fa que el hash obtingut sigui inferior al valor definit prèviament guanya la recompensa, el bloc s'afegeix a la cadena i es comencen a recollir transaccions en  un altre bloc.
  • El resultat de la funció hash no és inferior al valor definit (és el que passa habitualment)? Mala sort. Cal tornar a començar fent servir un altre nonce. És l'únic que es pot fer: anar provant, i fer-ho de la forma més ràpida possible: només guanya la recompensa el primer que obté un valor vàlid!
En resum: minar bitcoins requereix molta potència de càlcul, sí, però no pas perquè calgui resoldre "problemes matemàtics complexos". La potència es necessita per tal d'anar repetint un procés relativament senzill (recordem que es pot fer amb llapis i paper) però de la forma més ràpida possible, per tal d'anar afegint un valor aleatori a un valor fix i veure si el resultat d'aplicar la funció hash ens serveix. Mentre el resultat no és vàlid, l'únic que es pot fer és continuar repetint el procés amb altres valors aleatoris. 
Procés extremadament laboriós i que requereix molta potència de càlcul per tenir possibilitats de ser el primer de trobar un valor vàlid? Sí. Resoldre "operacions matemàtiques complexes"? De cap manera!