Aspectos Técnicos de Bitcoin

¿Qué Es Una UTXO?

Qué Es Una Utxo

El término UTXO (Unspent transaction output o salida no gastada de transacción) hace referencia a la cantidad de criptomonedas que restan luego de haber realizada una transacción, como puede ser el caso de Bitcoin.

Cada transacción de Bitcoin comienza utilizando la salida de otra, de forma que el libro contable de esta cadena de bloques se mantiene balanceado.

Las UTXO son las responsables del comienzo y final de cada transacción. Lo que permite que, aunque fueran gastadas las criptomonedas, se mantenga un registro de la proveniencia de las mismas si seguimos el hilo de UTXO.

Contenido

¿Cómo funciona las UTXO?

Puede que todo esto suene un poco complejo al principio, pero a medida que vayamos explicando algunas cosas se volverá un concepto muy simple.

Estas salidas de transacciones no gastadas son una parte fundamental de algunas criptomonedas. Es el resultado final entre lo que ingreso a una transacción menos lo que se envió a un nuevo monedero.

Es básicamente el cambio que no se gastó luego de haber completado una transacción. Similar a cuando debemos pagar con dinero y nos devuelve una parte porque el billete es más grande que el producto o servicio que adquirimos.

Cuando vemos nuestro monedero Bitcoin, notaremos que hay un balance, un total de fondos o como quieras llamarle. Esto es la cantidad de criptomonedas (en este caso BTC) que tenemos.

Para el ejemplo vamos a suponer que tenemos 1 BTC. Nosotros lo veremos como un único balance, pero la realidad es que este puede estar compuesto por múltiples UTXO.

Podemos tener 4 UTXO de 0,25 BTC, 2 de 0,5 BTC o diferentes UTXO con valores tan dispares como 0,33 BTC, 0,14 BTC, 0,23 BTC, 0,09 BTC y 0,22 BTC.

La realidad es que la cantidad de UTXO y lo valores que tienen cada una no nos importa, sino el total de todas ellas, que en este caso es de 1 BTC exactos (para hacer más fáciles las cuentas).

Siguiendo con el ejemplo, supongamos que ahora salimos a comer y necesitamos pagar por una cena. Además es una muy cara porque nos costara una fracción de nuestro bitcoin, pero lo valemos.

Elegimos un lugar muy elegante, donde vamos a pedir un platillo caro, de esos que nos comeríamos todos los días, y pagaremos 0,25 BTC.

Si revisamos de nuevo los valores de las UTXO de más arriba, no tenemos ninguna que sea exactamente del coste de nuestra comida. Aquí es donde sucede la magia de este mecanismo contable.

No podemos dividir las UTXO para conseguir pagar exactamente los 0,25 BTC, tenemos que crear una transacción por un valor superior. Pero aunque hoy estemos generosos e incluyamos la propina, pagar 0,33 BTC no está en nuestros planes, y el restaurante tampoco nos aceptada 0,23 BTC.

Lo que si podemos hacer es utilizar la UTXO de 0,33 BTC como entrada de nuestra nueva transacción, con la particularidad de que una de las salidas es hacia el monedero del restaurante y la otra es una UTXO de 0,08 BTC hacia nuestra dirección de Bitcoin.

También podríamos utilizar la combinación de otras dos, como pueden ser la de 0,09 BTC y 0,22 BTC, que en total es 0,31 BTC, siendo el cambio de 0,06 BTC.

Ejemplo de UTXO en Bitcoin

Una transacción puede usar cualquier combinación. Aunque nosotros no debemos preocuparnos por eso, ya que de eso se encarga nuestro monedero de Bitcoin o de la criptomoneda que estemos utilizando.

Viéndolo desde la perspectiva del restaurante, los 0,25 BTC son su UTXO, ya que es el cambio de una transacción que está dirigida a su monedero. Que ahora puede usar para pagarle a un proveedor, a sus camareros o la cuenta de luz.

¿Y las comisiones?

Las comisiones a los mineros también están incluidas en la transacción (si no sabes que es la minería puedes leer este artículo). Estas son substraídas de la UTXO que recibes como cambio.

La cuenta sería algo así:

  • Nueva UTXO = (suma de las UTXO necesarias para el pago) – (la cantidad a pagar) – (las comisiones)

Los números de nuestro ejemplo si le agregamos las comisiones serían:

  • Nueva UTXO = (0,09 + 0,22) – (0,25) – (0,01) = 0,05 BTC

Importancias y problemas de UTXO

La implementación de las UTXO es una clara ventaja para el sistema contable de la cadena de bloques, lo que ayuda a reducir la complejidad de esta.

En lugar de tener un registro de cada transacción que se realiza, con el orden y otra información importante, solo necesitamos seguir las criptomonedas no gastadas que nos llevan por todo el camino.

