En un dels nostres articles anteriors, parlàvem de l’atac de “doble despesa”. El model de comptabilitat de la propietat (UTXO) té un paper important per evitar aquest atac. A causa d’aquesta estructura de transaccions de construcció, el protocol Bitcoin permet fer un seguiment de la ubicació de les monedes en qualsevol moment.
A l’article d’avui ens centrarem en el concepte d’UTXO, considerarem els problemes associats a aquest model de comptabilitat i buscarem possibles solucions a aquests problemes..
Què és un UTXO?
UTXO significa “Sortida de transacció no gastada”, és a dir, les restes o “canvi” rebudes després de gastar alguns fons.
Els nodes de la xarxa Bitcoin mantenen una cadena de blocs que emmagatzema tots els conjunts UTXO disponibles per a la despesa. Cadascun dels nodes fa un seguiment de tots els UTXO, comprovant cada transacció de cada bloc quan es forma la cadena de blocs. El seguiment de les monedes no gastades és molt més convenient que el seguiment de cada transacció per separat.
Qualsevol transacció consisteix en entrades i sortides. Les entrades d’una nova transacció són referències a les sortides de transaccions anteriors. Sumant els valors d’aquests enllaços, es poden utilitzar en la sortida d’una transacció recentment generada. La sortida és on s’emmagatzemen les monedes i les instruccions per gastar-les.
Quan consulteu el saldo de la vostra cartera de bitcoins, veureu l’import total emmagatzemat. Però, de fet, sobre la base de la història de les transaccions anteriors, el saldo pot consistir en molts resultats que representen diferents quantitats. Penseu en això com en les nombroses factures de la vostra cartera. El saldo d’una adreça en un moment donat és la suma de tots els UTXO que l’adreça pot gastar actualment. Els conjunts de sortides representen UTXO, és a dir, un conjunt de sortides amb quantitats diferents, que representen el saldo.
Utilitzem un exemple per entendre millor el principi UTXO:
Si teniu 50 BTC al vostre compte i voleu fer un pagament de 0,5 BTC, caldrà que es formi una transacció en què hagi d’haver com a mínim una entrada i una sortida. Diguem que només hi ha un UTXO de 50 BTC. No és possible dividir l’UTXO; per tant, s’utilitza 50 BTC com a entrada. En enviar una signatura, confirmem la propietat d’aquesta entrada. Com a resultat, es creen dues sortides amb denominacions de 0,5 i 49,5 BTC. Un canvi de 49,5 BTC es torna a enviar a la cartera del propietari i es converteix en un nou UTXO i 0,5 BTC s’envia a l’adreça del destinatari. Val a dir que la comissió de transacció es dedueix del canvi d’UTXO.
Funcions importants de l’ús del model de sortida de transaccions:
- Les transaccions es fan “consumint” UTXO existents i creant-ne de noves al seu lloc;
- Les noves UTXO només es poden crear mitjançant transaccions;
- Els UTXO usats es “gasten” i es consumeixen només una vegada.
UTXO és una de les maneres de gravar i guardar l’estat de la cadena de blocs, registrant proves de propietat de monedes per part d’algú de la xarxa. La cadena de blocs basada en UTXO és un tipus de protocol de cadena de blocs. El principi de les sortides no gastades s’utilitza a les cadenes de blocs de totes les forquilles Bitcoin, així com a les cadenes de blocs de moltes altres monedes com Monero, Cardano i Komodo. Hyperledger Fabric utilitza un model UTXO modificat.
Una altra manera d’organitzar la cadena de blocs és el “Model de compte”, que s’utilitza a la cadena de blocs Ethereum. Aquest enfocament s’implementa a través de la comptabilitat local de tokens als nodes i no a les transaccions en si.
Problemes i solucions del model UTXO
Pols de criptomonedes
Pols de criptomonedes és un terme que fa referència a quantitats en BTC que no superen les comissions de transacció.
El problema de la pols de criptomonedes es va fer rellevant durant la concentració de Bitcoin al seu històric ATH el 2017. Emmagatzemar un nombre considerable d’UTXO no rendibles és inútil, ja que costa més gastar-los del que valen.
Els desenvolupadors intenten resoldre el problema de la criptografia en pols a diferents nivells. Binance es va convertir en el primer intercanvi que va permetre la conversió de pols de criptomoneda per als tokens BNB.
La pols de criptomonedes també es pot utilitzar per fer coincidir diferents adreces d’un mateix propietari. Com que les entrades no es combinen en fer una transacció, els atacants poden enviar criptografia de pols perquè es barregi amb altres UTXO i coincideixi amb diferents adreces de les víctimes.
Emmagatzematge d’UTXO
Com que la cadena de blocs emmagatzema tots els conjunts UTXO presents a la xarxa, com més gran sigui el nombre d’aquests conjunts, més espai ocuparan.
Els nodes complets emmagatzemen una base de dades de transaccions no gastades a la RAM i, amb un augment de la quantitat de dades emmagatzemades, el cost de mantenir un node només augmenta. Una de les opcions discutides per resoldre el problema d’emmagatzemar transaccions no gastades és transferir part de les dades emmagatzemades a dispositius HDD o SSD.
Implementació de testimonis segregats
Tots els nodes de la xarxa mantenen i comproven la base de dades UTXO per comprovar la validesa de les transaccions. Per a una operació de xarxa més ràpida, s’ha de fer aquesta comprovació el més aviat possible. És per aquest motiu que la base de dades es manté a la memòria RAM. Amb l’augment del nombre d’usuaris i del nombre de carteres, el volum de dades UTXO creix, cosa que comporta el problema de l’escala de xarxa. Per augmentar la privadesa o donar suport als canals de pagament de Lightning Network, els usuaris creen diversos registres UTXO.
Una de les millores després de la introducció de SegWit va ser reduir el creixement d’UTXO mitjançant la creació de registres UTXO que no afectin el seu volum. Amb aquest enfocament, és preferible utilitzar transaccions amb menys impacte en UTXO a causa de les comissions més baixes.
Solució UTreeXo
A mesura que els recursos necessaris per mantenir un node complet han crescut, els usuaris canvien cada cop més als anomenats “clients lleugers” i a nodes de tercers per supervisar la xarxa. Els clients lleugers no emmagatzemen la base de dades UTXO i no verificen les transaccions, sinó que utilitzen SPV, que significa “Verificació de pagaments simplificats”. Aquest mètode de verificació va ser descrit al llibre blanc de Bitcoin pel mateix Satoshi Nakamoto. A causa d’una sèrie de defectes importants de privadesa, l’ús de clients SPV és insegur en comparació amb els nodes complets. El problema de mantenir nodes complets es pot resoldre implementant el protocol uTreeXo
El protocol uTreeXo és un acumulador dinàmic que redueix la mida dels UTXO de la cadena de blocs a diversos kilobytes. La solució uTreeXo permet als nodes complets evitar emmagatzemar totes les dades de la cadena de blocs i fer un seguiment del conjunt de tots els UTXO. En lloc d’això, els acumuladors proporcionaran proves que les dades són correctes.
Amb la introducció del protocol uTreeXo, serà possible executar nodes complets en dispositius mòbils.
Conclusió
El model UTXO, que va aparèixer juntament amb Bitcoin, va simplificar el mètode de comptabilització dels fons i va donar impuls al desenvolupament de solucions en el camp de la privacitat en les transaccions. En barrejar diferents UTXO, un usuari pot utilitzar diferents adreces per dur a terme transaccions, cosa que complica els mètodes d’establir enllaços entre adreces..
El model tradicional UTXO té una sèrie de limitacions quan s’utilitza en contractes intel·ligents, però els desenvolupadors de Cardano van descriure el concepte Extended UTXO (EUTXO): un model UTXO ampliat per introduir contractes intel·ligents a la seva xarxa.
Malgrat les deficiències existents, aquest enfocament és un dels més utilitzats a les cadenes de blocs d’altres criptomonedes i un treball intensiu per solucionar aquestes deficiències només augmentarà la popularitat del model UTXO en altres sistemes de cadenes de blocs..