UTXO
Una salida de transacción no gastada
Una UTXO es una salida de transacción no gastada (Unspent Transaction Output).
Toda transacción de bitcoin crea salidas que pueden consumirse como entradas en transacciones futuras. Las UTXOs son simplemente las salidas de transacción que todavía no han sido consumidas y que aún pueden usarse para gastar.
Así que, si piensas en los bitcoins como parte de un gran grafo de transacciones, las UTXOs están en sus extremos.
La colección de todas las UTXOs se llama conjunto de UTXOs (UTXO set).
Uso
¿Cómo se usan las UTXOs en Bitcoin?
Seguir las UTXOs es útil por dos motivos:
1. Validar transacciones
Cuando tu nodo recibe una nueva transacción, necesita validar que todas sus entradas referencian salidas que todavía no han sido gastadas. Si todas las entradas son salidas no gastadas (UTXOs), la transacción es válida. Si intenta gastar una salida ya gastada, es inválida y será rechazada.
2. Calcular el saldo de direcciones
El "saldo" de una dirección es la suma de todas las UTXOs bloqueadas a esa dirección.
Es importante notar que los bitcoins no "viven" dentro de las direcciones. Los bitcoins viven dentro de salidas, y una dirección es esencialmente una traba que puede colocarse sobre una salida. Por lo tanto, el saldo de una dirección es solo la suma de todas las UTXOs bloqueadas a ella.
Ubicación
¿Dónde se almacenan las UTXOs?
En Bitcoin Core, todas las UTXOs se almacenan en la base de datos chainstate:
~/.bitcoin/chainstate
Esta es una base de datos separada que reside en la memoria (RAM), lo que hace que el acceso sea más rápido que revisar los archivos brutos de la blockchain. Es simplemente una base LevelDB de clave:valor:
- Clave – Formada por el TXID:VOUT de cada salida (llamado "outpoint"). Cada salida en la blockchain tiene su outpoint único.
- Valor – Contiene: la altura del bloque de la UTXO, si proviene de una transacción coinbase, el valor en satoshis y el código de bloqueo colocado en la salida.
El chainstate se actualiza con cada nueva transacción minada: las UTXOs gastadas se eliminan y las nuevas salidas se añaden.
Puedes ver información básica sobre el conjunto de UTXOs de tu nodo con bitcoin-cli gettxoutsetinfo.
Resumen
En pocas palabras
Una UTXO es solo un nombre elegante para una salida de transacción que aún no se ha gastado. Por lo tanto, el conjunto de UTXOs representa el suministro de bitcoins en circulación.
Hay muchas siglas en Bitcoin, pero, al final, casi siempre son nombres que suenan complejos para cosas bastante simples. No dejes que eso te desanime.