¿Qué es UTXO Bitcoin?

UTXO
Blockchain Todo sobre Bitcoin (BTC) Wikicripto

¿Qué es UTXO Bitcoin?

¿Sabes qué es UTXO? En español se trata de una transacción de salida no gastada y se trata de una de las piezas más importantes del funcionamiento de la tecnología blockchain que conforma la primera criptomoneda del mundo creada por Satoshi Nakamoto.

Como la mayoría de nosotros sabemos, antes de Bitcoin se perseguía la idea de crear un tipo de dinero totalmente digital, sin embargo, a esto se oponía la existencia del Doble Gasto. Por ello, Satoshi Nakamoto empleó diversas técnicas con las cuales logró desarrollar el primer sistema monetario totalmente descentralizado y digital. En este artículo te contaremos todo sobre qué es UTXO de Bitcoin y para qué sirve.

¿Cómo UTXO evita el doble gasto?

Como ya sabemos, las transacciones se componen de entradas y salidas. Si juntamos dichas entradas y salidas con las monedas a enviar y las firmas criptográficas tendremos como resultado el hash de una transacción o un HASH ID.

Como entradas entendemos los Hash de una determinada transacción que recibe el nombre de monedero y no se ha empleado previamente. Estas serían las UTXO. Por otro lado, la salida es la dirección de destino en la que se crean UTXO para posteriormente emplearlas en una determinada transacción.

Cabe destacar que una misma dirección puede contar con infinitas UTXO y por ello las definimos como un conjunto de transacciones. Cuando un usuario quiere enviar una transacción, dicha transacción debe nutrirse de transacciones que no ha recibido y no han sido gastadas, es decir, de UTXO. Con esto entendemos que una persona puede usar una misma transacción para varias UTXO. Las UTXO pueden formar parte de una o más direcciones de nuestro wallet.

Todos los datos que hemos visto hasta ahora nos llevan a que una UTXO solo puede utilizarse una vez y esto es crucial en el funcionamiento de la tecnología de la cadena de bloques, ya que forma parte del conjunto de herramientas que garantiza que las monedas no sean usadas más de una vez, que es lo que conocemos como doble gasto.

Probablemente, os estéis preguntando qué tan fiable es este mecanismo. La respuesta es que podemos confiar plenamente en él, puesto que es el sistema que emplea Bitcoin para contar cuántas monedas están en circulación para identificar las monedas que no han sido gastadas. Esto lo logra sumando todas las monedas contenidas en las UTXO.

¿Qué pasa con las monedas sobrantes?

Imaginemos que un usuario cuenta con 150 € repartidos en dos UTXO, pero solo quiere gastar 100. Para ello tendrá que emplear las dos UTXO. Para enviar la transacción a su amigo, tendrá que establecer como salida la dirección del amigo. Por otro lado, el wallet de nuestro usuario sigue trabajando y ha realizado una pequeña transacción de forma transparente. El wallet se habrá encargado de establecer una dirección de nuestro usuario también como salida a la que habrá asignado los otros 50 € que faltaban por gastar. A esta dirección le llamamos dirección de cambio.

Este sistema para evitar el doble gasto viene dado por el uso de la criptografía y por ello nos ofrece una gran seguridad de que el dinero ha llegado a su destino y además, nos aseguramos de que el resto del dinero sea devuelto. Todo este proceso es totalmente visible y transparente en la cadena de bloques pública de Bitcoin.

Con este funcionamiento podemos controlar nuestro dinero y sus condiciones de uso. Para poder usar el saldo de Bitcoin este debe considerarse como una UTXO en el wallet. En este caso, un usuario debe realizarse un pago como una UTXO para que dicho pago se convierta en una entrada y tenga el saldo disponible.

¿Cómo demostramos que el saldo es nuestro?

Lo primero que debemos hacer para usar el saldo que tenemos en BTC es demostrar que el saldo en cuestión nos pertenece. Para ello el primer paso es saber que cada UTXO que convertimos en una entrada realmente se trata de la salida de otra transacción previamente realizada que nos dio acceso a esas monedas. En otras palabras, todo el saldo de Bitcoin cuenta con una UTXO asociada a dicho saldo y la UTXO a su vez cuenta con un script de bloqueo.

Tal vez te hayas preguntado qué es un script de bloqueo. Un script de bloqueo se trata de un candado digital que debemos desbloquear para posteriormente poder emplearlo del saldo de dicha UTXO. Bitcoin cuenta con varios script de bloqueo. Cabe destacar que hay un código que es el que más se repite. Este es el P2PKH o Pay to Public Key Hash. 

Debemos tener en cuenta que también existen el P2SH o multisig y el P2PK que es el más primitivo de todos los scripts, entre otros. Este último script de bloqueo puede abrirse con la clave privada que da como resultado la dirección indicada en la UTXO.

Esto significa que para poder desbloquear este script de bloqueo primeramente debemos tener la dirección de Bitcoin, tener nuestra clave privada y generar la clave pública de dicha dirección. El siguiente paso es finalmente plasmar nuestra firma digital y con esta cantidad de datos verificados, por fin podremos desbloquear el saldo de dicha dirección para que poder usarlo. A continuación los nodos se encargarán de aceptar la transacción y la pondrán en el mempool mientras se espera a que los mineros hagan su trabajo.

En caso de que fallemos al realizar todo este proceso simplemente la transacción será cancelada por los nodos y como resultado no podremos usar el saldo. Este proceso es conocido como script de desbloqueo. Debemos tener en cuenta que todo este proceso criptográfico se lleva a cabo de forma transparente y automática para los usuarios de un wallet. Todo este proceso lo ejecuta el propio wallet.

UTXO

¿Existen UTXO en otras criptomonedas y cadenas de bloques?

El funcionamiento de las UTXO es tan eficiente que tras su lanzamiento no tardó en ser adoptado en los sistemas de numerosas criptomonedas. Está claro que cada blockchain es capaz de ajustar este concepto de distintas formas según su funcionamiento. 

Cada cadena de bloques cuenta con sus propias funciones adicionales y las UTXO deben ajustarse a ellas según el protocolo donde se ejecuten. Un ejemplo de estas blockchains son la de Monero o de Zcash.