¿Qué es una salida de transacción no gastada (UTXO) de Bitcoin?
Guía para principiantes del modelo UTXO de Bitcoin 📕
El "unspent transaction output" (UTXO) es la técnica que el protocolo de Bitcoin utiliza para rastrear los saldos a medida que se mueven entre monederos 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 los saldos a medida que los usuarios de blockchain ejecutan transacciones. El otro se llama el modelo de Unspent Transaction Output (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 del UTXO en comparación con el modelo de Cuenta/Saldo?
Comprender el modelo UTXO 💻
Historia
Adam Back y el fallecido Hal Finney fueron dos miembros del grupo de criptografía Cypherpunk que frecuentaba el autor del bitcoin white paper, Satoshi Nakamoto. A ambos 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 operativa en implementar el modelo UTXO.
Durante mucho tiempo se ha sospechado que tanto Hal Finney como Adam Back podrían ser Satoshi Nakamoto, aunque nunca se ha probado con certeza.
UTXO de un vistazo
Cuando envías bitcoin a alguien, se llevan a cabo varios pasos de manera programada. Uno de los primeros pasos en el proceso de transacción es que tu monedero de criptomonedas escanee la blockchain para verificar la cantidad de fondos que tienes. Estos fondos se conocen como salidas de transacciones 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 libremente para que los envíes a alguien o los muevas a otro monedero. Se llaman "salidas de transacciones" porque fueron creadas a partir de transacciones anteriores.
Si gastas 12 $ en un almuerzo usando un billete de 20 $, te quedaría un billete de 8 $. En este ejemplo, los 8 $ restantes serían una salida de transacción no gastada. Volvería a tu monedero listo para ser usado en otra compra.
Así es exactamente cómo 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 en efectivo físico y los UTXOs es que ambos deben ser gastados en su totalidad y no pueden subdividirse. Si tienes un UTXO de 5 bitcoin y quieres enviar 1 BTC a alguien, tendrías que enviar todo el UTXO 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 se gasta, se considera "consumido" y técnicamente se elimina de la circulación.
Cualquier cambio restante 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 físicamente darle un billete de 5 $ a un tendero y luego darle el mismo billete de 5 $ a otra persona, un usuario de bitcoin no puede usar exitosamente 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 allí hasta que los 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 Kraken Learn Center ¿Qué es la minería de bitcoin?
Incluso si ambas transacciones se agrupan en dos bloques separados y se procesan simultáneamente, debido al sellado de tiempo, una de las transacciones se verificaría antes que la otra. Después de que pasen varias confirmaciones (nuevos bloques añadidos a la blockchain), otros nodos marcarían la segunda transacción inválida y la rechazarían.
Transacciones 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 se puede rastrear utilizando el libro mayor transparente de la blockchain hasta su respectiva transacción coinbase.
¿Por qué Bitcoin utiliza el modelo UTXO?
Saldo de cuenta
Para identificar el saldo de un usuario, también conocido como un conjunto de UTXO, el software de la cartera de criptomonedas escanea la blockchain para encontrar todos los UTXO asociados con la dirección pública de la cartera correspondiente.
La suma total de todos los UTXO proporciona un cálculo preciso de cuánta criptomoneda controla el propietario de una cartera.
Cuando se gasta un UTXO, la dirección pública de la cartera 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 wallet como el cliente de Bitcoin Core, los metadatos de 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 que hace que localizar UTXOs sea mucho más rápido.
El cliente de Bitcoin Core es un software popular utilizado para conectarse a la red de la 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. Las diferentes versiones siguen distintas reglas para verificar los datos de las transacciones.
- Locktime: Esta es la cantidad de tiempo que determina la rapidez con la que una transacción se añade a la blockchain. Esta entrada dicta cuál es el tiempo más temprano posible para que la transacción sea procesada por los nodos de minería.
- Input: Información que señala la fuente de los fondos o la transacción previa donde se produjo el UTXO. El input también contiene algo llamado el “script de desbloqueo”.
- Output: Información sobre el valor que se transfiere, la wallet a la que se reasigna la propiedad de los fondos y los nuevos UTXOs formados. El output también contiene un “script de bloqueo”.
Cómo los UTXOs son diferentes del dinero en efectivo físico
Las principales diferencias entre la analogía de los billetes físicos y el modelo UTXO es que bitcoin y otros criptoactivos basados en UTXO no están limitados por 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, podrías tener 0.0003847 BTC sobrantes de una transacción.
Esta cantidad se convertiría en un nuevo UTXO que debe gastarse por completo si se utiliza y no puede dividirse en cantidades más pequeñas.
Supongamos que John tiene un saldo de 1 bitcoin en su monedero de criptomonedas. Su saldo y la composición de ese saldo son dos cosas diferentes, de la misma manera que podrías tener $100 en tu cartera, pero podría estar compuesto por cuatro billetes de $20, dos billetes de $5 y uno de $10.
Supongamos que la composición del saldo de 1 BTC de John está formada por 5 salidas de transacción no gastadas diferentes.
- 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 del monedero de John agrupará automáticamente cualquier número de UTXOs que controle para cubrir esta transacción más las tarifas de minero involucradas para procesarla.
En este ejemplo, supongamos que su software de monedero envía automáticamente el UTXO de bitcoin de John por 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 monedero de criptomonedas.
Scripts de bloqueo y desbloqueo 🔒
Cuando se crean los UTXOs, se bloquean utilizando la dirección pública del monedero del destinatario. Para usar ese UTXO como entrada en una nueva transacción, primero debe desbloquearse usando la firma digital del remitente.
Esto es otro aspecto importante a 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 desbloquea, se reasigna a un nuevo propietario y luego se vuelve a bloquear.
Esto significa que solo el nuevo propietario puede desbloquear los fondos usando su firma digital y transferirlos a otro lugar; a otra persona o a otro monedero bajo su control.
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 del monedero utilizada para bloquear el UTXO proporcionando una firma digital.
- Script de desbloqueo (ScriptSig): Para desbloquear un UTXO, debes cumplir 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í solas, estas cantidades minúsculas de BTC costarían más en comisiones de transacción 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 dusting se refieren a estafadores que envían "dust" a cientos de miles de direcciones de wallet diferentes. La idea detrás de esto es identificar posibles objetivos para ataques de ingeniería social.
Un estafador observará las direcciones que contienen el "dust" que han enviado, esperando a que el propietario realice una transacción que agrupe UTXOs de diferentes direcciones vinculadas a su wallet. Debido a que los UTXOs de "dust" son tan pequeños, hay una buena probabilidad 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 solicitan información personal.
¿Qué tan peligrosos son los ataques de dusting de bitcoin?
Los ataques de dusting no dan a los estafadores acceso a tus fondos.
Simplemente sirven para identificar qué direcciones están controladas por un monedero de criptomonedas en particular.
Para minimizar el riesgo de ataques de dusting, es mejor no hacer clic en enlaces ni visitar sitios web adjuntos a transacciones de dust.
Empieza a comprar Bitcoin
Ahora que has aprendido todo sobre el modelo de salida de transacciones no gastadas, ¿estás listo para continuar tu viaje en el mundo cripto y comprar bitcoin?
Consulta nuestra guía en el Kraken Learn Center para obtener más información sobre Cómo comprar Bitcoin (BTC) y regístrate para obtener una cuenta con Kraken hoy mismo.