Modelo UTXO

En este artículo pretendo explicar de forma sencilla, con ejemplos el modelo UTXO que utiliza Bitcoin. Si no tienes clara la estructura de ficheros de un nodo Bitcoin que utiliza el cliente Bitcoin Core, lo mejor es que antes leas esté artículo donde lo explico: https://bitcoineando.es/2019/02/22/estructura-directorio-de-datos-de-un-nodo-completo-bitcoin-core/

Partiendo de que conocemos la estructura, tenemos claro que la información de los bloques se encuentra en el directorio blocks y los UTXO se encuentran en la carpeta chainstate.

Bien. ¿Qué es un UTXO? UTXO es el acrónimo de Unspent Transaction Output, es decir una «salida no gastada de una transacción».

Voy a intentar ilustrar el modelo, vamos a partir de una situación hipotética de 5 nodos, cada nodo pertenece a una persona, estos son nuestros voluntarios:

Nuestra red Bitcoin

Todos los usuarios son mineros, vamos a obviar el bloque génesis y comenzamos de 0. No hay bloques, no hay UTXOs, los directorios están vaciós, no entraré a explicar temás más técnicos como la transacción coinbase para simplificar el tema y obviaremos las comisiones.

Ana es la primera en minar un bloque, la red acaba de añadir el primer bloque y se genera un único UTXO de 50 bitcoin. El resto de nodos, tras comprobar que la prueba de trabajo es correcta y que las reglas de consenso se respetan añaden el bloque a su cadena (el primero en este caso) y calculan el UTXO añadiéndolo a su nodo, en este caso un único UTXO de 50 bitcoin. Este sería el UTXO set de los nodos:

Nuestro primer UTXO

Ana, que está contentísima por haber minado el primer bloque, decide envíar 5 bitcoin a los 4 usuarios restantes. Por lo que hace una transacción como está:

El primer dato que tenemos claro es que un UTXO siempre se gasta completo, no se puede gastar en parte. Así que en este caso Ana utiliza el UTXO de 50 bitcoin como entrada de la transacción (input) y tenemos 5 salidas (outputs), 4 de ellas son al resto de usuarios, 1 por cada usuario. Si hacemos la suma, vemos que Ana ha gastado 20 bitcoin, 5 a cada usuario, así que se genera otra salida más con el cambio. El UTXO set queda de esta manera:

Nuestro nuevo UTXO set

Hemos pasado de 1 único UTXO a tener 5. Bien, Belén se siente generosa y decide enviar 3 bitcoin a David, de nuevo se genera una transacción como esta:

Una nueva tx

Vemos como el UTXO completo de Belén se gasta para enviar 3 bitcoin a David, los 2 restantes vuelven como cambio a Belén. Así queda nuestro UTXO set:

El nuevo UTXO set

Si hasta aquí lo tenemos claro, vamos a dar un paso más, David quiere enviar 6 bitcoin a Elisa, sabiendo que los UTXO siempre se gastan completamente y que David controla 2 UTXO (el primero de 5 y los 3 que le ha envíado Ana) tendremos la siguiente transacción:

Una nueva tx

David no tenía un UTXO de 6 bitcoin para enviar a Elisa por lo que ha tenido que utilizar 2 entradas en la transacción, la suma de los bitcoin de las entradas que ha utilizado es de 8 bitcoin, de ellos 6 van a Elisa y 2 vuelven a David. Nuestro UTXO set:

El nuevo UTXO set

Esta es la base del modelo UTXO explicada de manera sencilla, con cada bloque los nodos comprueban que las transacciones contenidas son correctas y destruyen y crean los UTXO en función de ellas. A día de hoy la carpeta que contiene los UTXO ocupa 3.3GB hay casi 58 millones de UTXO que corresponden a los casi 18 millones de bitcoin minados a día de hoy.

Envía una propina a Jochemin

Etiquetas:,

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *