Què és Bitcoin? Introducció al funcionament de blockchain i les criptomonedes

Tard o d'hora havia d'acabar parlant de Bitcoin, és un dels temes més candents de l'actualitat financera i no podia quedar fora d'aquest blog sobre inversions i finances personals. Sense entrar en valoracions personals sobre la seva utilitat ni sobre la seva cotització present o futura, el que pretenc amb aquesta entrada és explicar d'una manera senzilla i objectiva què és això de Bitcoin i com funciona. Aquesta explicació em servirà també per a parlar d'altres conceptes directament relacionats amb Bitcoin, com ara la cadena de blocs (blockchain), la criptografia asimètrica i les funcions hash o les criptomonedes en general.

Bitcoin en català
Bitcoin és una xarxa descentralitzada que permet fer transaccions electròniques entre usuaris sense necessitat d'intermediaris

Començo amb una definició genèrica de què és Bitcoin, obviant la tecnologia que hi ha darrere i de la que parlaré més endavant. Podem dir que Bitcoin és una xarxa descentralitzada que permet fer transaccions electròniques entre usuaris gràcies al protocol de codi obert en que es fonamenta. Les transaccions són verificades pels propis usuaris sense necessitat de cap altre intermediari i queden registrades en una espècie de llibre de comptabilitat públic i distribuit entre els diferents usuaris.

Sent puristes, Bitcoin amb majúscula inicial acostuma a fer referència a la pròpia xarxa o al protocol, mentre que bitcoin amb minúscula inicial seria allò que es transacciona entre els usuaris de la xarxa, és a dir, la unitat de compte de la xarxa Bitcoin. Aquesta última accepció del terme és el que vindria a ser, com es coneix de manera general, una moneda virtual, criptomoneda o criptodivisa. Cal remarcar que la quantitat de bitcoins que hi pot haver és finita: hi haurà un màxim de 21 milions de bitcoins. Per últim, cal saber també que, per a facilitar els comptes amb petites quantitats, cada bitcoin es pot dividir en 100.000.000 satoshis (en honor al seu creador, el misteriós Satoshi Nakamoto, que ara per ara no sabem qui és, ni tan sols sabem del cert si es tracta d'una sola persona o d'un grup de programadors).

Bitcoin utilitza la criptografia asimètrica (o criptografia de clau pública / clau privada) per a signar i certificar les transaccions entre usuaris

Un cop feta aquesta introducció, parlaré de la tecnologia que hi ha darrere. No patiu, tractaré d'explicar-ho de la manera més entenedora possible i sense utilitzar massa tecnicismes.

En primer lloc cal parlar de criptografia, que no és altra cosa que la codificació d'un missatge de manera que només pugui ser interpretat pels receptors desitjats. La criptografia ha estat utilitzada des de l'antiguitat (sempre ha sigut molt convenient que l'enemic no conegués els teus plans) i de ben segur que tots n'estem familiaritzats d'una manera o altra. Potser alguns fins i tot heu utilitzat alguna tècnica de criptografia bàsica (com intercanviar les lletres segons la seva posició dins l'alfabet) per a enviar-vos notetes quan anàveu a l'escola. Les tècniques criptogràfiques que utilitza Bitcoin són, com era d'esperar, considerablement més complexes que això.

En primer lloc, parlaré de la criptografia asimètrica, aquesta tècnica utilitza un parell de claus (una de pública i una altra de privada, per això també es coneguda com a criptografia de clau pública / clau privada) per a la codificació i la posterior decodificació d'un determinat missatge, o també per a la signatura i validació d'un determinat missatge. La clau pública es deriva de la clau privada mitjançant un algoritme complex (en el cas de Bitcoin s'utilitza la criptografia de corba el·líptica), però no hi ha manera d'obtenir la clau privada a partir de la clau pública.

En el cas de Bitcoin, aquesta tècnica s'utilitza per a signar de manera digital un determinat missatge i posteriorment certificar la seva validesa. El missatge seria una transacció (l'usuari X "envia" una certa quantitat de bitcoins a l'usuari Y), l'usuari X utilitzaria la seva clau privada (que només coneix ell mateix) per a signar i certificar que efectivament vol realitzar aquesta transacció i la resta d'usuaris podrien utilitzar la signatura i la clau pública de l'usuari X per a comprovar que la transacció és legítima. La signatura relaciona per tant clau pública, clau privada i transacció, certificant que ha sigut l'usuari que té accés a la clau privada que es correspon amb la clau pública qui ha emès la transacció. La transacció en cap moment menciona explícitament qui és l'usuari que ha emès la transacció, només coneixem la seva clau pública (que vindria a ser com una adreça), per això s'acostuma a dir que les transaccions dins la xarxa Bitcoin són pseudo-anònimes.

Per a entendre més clarament això de la criptografia asimètrica i les diferents claus, podem recórrer a un símil. Bitcoin es podria assimilar a una xarxa de bústies, cadascuna amb la seva corresponent numeració marcada a la porta (de manera que tothom pot llegir-la, seria l'equivalent a una clau pública) però totes elles tancades amb el seu propi cadenat (de manera que només pot obrir-les qui conegui la combinació secreta del cadenat corresponent, això seria l'equivalent a la clau privada). Jo, com a usuari d'aquest xarxa, podria deixar cartes a qualsevol bústia, però només podria agafar les cartes de la meva pròpia bústia (d'aquella o aquelles bústies de les quals en conegui la combinació secreta per a obrir-les). Més endavant també veurem que aquestes bústies, a més a més, són totalment transparents, tothom pot veure quantes cartes contenen i, no només això, fins i tot quin recorregut ha seguit cadascuna de les cartes abans d'arribar-hi.