Cada moneda de Bitcoin solo se puede gastada una sola vez. Por tanto, si tenemos un balance en nuestro monedero es porque estas monedas se encuentran sin gastar. Las razones pueden ser:

  • Un minero las ha recibido como recompensa por minar un bloque (se las llaman transacciones coinbase)
  • Es el resultado de una transacción anterior.

Las UTXO también son una parte crítica para prevenir los ataques de doble gasto, impidiendo que se gasten monedas que no existen o que hayan sido enviadas a otro monedero.

Para eso existe los nodos de Bitcoin, que mantienen un registro, como base de datos, que contiene cada UTXO disponible para ser gastadas. Si intentamos enviar una moneda que no está en esa base de datos, los nodos rechazarían la transacción, no sería válida.

Problemas potenciales de almacenamientos

Los nodos de Bitcoin mantienen la base de datos de UTXO en la RAM, por lo que es importante que la información tenga un tamaño manejable.

A medida que Bitcoin crece, los costos de correr un nodo completo también aumentan.

Número de transacciones sin gastar en Bitcoin

Los nodos son una parte importante del ecosistema, ya que garantizan la descentralización. Cuantos más nodos hay en la red, más difícil que haya problemas como el de doble gasto. Sin embargo, si la cantidad es pequeña, es más sencillo que esos nodos se vuelvan malos y comiencen a actuar de forma contraria a los principios de Bitcoin.

Sabemos que la tecnología evoluciona con el tiempo para hacer ser más barata y tener mayor capacidad. Lo que se conoce como ley de Moore.

La misma se aplica a procesadores, diciendo que cada 2 años aproximadamente estos duplican el número de transistores y por ende la velocidad de procesamiento. Pero también podemos encontrar algo similar en las memorias RAM.

Por tanto, si el crecimiento es acorde a la baja del precio de estas memorias y/o las capacidades, entonces no hay problema. Pero si no es así, podríamos ver que solo los nodos con mayor poder adquisitivos son los que sobrevivan, que podrían no tener las mejores intenciones para la red.

El riesgo de centralización es uno de los principales argumentos en contra del incremento del tamaño de bloque de Bitcoin, y del porqué ahora tenemos Bitcoin Cash.

El desarrollador de Bitcoin Gavin Andresen describe muy bien todo esto en el artículo llamado UTXO.

Un bloque de un megabyte da cabida a unos 100 millones de transacciones de 500 bytes al año. Si cada una de ellas aumentara el conjunto de UTXO en 500 bytes, el conjunto de UTXO crecería 50 gigabytes al año.

El tamaño de los bloques de un megabyte establece un límite máximo para que la base de datos UTXO pueda crecer cada año. Luego continúa:

Permitir más transacciones sin otros cambios muy probablemente aceleraría el crecimiento del conjunto UTXO, haciendo más caro, más rápidamente, el funcionamiento de un nodo de validación completa.

Nota

Eso si, el artículo de Andresen en realidad esta a favor de aumentar el tamaño del bloque. Ya que considera que el impacto en el tamaño del conjunto UTXO no es tan grande como otros piensan.

Y si bien esta a favor de las soluciones de segunda capa, la realidad es que esta son complejas de implementar y es necesario agrandar el bloque a corto plazo antes de que lleguen estas mejoras.

Pero todo esto es tema para otro artículo, solo quería hacer esa aclaración. Ya que si bien habla sobre el tema del crecimiento de las UTXO, la realidad es que lo hace para justificar el aumento del tamaño de los bloques.

Soluciones

Por suertes hay soluciones para este problema potencial del almacenamiento.

En primero lugar, los nodos no tienen por qué tener todas las UTXO en la memoria RAM. Pueden optar por otros medios de almacenamiento más baratos como los SSD o discos rígidos.

Claro que les cuesta más tiempo hacer una validación, ya que ahora tienen que leer de otros tipos de memorias que son mucho más lentas, pero no es nada grave ni le va a incurrir de demasiado tiempo. Además, tiene 10 minutos para la tarea, que es lo que tarda el próximo bloque en ser minado.

Por otro lado, los desarrolladores de Bitcoin, y cualquier persona que quiera colaborar, siempre se encuentran nuevas formas de mejorar el mecanismo de transacciones para hacer que esta base de datos sea más óptima.

Como última opción está la tecnología conocida como Testigo Segregado o Segwit, que es una solución parcial, ya que ralentiza el crecimiento de la base de datos de UTXO.

La propia documentación de Bitcoin Core dice:

Segwit mejora la situación aquí haciendo que los datos de la firma, que no afectan al tamaño del conjunto UTXO, cuesten un 75% menos que los datos que sí afectan al tamaño del conjunto UTXO. Se espera que esto anime a los usuarios a favorecer el uso de transacciones que minimicen el impacto en el conjunto de UTXO para minimizar las tarifas, y que anime a los desarrolladores a diseñar contratos inteligentes y nuevas características de manera que también minimicen el impacto en el conjunto de UTXO.

