Glosario / Transacciones y comisiones
UTXO
También se conoce como Salida de transacción no gastada.
- ¿Qué es un UTXO?
- Un UTXO es una porción no gastada de bitcoin que reside en una dirección, creada entera por una transacción anterior y gastable solo en su totalidad, nunca en parte.
Bitcoin no tiene cuentas ni saldos. En su lugar, cada nodo hace el seguimiento de un conjunto vivo de UTXO, y el saldo de su billetera es simplemente la suma de aquellos cuyas claves tiene. Gastar destruye las monedas que usted elige y crea otras nuevas, y por eso mover 100.000 satoshis puede costar más que mover 10.000.000.
Cómo funciona
El registro público es una colección de monedas, no una tabla de totales por cuenta. Cada salida registra dos cosas: un monto en satoshis, almacenado como un número de ocho bytes, y un script de bloqueo que indica qué hay que presentar para desbloquearla. Hasta que algo la gaste, esa salida permanece en el conjunto de UTXO, que todo nodo completo conserva y actualiza bloque a bloque.
Un gasto es una destrucción seguida de una creación. Su billetera elige salidas enteras como entradas, demuestra que puede desbloquearlas y escribe salidas nuevas. No se resta nada en el mismo sitio, así que pagar 0,3 BTC con una moneda de 1 BTC supone crear una moneda de 0,3 para el beneficiario y una moneda de cambio de aproximadamente 0,7 para usted. La moneda con la que empezó desaparece del conjunto para siempre, y dos elementos ocupan el lugar donde había uno.
Bitcoin Core guarda el conjunto completo en una base de datos LevelDB llamada chainstate (estado de la cadena) y mantiene parte de él en caché en la memoria, con la opción -dbcache, que por defecto vale 1.024 MiB, o 450 en máquinas con menos de 4 GiB de RAM. Ese conjunto, y no el historial completo de bloques, es lo que consulta un nodo para responder la única pregunta que importa cuando llega un pago: ¿apunta esta entrada a algo que todavía existe? Un nodo podado puede descartar cientos de gigabytes de bloques antiguos y seguir validando perfectamente, porque el conjunto de UTXO es el estado.
Hay dos curiosidades en los bordes. Los 50 BTC pagados en la transacción coinbase del bloque génesis el 3 de enero de 2009 nunca se escribieron en la base de datos, así que nunca podrán gastarse. Y en 2010, antes de que se hiciera cumplir el BIP30, dos transacciones coinbase duplicaron otras anteriores y las sobrescribieron, lo que borró 100 BTC del conjunto; la regla que prohíbe los identificadores de transacción duplicados existe por esos bloques.
Las monedas recién minadas también llegan bloqueadas. Una salida coinbase no puede gastarse durante 100 bloques, aproximadamente 16 horas, que es la salvaguarda del propio protocolo frente a las reorganizaciones de la cadena breves.
Por qué importa cuando compra bitcoin
Cada retiro de un exchange crea exactamente una moneda en su billetera, así que la forma de sus tenencias la decide la frecuencia con que pulsa ese botón. Una compra semanal que se retira cada semana le deja 52 monedas al cabo de un año; las mismas compras, retiradas cada trimestre, le dejan cuatro. Swan y River organizan ambos las compras recurrentes en torno a esto y lanzan los retiros al alcanzar un umbral en lugar de con cada orden, y el motivo es aritmético: gastar más adelante cada una de esas monedas cuesta alrededor de 68 bytes virtuales de espacio de bloque.
La segunda consecuencia es la procedencia. Una moneda no es efectivo anónimo. Lleva consigo el historial de la transacción que la creó, y un retiro desde cualquier plataforma que verifique la identidad, lo que incluye casi todos los exchanges reseñados en este sitio, produce una moneda documentada como suya en una base de datos de cumplimiento. Las compras a través de Relai, que entrega directamente en su propia billetera, llegan con el mismo rastro documental. Mantener esas monedas separadas de las adquiridas en otros lugares solo es posible porque, para empezar, son objetos independientes.
En tercer lugar, restaurar una billetera no restaura monedas. Una frase semilla regenera claves; después, el software tiene que buscar en la cadena las salidas que esas claves pueden desbloquear. Si usa una ruta de derivación poco habitual, o restaura en un software que no comprueba su tipo de dirección, las monedas siguen a salvo en el conjunto de UTXO mientras su saldo marca cero. Guardar un descriptor de salida junto a las palabras de su frase semilla es lo que evita esa tarde de pánico.
Seguimiento de una compra de 0,02 BTC a través del conjunto de UTXO
Compre 0,02 BTC en Kraken y retírelos. El exchange agrupa por lotes su pago con los de otros clientes, y una salida de ese lote, con un valor de 2.000.000 de satoshis, queda bloqueada en su dirección. Su billetera tiene ahora una sola moneda.
Dos meses después, usted paga 500.000 satoshis a alguien cuando la comisión por vB para el siguiente bloque es de 5 sat/vB. Gastar una entrada SegWit nativa y crear dos salidas ocupa alrededor de 141 bytes virtuales, así que la comisión es de 705 satoshis. Ocurren tres cosas a la vez: la moneda de 2.000.000 de satoshis sale del conjunto de UTXO, aparece una moneda de 500.000 satoshis para el destinatario y aparece una moneda de cambio de 1.499.295 satoshis en una dirección nueva que controla su billetera.
Su saldo pasó de 2.000.000 a 1.499.295 satoshis. El conjunto global creció en un elemento, que es el costo silencioso de cada pago que hace cualquiera y la razón por la que los nodos necesitan una base de datos y no una hoja de cálculo.
UTXO frente a salida de transacción
Todo UTXO es una salida de transacción; la mayoría de las salidas de transacción dejaron de ser UTXO hace mucho tiempo. Una salida es una línea permanente del historial, que todavía puede leerse una década después en el bloque que la llevó. Un UTXO es un derecho sobre el presente. En el instante en que alguien gasta una salida, esta sale del conjunto de UTXO aunque permanece en la cadena para siempre, y esa brecha es la razón por la que un nodo puede desechar bloques antiguos pero nunca el estado actual.
UTXO frente a polvo
El polvo es un UTXO con un problema económico, no un tipo de objeto diferente. Pertenecer al conjunto de UTXO no dice nada sobre si vale la pena mover una moneda. Una salida de 600 satoshis es exactamente igual de válida que una salida de 6 BTC, pero a 30 sat/vB la entrada que la gasta cuesta alrededor de 2.040 satoshis, más de tres veces lo que contiene. Por eso una billetera puede mostrar un saldo que no se puede gastar por completo.