La funció hash SHA-256 s'utilitza per a validar les transaccions i incorporar-les al registre

Una altra tècnica criptogràfica que utilitza Bitcoin són les funcions hash. En concret, la funció utilitzada per Bitcoin és l'anomenada SHA-256 que, donada una entrada qualsevol, genera una sortida (el hash o digest) de 256 bits (és a dir, una cadena formada per 256 zeros i uns). Algunes criptomonedes alternatives utilitzen aquesta mateixa funció o altres funcions hash més o menys similars, encara que totes tenen una sèrie de característiques comunes:

  • Donada una entrada qualsevol és senzill calcular la seva sortida
  • No és viable fer el procés invers (obtenir l'entrada a partir de la sortida)
  • Una entrada determinada sempre genera la mateixa sortida
  • Un petit canvi en l'entrada genera una sortida tan diferent que no es pot establir cap relació amb l'entrada prèvia
  • No és viable predeterminar dues entrades que generin la mateixa sortida

Millor il·lustrem-ho amb un exemple, veiem que succeeix quan apliquem la funció SHA-256 als següents missatges:

Una entrada qualsevol156f23293162c32e602cfa119afb7b2e9866e7bc0807643258dc1bad40eadd2d
Una entrada qualsevol.77865da0f1fb25b325b3523deec4304c68718631d73843e0605c17f44a6225a7
una entrada qualsevolcc29f8e65f553eadba694905863cbc1325c613b0e24c4dcbe10d33804832d125

Com es pot veure, un petit canvi en l'entrada (afegir un "." al final o canviar la majúscula inicial per una minúscula) genera una sortida totalment diferent, de manera que no podem establir cap relació entre les entrades i la sortida, a simple vista sembla que el resultat és totalment aleatori. No obstant, si tornem a introduir les entrades anteriors sempre obtindrem el mateix resultat. (Per cert, els resultats de la funció els he mostrat en codi hexadecimal en comptes de binari, per això la cadena obtinguda està formada per una cadena de 64 xifres i lletres en comptes de 256 zeros i uns).

I quina importància té tot això? Doncs molta, ja que aquesta tècnica criptogràfica és la que s'utilitza per a validar les transaccions que he mencionat a l'apartat anterior. Les transaccions emeses pels usuaris van inicialment a parar a un pool (una mena de fons o base de dades) a l'espera de ser validades i incorporades al registre de transaccions. Ha arribat, doncs, l'hora de parlar del proof of work i de la mineria de bitcoins.

Els miners s'encarreguen de fer càlculs per a trobar un hash vàlid segons les condicions establertes (això és el que es coneix com a proof of work)

Els miners no són altre cosa que usuaris que s'encarreguen de validar les transaccions i incorporar-les al registre. Agafen algunes de les transaccions pendents de validar que hi ha al pool i les incorporen al missatge (que, a més a més de les transaccions, també conté altra informació). Un cop validat aquest missatge, que anomenem bloc, quedaria registrat i passaria a ser un nou bloc dins la cadena de blocs (després en parlaré més en detall, però es necessari introduir ja el concepte).

A tot el contingut del bloc se li aplica la funció hash SHA-256 i així s'obté una cadena de sortida (el hash o digest que he mencionat anteriorment). Per a que el bloc sigui validat i s'incorpori al registre o cadena de blocs, el seu hash ha de complir una condició: que un nombre determinat de les primeres xifres sigui 0 (o, el que és el mateix, que sigui inferior a un determinat número). Com deia, el bloc també conté altra informació a part de les transaccions, la majoria d'informació ve d'una manera o altra predeterminada però hi ha un numeret (conegut com a nonce) que els miners poden modificar lliurement per tal que el hash resultant compleixi la condició abans esmentada.

Degut a les particularitats de les funcions hash, no hi ha manera de saber quin valor del nonce resultarà en un hash que comenci per un determinat nombre de zeros. Per aquest motiu, l'única manera de trobar un nonce vàlid és provant i provant. I precisament a això es dediquen els miners: van fent càlculs amb diferents valors de nonce fins que troben un que, aplicat a la resta de contingut del bloc, fa que el seu hash compleixi la condició requerida. Evidentment, realitzar aquests càlculs requereix una gran quantitat de "treball" (en forma de capacitat de computació i d'energia), per això aquest mètode de validació es coneix com a proof of work (una traducció directa seria quelcom similar a prova de treball).