El modelo UTXO vs el modelo contable

La mayoría de los sistemas financieros, incluyendo los bancos y otras criptomonedas, no utilizan el modelo UTXO.

Los usuarios, en lugar de controlar muchas criptomonedas en específico, tienen una o varias cuentas, cada una con sus balances.

El modelo tradicional permite a las instituciones financieras y comerciantes debitar y agregar a cada cuenta individual una cantidad precisa de dinero, evitando así problemas de cambios o selección de monedas.

Problemas de fiabilidad en el modelo contable

El beneficio de un sistema contable tradicional llega con un costo, que es el de la transparencia y audibilidad. Es muy difícil saber la cantidad exacta de dinero que hay depositado en las cuentas de los bancos de un país.

Además, la mayoría de los modelos contables están plagados de problemas como los reembolsos y las cuentas sobre giradas.

En su lugar, las transacciones de Bitcoin pueden ser referenciadas específicamente a los UTXO que le dio origen, entonces hay cero probabilidades de que una transacción inválida sea agregada a la cadena de bloques.

Ventajas de privacidad en el modelo UTXO

El modelo UTXO ofrece beneficios en él área de la privacidad al usuario. Los usuarios de Bitcoin pueden gestionar varias UTXO separadas al agruparlas en una única dirección.

Al utilizar múltiples direcciones de recepción para los UTXO, el usuario puede esconder del conocimiento público la conexión entre las UTXO. Si observamos la cadena de bloques, es difícil saber cual UTXO le corresponde a cual usuario.

Bitcoin hace posible que sea una trivialidad generar nuevas direcciones. Mientras que en el sistema contable, especialmente con el tradicional sistema financiero, hacerse varias cuentas es algo difícil o hasta prohibido. El usuario está forzado a mantener todo o la mayoría de sus fondos en una cuenta.

Las empresas de análisis de cadenas de bloques intentan socavar la privacidad de Bitcoin y determinar la propiedad de los UTXOs basándose en una variedad de métodos. Sin embargo, estos métodos se basan en suposiciones y pruebas circunstanciales más que en una lógica rigurosa.

Alternativas

Hoy nos concentramos especialmente en Bitcoin para los ejemplos y para definir lo que son las UTXO, pero existe muchas otras criptomonedas que implementaron un sistema similar. Algunos nombres son Bitcoin Cash, Litecoin y Komodo, entre otras.

Pero también hay muchas otras opciones que utilizan otros mecanismos de contabilidad, como es el caso de Ethereum. Este utiliza un modelo de transacciones.

El resultado es un mejor aprovechamiento del espacio y un código más simple para trabajar con él. Sin embargo, se pierde algo de privacidad en las transacciones con esto, y además la escalabilidad también se ve afectada con el paso del tiempo.

Este es uno de esos temas en el que nunca llegaremos a una solución en particular, ya que cada desarrollador de blockchain te dará una respuesta diferente. Y esto se debe a que no existe una solución perfecta y todas tienen sus ventajas y desventajas, así que dependerá mucho del contexto en el que se apliquen.

Resumen

  • Bitcoin no tiene un sistema de contabilidad con balances. En su lugar, las monedas son poseidas por los usuarios de Bitcoin.
  • Una UTXO es lo que sobra una vez que realizamos una transacción y no queremos gastar todos nuestros BTC.
  • Una vez confirmada la transacción, podemos utilizar ese saldo como entrada de una nueva transacción para enviar las criptomonedas a otra persona.
  • Son las responsables de que comience y finaliza una transacción.
  • El modelo UTXO hace que Bitcoin sea más auditadle, transparente y eficiente que el sistema tradicional, que necesita de cuentas, balances y terceros.

Conclusión

La mayoría de las criptomonedas utilizan el modelo de UTXO para gestionar las criptomonedas de cada usuario. También existen algunas excepciones, como vimos en el caso de Ethereum, que se parece más a un modelo contable.

Lo que debe quedarnos claro es que en el modelo del que hablamos mayoritariamente en el artículo es uno donde las UTXO son las entras de otras transacciones UTXO, que a su vez tendrás nuevas UTXO como salida. Así se va formando una cadena.

Estas salidas de transacciones o UTXO las podemos desbloquear con la clave privada, por eso se dice que “tu clave privada, tus monedas”.

Quizás es un tema un poco complejo para aprender cuando lo lees la primera vez, pero una vez que comienzas a comprender ciertos términos y conceptos todo se vuelve mucho más simple de entender.

Acerca del autor

Criptotario

Me llamo Martin, soy ingeniero y apasionado de las inversiones y la tecnología. Me gusta mucho leer libros y todo aquello que me haga mejorar día a día.

Agrega un Comentario

Haz clic aquí para añadir un comentario