Lightning Network: la solució als problemes d'escalabilitat de Bitcoin?
A la darrera entrada vaig parlar d'algunes alternatives (hard forks i altres "rivals" de Bitcoin) que pretenen millorar les funcionalitats de Bitcoin i solucionar les seves limitacions com a mitjà de pagament. Però lògicament, com ja esmentava a l'entrada anterior, també existeixen diferents propostes per a implementar millores dins de la pròpia xarxa Bitcoin o de manera paral·lela, sense cap necessitat de crear altres xarxes i criptomonedes independents. Avui us parlaré d'una d'aquestes propostes, que pretén solucionar els problemes d'escalabilitat de Bitcoin: Lightning Network. És una de les propostes més populars i que, a més a més, ja es troba en funcionament amb uns resultats prou satisfactoris.
El creixement de Bitcoin està limitat pel que fa al nombre de transaccions per segon que pot processar, el temps de validació i les comissions per a micropagaments
Abans de res, un breu recordatori sobre això de l'escalabilitat. L'escalabilitat fa referència a la capacitat de Bitcoin per a créixer i funcionar de manera òptima a mesura que més usuaris (eventualment tota la població mundial) vagin incorporant-se a la xarxa. Actualment Bitcoin té un límit tècnic pel que fa al nombre de transaccions que pot processar en un període determinat de temps. S'acostuma a dir que aquest límit és de 4,6 transaccions per segon (encara que el límit teòric és de 7 transaccions per segon).
Evidentment, aquest límit és insuficient per a satisfer la demanda de transaccions que hi hauria en cas que el nombre d'usuaris de Bitcoin augmentés de manera significativa (i ni parlar-ne de satisfer la demanda en cas que tota la població mundial acabés utilitzant Bitcoin diàriament). Per a fer-nos una idea de l'ordre de magnitud, és habitual comparar aquest límit amb les 1.700 transaccions per segon que processa una xarxa global, però centralitzada, com la de Visa (i aquest nombre és només el que processa de mitjana cada segon, el límit teòric se suposa que és de 24.000 transaccions per segon).
El processat de les transaccions també té un altre inconvenient: les transaccions no es validen immediatament, si no que ho fan en blocks cada 10 minuts aproximadament (recordem que aquest és el temps que triga de mitjana en validar-se cada nou block de la xarxa Bitcoin). Veure la nostra transacció inclosa en un nou block a vegades no és garantia suficient de que s'acabi incorporant a la blockchain. Si recordem els principis de funcionament de Bitcoin i les blockchains en general (podeu repassar l'entrada on en parlo), en cas de discrepància entre diferents cadenes, "guanya" aquella cadena que tingui major longitud. Així que, quants més blocks hi hagi a continuació del block que conté la nostra transacció, més segurs podrem estar de que acabarà formant part de la blockchain. En funció de l'import de la transacció ens pot semblar que un block ja és suficient, però potser preferim que hi hagi 3 blocks més o, fins i tot 6 per a estar completament segurs de que no hi ha cap altra cadena més llarga que invalidi la nostra transacció.
A més a més, les transaccions també suposen el pagament d'una comissió per a incentivar que els miners incloguin la nostra transacció en el següent block validat. El límit de transaccions que pot processar la xarxa ocasiona que, degut a la competència entre usuaris per a que s'incloguin les seves transaccions, les comissions puguin arribar a ser relativament altes. L'efecte de les comissions és major, lògicament, en cas que l'import de la nostra transacció sigui petit, aquelles que s'acostumen a anomenar micropagaments. És a dir, si volem pagar un cafè amb bitcoin, en alguns casos (i és previsible que en el futur succeeixi encara més freqüentment), gastarem gairebé tant en comissions com en el propi cafè.
Lightning Network soluciona els problemes d'escalabilitat de Bitcoin registrant les transaccions en una "segona capa"
És evident que, ara per ara, Bitcoin per si sol no podria funcionar com a mitjà de pagament a escala mundial. Per sort, tenim alternatives com ara Lightning Network. Explicaré com funciona amb un exemple senzill, normalment s'utilitza l'exemple del cafè, jo tractaré de ser una mica més original i utilitzaré un exemple que em resulta més proper ;)
Suposem que cada dia, per a esmorzar, em demano un Cacaolat al bar que fa cantonada. Tal i com he explicat anteriorment, transferir-li cada dia 0,00003 bitcoins a l'amo del bar no és gaire eficient, així que acordem fer els pagaments a través de Lightning Network. Per a fer-ho primer hem d'obrir un canal de pagament, que consisteix en una adreça Bitcoin multisignatura (podríem dir que vindria a ser una mena d'adreça compartida entre els dos). En aquest cas, jo transferiria una quantitat determinada de bitcoins (posem per cas que decideixo transferir 0,001 bitcoins) per a anar pagant els Cacaolats que consumeixi al bar i ell, en aquest cas, no caldria que en transferís cap (ja que, encara que els canals són bidireccionals, en aquest exemple totes les transaccions aniran en una única direcció: de mi cap a ell). Aquesta transacció inicial d'obertura quedaria registrada a la blockchain de Bitcoin.
A partir d'aquest moment, totes les transaccions diàries (cada cop que em demani un Cacaolat) no quedarien registrades a la blockchain, sinó a una mena de segona capa. Dins d'aquesta segona capa hi hauria un balanç que s'aniria actualitzant, previ acord entre ambdues parts, a mesura que féssim transaccions. Inicialment el balanç diria que, dels 0,001 bitcoin, 0,001 són meus i que al bar li'n corresponen 0. Si em prenc un Cacaolat, registrarem la corresponent transacció i el balanç dirà que 0,00097 bitcoins són meus i 0,00003 són del bar. Cada balanç aniria associat a una data i hora, així sempre sabríem quin és el balanç més actualitzat i que registri totes les transaccions realitzades fins aquell instant.
En qualsevol moment podríem tancar el canal de pagament, de manera que els bitcoins dipositats a l'adreça multisignatura es repartirien segons el que indiqués el darrer balanç. Si tanquéssim el canal al finalitzar el mes i m'hagués pres 30 Cacaolats al llarg de tot aquest temps, el balanç diria que 0,0001 bitcoins són meus i 0,0009 són del bar. Així que jo rebria una transacció de 0,0001 bitcoins des de l'adreça multisignatura a l'adreça que hagués indicat, mentre que el bar en rebria 0,0003. Aquesta transacció de tancament sí quedaria registrada a la blockchain de Bitcoin.
El canal es pot tancar en qualsevol moment segons el que s'acordi entre ambdues parts, però també de forma unilateral (una acció que pot ser perfectament lícita en cas que una de les parts decideixi abandonar la xarxa). Però si una de les parts tanca el canal amb un balanç desactualitzat o fals, l'altra part disposa d'un temps determinat (configurable a l'obrir el canal) per a aportar el darrer balanç vàlid i tots els fons dipositats inicialment al canal se li transferiran de manera íntegra. És una molt bona manera de desincentivar qualsevol intent de fer trampes.
Lightning Network funciona com una xarxa en malla, connectant canals de pagament oberts entre diferents usuaris
Lightning Network també té una altra funcionalitat molt útil: la possibilitat de funcionar com una xarxa en malla (mesh network). Això vol dir que no és necessari que obri canals de pagaments amb tota la gent amb la que faci una transaccions, es poden utilitzar canals ja existents entre altres usuaris.
Seguint amb l'exemple anterior, posem per cas que jo també tingués un canal de pagament obert amb mon germà i, un dia, mon germà anés a prendre una cervesa al mateix bar. No caldria que mon germà obrís un nou canal de pagament amb l'amo del bar, podria utilitzar el que jo ja tinc obert: mon germà em pagaria a mi i jo pagaria a l'amo del bar. La cadena de canals de pagaments podria allargar-se tant com fos necessari, Lightning Network s'encarregaria de buscar el camí més curt entre dos usuaris i que la cadena de pagament s'executa correctament. Com a curiositat, el mecanisme utilitzat es coneix com a onion routing (ho podríem traduir com a "encaminament ceba") ja que els missatges de les transaccions van encapsulats en diferents capes (com les d'una ceba...) en funció del nombre d'usuaris intermedis.
Lightning Network ja es troba en funcionament actualment
Tot això permet que les transaccions a través de Lightning Network no tinguin un límit pel que fa al nombre (o, com a mínim, que aquest límit no suposi cap impediment a l'adopció de Bitcoin com a mitjà de pagament global), que les transaccions es puguin validar de manera quasi immediata i que les comissions siguin prou baixes com per a permetre els micropagaments. Aquestes característiques no són només teòriques, Lightning Network ja s'està utilitzant actualment (alguns "moneders" com ara Blue Wallet, Breez, Eclair, Muun o Zap ja ofereixen la possibilitat de transferir bitcoins a través de Lightning Network) i, pel que sembla de moment, amb molt bons resultats.
Com que la majoria de xarxes alternatives a Bitcoin s'han desenvolupat a partir del seu codi font, la tecnologia que utilitza Lightning Network també pot ser utilitzada per facilitar els pagaments dins d'altres xarxes, directament o fent-hi petites modificacions. Per exemple, Litecoin és totalment compatible amb Lightning Network.
Per últim, no vull acabar l'entrada sense esmentar que Lightning Network i altres tecnologies similars de "segona capa" també obren la porta a l'ús de Bitcoin per a altres aplicacions, actualment inviables tècnicament o amb limitacions en comparació amb altres xarxes. Una d'aquestes posibles aplicacions és el que es coneix com a contractes intel·ligents (smart contracts), dels quals parlaré a properes entrades.
Per avui, això és tot, espero que us hagi semblat útil l'entrada. He tractat de simplificar-ho però sense deixar-me cap concepte important, si teniu preguntes o trobeu a faltar quelcom feu-m'ho saber. Com sempre, els vostres comentaris són benvinguts (i, si voleu compartir l'entrada a les xarxes socials, encara més!).
Molt interessant l'entrada. Només puntualitzar que si un dels usuaris del canal el vol tancar amb un balanç incorrecte, l'altre usuari pot obtenir TOT l'import del canal (no només l'últim balanç correcte). Aquest mecanisme de penalització és el que desincentiva a comportaments deshonestos. Ara bé, això té un preu, i és que per estar segur que l'altra part del canal no t'enganya (volent-lo tancar amb un saldo incorrecte) has d'estar permanentment connectat a la xarxa, és a dir, el teu wallet de la Lightning ha d'estar on-line sempre. Aquest tipus de funcionament és clarament diferent als wallets de capa 1 (o wallets normals de Bitcoins) que no és necessari que estiguin on-line gairebé mai, només per enviar diners.
ResponEliminaUn punt interessant a ressaltar és sobre l'escalabilitat d'aquesta solució. Per a cada canal calen dues transaccions a la blockchain, una d'obertura i l'altra de tancament. En funció del volum d'usuaris que facin servir aquesta solució pot passar que el throughtput (transaccions per segon que pot processar la blockchain) de Bitcoin no sigui suficient ni per gestionar les transaccions d'obertura i tancament de canals. Encara estem molt lluny d'aquest punt i si s'hi arriba voldrà dir que l'èxit i ús de la criptomoneda serà innegable. Quan serà això, o si arribarà, només el temps ho dirà...
Gràcies per les teves puntualitzacions!
ResponEliminaTens tota la raó, modificaré una mica el redactat per a que quedi clar que, en cas de comportament deshonest, la penalització suposa perdre tots els fons aportats al canal en qüestió.
Pel que fa a la necessitat d'estar sempre (=24/7) online, segons tinc entès, és una pràctica molt recomanable però no és imprescindible en tots els casos. A l'obrir el canal es pot configurar el temps de marge per a "disputar" el tancament unilateral (he vist que, per defecte, acostuma a ser de 2 dies). També hi ha serveis (els "watchtowers") per a vigilar de manera automàtica que els tancaments unilaterals es facin amb l'últim balanç existent. No sóc prou expert en la temàtica així que l'entrada només pretenia ser una introducció, a mesura que vagi aprenent potser aniré ampliant el contingut per a explicar millor això dels "timelocks" i dels "watchtowers".
Molt interessant també aquesta darrera puntualització que fas sobre els límits de l'escalibilitat que pot oferir Lightning Network.
Certament, el que comentes del temps de marge és correcte. Aquest temps s'assigna per defecte i cada una de les implementacions té el seu (i totes en tenen un de diferent!), tot i que el pots canviar. Ara bé, cal anar amb compte, però, perquè configurar un temps excessiu pot comportar un atac on et 'congelin' els fons del canal durant més temps.
EliminaPel que fa a les watchtowers, certament és una solució proposada, però diria que en l'actualitat no hi ha serveis en funcionament que s'ofereixin perquè el model de negoci de les watchtowers és realment complicat.
Felicitats pel blog.
Això és tot un món per als profans en la matèria com jo! Cal seguir informant-se, qui sap si en el futur tots aquests coneixements seran encara més útils o, fins i tot, imprescindibles.
EliminaMoltes gràcies! De moment el blog serveix principalment per a explicar-me a mi mateix tot allò que vaig aprenent (vull creure que també, de tant en tant, passa algú altre per aquí i també li resulta al menys una mica útil el que escric...).
Sempre animo a tothom a que faci el mateix, fa falta més contingut en català a les xarxes. Així que, veient que saps molt bé del què parles, t'animo a escriure (si no ho fas ja) sobre bitcoin i blockchain en català, que estem molt mancats de contingut de qualitat (això meu, com a introducció pot estar raonablement bé, però és massa genèric).