A canvi del seu "treball", els miners reben una compensació i les comissions de les transaccions validades

Bitcoin té la particularitat d'ajustar la quantitat de "treball" necessari (augmentant o reduint la dificultat dels càlculs) en funció del nombre de miners que hi hagi fent càlculs, de manera que aproximadament cada 10 minuts es validi un nou bloc. Aquest ajustament es fa senzillament modificant la condició que ha de complir el hash de sortida per a ser vàlid, augmentant o reduint el nombre de zeros pels quals ha de començar la cadena resultant. Com que el codi de Bitcoin és totalment obert, qualsevol usuari pot convertir-se en miner, podríem dir que només cal un ordinador connectat a la xarxa, tot i que els miners s'acostumen a organitzar en grups molts nombrosos per a augmentar la seva capacitat de computació i les probabilitats d'aconseguir validar blocs.

A canvi del seu "treball" (i de la seva despesa en hardware i en energia), els miners reben una compensació cada cop que validen un bloc, a més a més de les comissions per les transaccions que hagin registrat. Aquesta compensació consisteix en la transacció d'una determinada quantitat d'unitats de comte cap a l'adreça pública del miner, quantitat que va reduint-se cada cert temps (aproximadament cada 4 anys la recompensa es redueix a la meitat, és el que es coneix com a halving), fins que arribarà un moment en que els miners no rebran cap compensació i el seu únic incentiu seran les comissions (es calcula que això succeirà en torn l'any 2140). Això és així perquè, com deia a l'inici, Bitcoin està programat de manera que hi hagi una quantitat finita d'unitats de compte (recordeu que les unitats de compte de la xarxa Bitcoin són el que, comunament, anomenem bitcoins).

La cadena de blocs (blockchain) és un registre descentralitzat que conté tots els blocs que hagin sigut validats

Ja gairebé estem acabant, només ens queda saber què fer amb el bloc un cop s'ha validat, així que toca parlar de la cadena de blocs. El seu nom ja és prou autoexplicatiu, la cadena de blocs no és altra cosa que una cadena formada per tots els blocs que han sigut validats amb antelació. És, doncs, un registre amb absolutament totes les transaccions que s'han realitzat a la xarxa. Qualsevol usuari pot tenir-ne una còpia, per això podem dir que es tracta d'un registre descentralitzat. Bàsicament, això és el que hi ha darrere de la tecnologia coneguda com a blockchain.

Quan un miner aconsegueix trobar un valor de nonce que faci que el seu bloc sigui vàlid, transmet el nou bloc a la resta de la xarxa per tal que el bloc minat passi a incorporar-se a la cadena de blocs. Altres usuaris de la xarxa, també coneguts com a nodes (miners o qualsevol altre usuari amb una còpia de la cadena de blocs), comproven que el contingut del nou bloc sigui completament vàlid i, en cas afirmatiu, l'incorporen a la seva còpia de la cadena de blocs. Aquesta comprobació garanteix que totes les transaccions que conté el nou bloc són vàlides, segons el procediment que he explicat a l'inici de l'entrada, i que cap usuari estigui utilitzant bitcoins que no té o els estigui utilitzant més d'una vegada (realment el que es comprova es que les transaccions que surten d'una adreça no superen les transaccions rebudes).

Així, la cadena va allargant-se a mesura que s'hi afegeixen nous blocs amb noves transaccions. De manera que, en cas de dubte, per a saber quina és la cadena correcta o la versió més actualitzada de la cadena, els usuaris només han de comprovar quina és la cadena més llarga. Un miner o qualsevol altre usuari no pot fer trampes, ja que esta competint contra tota la resta de nodes de la xarxa que constantment estan incorporant nous blocs, validant-los i comprovant quina és la cadena més llarga (i, per tant, la que té més proof of work al seu darrere). Per a fer trampes, caldria que més de la meitat de la capacitat de computació de la xarxa es posés d'acord, i això és difícil degut a la gran descentralització de la xarxa i al gran cost en quant a capacitat de computació i a l'enorme quantitat d'energia que seria necessària. Però, sobretot, és improbable ja que no hi ha cap incentiu per a fer-ho (si es pogués trampejar, bitcoin no tindria cap valor i, per tant, tot el que haguessin robat tampoc en tindria).

Una altra característica de la tecnologia blockchain es que, com en una cadena real, els blocs no es troben simplement un darrere l'altre, si no que es troben enllaçats entre sí com si es tractessin de baules en una cadena. Cada bloc conté el hash del bloc anterior, per tant qualsevol intent de canvi en el contingut del bloc anterior faria que el hash ja no fos el mateix, invalidant la cadena de blocs resultant, ja que els nodes detectarien la discrepància entre el bloc modificat i el hash que conté el següent bloc. Per a que qualsevol modificació fos acceptada caldria modificar també els blocs subsegüents i per a això és necessari, novament, comptar amb la majoria de la capacitat de computació de la xarxa. Quant més blocs hi hagi després d'un bloc determinat més improbable serà que aquest bloc pugui ser modificat (per això a vegades es parla d'aquests blocs posteriors com a confirmacions del bloc en qüestió). Aquesta característica és la que fa que puguem dir que una cadena de blocs plenament descentralitzada és immutable.

La tecnologia blockchain pot tenir altres aplicacions i existeixen altres xarxes i criptomonedes alternatives a Bitcoin

La tecnologia blockchain ja existia abans de la creació de Bitcoin, de la mateixa manera que les altres tecnologies que utilitza aquesta xarxa (com les tècniques criptogràfiques de les que he parlat abans), i també pot tenir altres aplicacions. Només cal pensar en altres processos en els que pugui ser útil tenir un registre públic i que no pugui ser modificat, tot això sense necessitat de que hi hagi un intermediari en qui haguem de confiar i que s'encarregui de mantenir el registre. Aquestes aplicacions alternatives de la tecnologia blockchain (i de les altres tecnologies que fan possible Bitcoin) han fet sorgir un gran nombre de xarxes i criptomonedes alternatives.

Les altres xarxes es diferencien de Bitcoin pel que fa a la manera de validar les transaccions (diferents maneres d'implementació del proof of work o altres mètodes com el proof of stake o el proof of authority), la manera de compensar als usuaris que participen en aquesta validació, el nombre d'unitats de compte que té la xarxa, el nombre de transaccions que pot contenir cada bloc o altres característiques que permeten oferir o facilitar la implementació d'altres aplicacions.

Avui dia estem vivint un nou boom pel que fa al naixement de noves xarxes i criptomonedes. Darrere hi ha projectes seriosos i d'altres que no ho són gens (com és el cas de Dogecoin i succedanis), alguns d'ells amb alguna utilitat real i d'altres amb una utilitat, com a mínim, dubtosa. El temps, i el mercat, dirà quins projectes aporten valor i quins no.

Bitcoin pot semblar complex, però no es pot negar que és més transparent que qualsevol alternativa centralitzada

Espero que aquesta entrada hagi pogut servir per a aclarir com funciona Bitcoin i altres xarxes similars. Per als que no som experts en informàtica ens pot semblar massa complex, però si ens parem a pensar-ho, realment entenem que hi ha darrere d'una "simple" transferència bancària? O com funciona Paypal? O què succeeix entre bambolines quan enviem un Bizum a un amic? Potser, al cap i a la fi, Bitcoin no és tan complex en comparació, el que no es pot negar és que és molt més transparent que qualsevol alternativa centralitzada.

L'objectiu d'aquesta entrada no era parlar sobre la utilitat real que pugui tenir Bitcoin, potser més endavant ho faci, però per ara ho deixo amb aquesta explicació teòrica per a que cadascú pugui extreure'n les seves pròpies conclusions. Si voleu llegir algun llibre sobre el tema us recomano The Bitcoin Standard de Saifedean Ammous (aquí us deixo els enllaços al llibre en anglès i castellà, com sempre, són enllaços d'afiliat per si amb la vostra compra voleu col·laborar amb el blog). A més a més de tenir la narrativa més coherent pel que fa a explicar la utilitat de Bitcoin i a contrargumentar les crítiques que s'hi fan més habitualment, el llibre conté un resum excepcional sobre la història del diner i sobre com funciona el sistema monetari. Això sí, cal remarcar que parla des del punt de vista de l'Escola Austríaca (de vegades és molt vehement en certes afirmacions i en criticar altres escoles de pensament econòmic, en especial el Keynesianisme), no ho dic com quelcom positiu ni negatiu, simplement és un biaix que cal tenir en compte.

Per últim, us deixo un vídeo de Youtube que també explica com funciona Bitcoin (amb menys text que jo i amb molts dibuixos, pot ser molt útil per a acabar d'interioritzar certs conceptes sobre el funcionament de Bitcoin). Per cert, aquest canal de Youtube té altres vídeos també molt interessants, estan realitzats per un matemàtic i s'hi expliquen diferents conceptes i eines matemàtiques d'una manera realment molt entenedora (tant de bo hagués existit quelcom similar mentre estudiava la carrera, m'hagués estalviat molts mals de cap...).

Comentaris