Tu billetera muestra un saldo, pero Bitcoin en sí no tiene cuentas. Tiene monedas, llamadas UTXOs, y transacciones que destruyen unas monedas y crean otras nuevas.
La estructura
- Version (4 bytes).
- Entradas: cada una nombra una moneda a gastar con un outpoint (txid + índice de salida), un scriptSig y un campo nSequence de 4 bytes.
- Salidas: cada una tiene un importe en satoshis (8 bytes) y un script de bloqueo, el scriptPubKey, que dice qué se necesita para gastarla.
- nLockTime (4 bytes): el bloque o momento más temprano en que la transacción puede minarse.
- Witness (solo SegWit): firmas y scripts, fuera del txid.
Las monedas se gastan enteras
Un UTXO no se puede dividir mientras está ahí. Si tienes una moneda de 0,5 BTC y quieres pagar 0,2 BTC, gastas la moneda entera y creas dos salidas: 0,2 BTC al receptor y unos 0,3 BTC de vuelta a ti como «cambio», normalmente a una dirección fresca de tu propia billetera.
La comisión es invisible
Ningún campo dice «comisión». La comisión es simplemente las entradas menos las salidas. En el ejemplo anterior, si las salidas suman 0,4999 BTC, el minero puede reclamar los 0,0001 BTC restantes. Olvida la salida de cambio y toda la diferencia va al minero.
Qué comprueba un nodo
- Cada entrada gasta una moneda que existe y sigue sin gastar.
- El script de cada entrada, junto con el script de bloqueo de la moneda (y el witness), se ejecuta con éxito.
- Las salidas no suman más que las entradas.
- Se cumplen los bloqueos temporales.
Acuñar monedas nuevas
La excepción a «las entradas pagan las salidas» es la transacción coinbase, la primera de cada bloque, que crea la recompensa de bloque de la nada. Sus salidas solo pueden gastarse tras 100 bloques más.
Límites de política
Bitcoin Core también aplica reglas de relay sobre el consenso. Una transacción estándar puede tener como máximo 400.000 unidades de peso. Las salidas que cuestan más gastar de lo que valen se llaman dust y no se retransmiten. Con la feerate de dust por defecto, eso es menos de 546 satoshis para una salida P2PKH legacy y menos de 294 satoshis para una salida P2WPKH SegWit nativa.
Conclusión
Cada bitcoin que posees es una salida concreta de una transacción pasada, bloqueada por un script que solo tu clave puede satisfacer.