¿Qué es una salida de transacción no gastada de Bitcoin (UTXO)?

La guía para principiantes sobre el modelo UTXO de Bitcoin 📕
La salida de transacción no gastada (UTXO) es la técnica que utiliza el protocolo de Bitcoin para rastrear saldos a medida que se mueven entre billeteras de criptomonedas.
Cuando se trata de rastrear y gestionar saldos individuales de criptomonedas, los protocolos basados en blockchain suelen utilizar uno de dos modelos contables diferentes.
Uno se llama el modelo de Cuenta/Saldo. Proyectos como Ethereum, Tezos y EOS utilizan este modelo para rastrear saldos a medida que los usuarios de blockchain ejecutan transacciones. El otro se llama el modelo de Salida de Transacción No Gastada (UTXO).
Bitcoin y muchas otras criptomonedas como Litecoin, Cardano y Dogecoin utilizan el modelo UTXO.
Pero, ¿qué es exactamente, cómo funciona y cuáles son las ventajas de UTXO en comparación con el modelo de Cuenta/Saldo?
Entendiendo el modelo UTXO 💻
Historial
Adam Back y el fallecido Hal Finney fueron dos miembros del grupo de criptografía Cypherpunk que frecuentaba el autor del libro blanco de bitcoin, Satoshi Nakamoto. Se les atribuye el desarrollo del modelo UTXO de manera independiente entre 1997 y 2004 respectivamente.
Cuando el creador de Bitcoin Satoshi Nakamoto lanzó el protocolo en 2009, se convirtió en el primer sistema de moneda digital operativo en implementar el modelo UTXO.
Tanto Hal Finney como Adam Back han sido sospechosos durante mucho tiempo de ser Satoshi Nakamoto, aunque nunca se ha probado con certeza.
UTXO de un vistazo
Cuando envías bitcoin a alguien, varios pasos ocurren programáticamente. Uno de los primeros pasos en el proceso de transacción es que tu billetera de criptomonedas escanee la blockchain para conocer la cantidad de fondos que tienes. Estos fondos se conocen como salidas de transacción no gastadas (UTXOs).
Puedes pensar en los UTXOs como el cambio suelto que queda de transacciones anteriores de bitcoin.
Los fondos se consideran "no gastados" porque están disponibles para que los envíes a alguien o los muevas a otra billetera. Se les llama "salidas de transacción" porque fueron creadas a partir de transacciones anteriores.
Si gastas $12 en el almuerzo usando un billete de $20, te quedaría un billete de $8. En este ejemplo, el sobrante de $8 sería una salida de transacción no gastada. Volvería a tu billetera listo para ser utilizado para comprar algo más.
Así es exactamente como funcionan los UTXOs de bitcoin. Cuando realizas una transacción, las salidas de transacciones anteriores de bitcoin, es decir, tu cambio suelto de bitcoin, se utilizan como entradas para nuevas transacciones.
Otra comparación clave entre las transacciones de efectivo físico y los UTXOs es que ambos deben ser gastados en su totalidad y no pueden ser subdivididos. Si tienes un UTXO de 5 bitcoin y quieres enviarle a alguien 1 BTC, tendrías que enviar el UTXO completo por valor de 5 bitcoin y recibir un nuevo UTXO a cambio por valor de 4 BTC menos cualquier tarifa.
Al igual que en el ejemplo anterior donde entregas un billete de $20 completo para pagar un almuerzo de $10.
Cuando un UTXO es gastado, se considera "consumido" y se elimina técnicamente de la circulación.
Cualquier cambio sobrante se genera como un UTXO completamente nuevo. Esta parte del sistema UTXO es cómo Bitcoin resuelve el problema del doble gasto.
Así como no puedes darle físicamente a un comerciante un billete de $5 y luego darle el mismo billete de $5 a otra persona, un usuario de bitcoin no puede utilizar con éxito la misma salida de transacción no gastada en dos transacciones digitales separadas.
Cuando una persona intenta gastar el mismo UTXO dos veces, las dos transacciones terminan en un mempool, una especie de sala de espera para transacciones pendientes. Permanecen aquí hasta que mineros exitosos que ganan la competencia de prueba de trabajo las agrupan en nuevos bloques.
Puedes aprender más sobre este proceso en nuestro artículo del Centro de Aprendizaje de Kraken ¿Qué es la minería de bitcoin?.
Incluso si ambas transacciones se agrupan en dos bloques separados y se procesan simultáneamente, debido a la marca de tiempo, una de las transacciones sería verificada antes que la otra. Después de que haya pasado un número de confirmaciones (nuevos bloques añadidos a la cadena de bloques), otros nodos marcarían la segunda transacción inválida y la rechazarían.
Transacciones de Coinbase
La única vez que una transacción de bitcoin no tiene entradas es cuando se crea BTC recién acuñado a partir de la minería.
Conocida como una transacción coinbase, esta representa la primera transacción en cada nuevo bloque.
Cada satoshi (las subunidades de bitcoin) en circulación puede ser rastreado utilizando el libro mayor transparente de la cadena de bloques hasta su respectiva transacción coinbase.
¿Por qué Bitcoin utiliza el modelo UTXO?
Saldo de la cuenta
Para identificar el saldo de un usuario, también conocido como conjunto UTXO, el software de billetera cripto escanea la blockchain para encontrar todos los UTXOs asociados con la dirección pública de la billetera correspondiente.
La suma total de todos los UTXOs proporciona un recuento preciso de cuánto cripto controla el propietario de la billetera.
Cuando se gasta un UTXO, la dirección pública de la billetera del destinatario se asigna a la cantidad y un nuevo UTXO se registra en la blockchain una vez ejecutado.
Almacenamiento
Los UTXOs de Bitcoin se registran en varias transacciones que se almacenan en bloques en la blockchain de Bitcoin. Sin embargo, esta información no está claramente indexada, por lo que puede ser difícil buscar y recopilar metadatos rápidamente.
Al utilizar software de billetera como el cliente Bitcoin Core, los metadatos UTXO se almacenan e indexan utilizando una base de datos LevelDB. LevelDB es un sistema de almacenamiento de código abierto creado por Google en 2011 y hace que localizar UTXOs sea mucho más rápido.
El cliente Bitcoin Core es un software popular utilizado para conectarse a la red de blockchain de Bitcoin. Originalmente creado por Satoshi Nakamoto, Bitcoin Core ahora es mantenido por una comunidad de desarrolladores voluntarios.
UTXOs bajo el capó 🚗
A un nivel más técnico, hay cuatro partes principales en una transacción:
- Versión: Esto informa a los nodos de la red qué versión del software cliente se está utilizando. Diferentes versiones siguen diferentes reglas para verificar los datos de la transacción.
- Tiempo de bloqueo: Este es el tiempo que determina cuán rápido se agrega una transacción a la blockchain. Esta entrada dicta cuál es el momento más temprano posible para que la transacción sea procesada por los nodos de minería.
- Entrada: Información que apunta a la fuente de fondos o transacción anterior donde se produjo el UTXO. La entrada también contiene algo llamado el "script de desbloqueo".
- Salida: Información sobre el valor que se está transfiriendo, la billetera a la que se está reasignando la propiedad de los fondos y los nuevos UTXOs formados. La salida también contiene un "script de bloqueo".
¿Cómo son diferentes los UTXOs del efectivo físico?
Las principales diferencias entre la analogía de los billetes físicos y el modelo UTXO son que bitcoin y otros criptoactivos basados en UTXO no están limitados a cantidades fijas, es decir, $5, $10, $15, etc. Cualquier cantidad de bitcoin (hasta ocho decimales) puede ser una salida de transacción no gastada.
Por ejemplo, puedes tener 0.0003847 BTC sobrantes de una transacción.
Esta cantidad se convertiría en un nuevo UTXO que debe gastarse en su totalidad si se utiliza y no puede dividirse en cantidades más pequeñas.
Digamos que John tiene un saldo de billetera de 1 bitcoin. Su saldo y la composición de ese saldo son dos cosas diferentes, de la misma manera que podrías tener $100 en tu billetera, pero podría estar compuesto por cuatro billetes de $20, dos billetes de $5 y uno de $10.
Digamos que la composición del saldo de 1 BTC de John está formada por 5 diferentes salidas de transacción no gastadas.
- 0.138 BTC
- 0.1 BTC
- 0.004 BTC
- 0.73 BTC
- 0.028 BTC
John quiere enviar 0.6 BTC a Jane. Para hacer esto, el software de billetera de John agrupará automáticamente cualquier número de UTXOs que controla para cubrir esta transacción más cualquier tarifa de minero involucrada para procesarla.
En este ejemplo, digamos que el software de billetera de John envía automáticamente el UTXO de bitcoin de John por un valor de 0.73 BTC a Jane y devuelve la cantidad sobrante menos las tarifas de transacción a John como un nuevo UTXO.
Esta cantidad se envía automáticamente a una dirección de cambio; una dirección separada vinculada a tu cartera de criptomonedas.
Scripts de bloqueo y desbloqueo 🔒
Cuando se crean los UTXOs, se bloquean utilizando la dirección pública de la cartera del destinatario. Para usar ese UTXO como entrada en una nueva transacción, primero debe desbloquearse utilizando la firma digital del remitente.
Esta es otra cosa importante que entender sobre las transacciones de bitcoin. Cuando se realiza una transacción, el bitcoin no se mueve digitalmente de una cuenta a otra. En su lugar, se desbloquean, se reasignan a un nuevo propietario y luego se bloquean nuevamente.
Esto significa que solo el nuevo propietario puede desbloquear los fondos utilizando su firma digital y transferirlos a otro lugar; a otra persona o a otra cartera bajo su control.
El script es un lenguaje de programación utilizado por Bitcoin para procesar transacciones, incluyendo el bloqueo y desbloqueo de UTXOs.
- Script de bloqueo (ScriptPubKey): Cuando un UTXO está bloqueado, el script de bloqueo (conocido como ScriptPubKey) establece las condiciones que deben cumplirse antes de que el UTXO pueda usarse como entrada. Esto generalmente implica demostrar que posees la clave privada que corresponde a la dirección pública de la cartera utilizada para bloquear el UTXO proporcionando una firma digital.
- Script de desbloqueo (ScriptSig): Para desbloquear un UTXO, debes cumplir con las condiciones establecidas por el script de bloqueo, es decir, proporcionar una firma digital que demuestre que controlas las claves privadas correspondientes a la clave pública utilizada para bloquear el UTXO.
Esto impide que cualquier otra persona pueda acceder y gastar esos fondos.
¿Qué es el polvo de Bitcoin?
El polvo de Bitcoin se refiere a UTXOs que contienen pequeñas cantidades de satoshis sobrantes de transacciones anteriores.
Por sí solos, estas cantidades minúsculas de BTC costarían más en tarifas de transacción para procesar de lo que valen, por lo que a menudo permanecen en direcciones de cambio esperando ser agrupadas con otros UTXOs y gastadas.
¿Qué es un ataque de dusting?
Los ataques de polvo se refieren a estafadores que envían polvo a cientos de miles de diferentes direcciones de cartera. La idea detrás de esto es determinar posibles objetivos para ataques de ingeniería social.
Un estafador observará direcciones que contengan el polvo que han enviado, esperando que el propietario realice una transacción que agrupe UTXOs de diferentes direcciones vinculadas a su billetera. Debido a que los UTXOs de polvo son tan pequeños, hay una buena posibilidad de que se agrupen con otros y se utilicen como entradas.
Una vez que esto sucede, el estafador puede hacerse una idea de qué fondos tiene una persona. Luego pueden optar por incrustar mensajes de phishing en transacciones invitando al propietario a hacer clic en un enlace que descarga malware, o visitar sitios web falsos que imitan páginas de destino legítimas y piden información personal.
¿Qué tan peligrosos son los ataques de dusting de bitcoin?
Los ataques de dusting no dan acceso a los estafadores a tus fondos.
Simplemente sirven para reducir qué direcciones son controladas por una billetera de criptomonedas en particular.
Para minimizar tu riesgo de ataques de dusting, es mejor no hacer clic en enlaces ni visitar sitios web adjuntos a transacciones de polvo.
Empezar a comprar bitcoin
Ahora que has aprendido todo sobre el modelo de salida de transacción no gastada, ¿estás listo para continuar tu viaje cripto y comprar bitcoin?
Consulta nuestra guía del Centro de aprendizaje de Kraken para obtener más información sobre Cómo comprar Bitcoin (BTC) y cree una cuenta de Kraken hoy mismo.