Deep Dive

Bitcoin no tiene saldos, solo salidas no gastadas

El estado de consenso de Bitcoin es un conjunto de salidas de transacción no gastadas, no un libro de cuentas. El saldo es una suma que hace la billetera, y de ese solo hecho salen el cambio, las comisiones, el polvo y el análisis de cadena.

8 min de lecturaConjunto de UTXO
Bitcoin no tiene saldos, solo salidas no gastadas

No hay ningún saldo guardado en ninguna parte

Una billetera muestra un número, así que es natural suponer que ese número está guardado en algún lado: una fila en una tabla, un campo en una cuenta, una cifra que los nodos debitan y acreditan. No lo está. Nada en las reglas de consenso de Bitcoin guarda un saldo, y nada en ellas guarda una identidad.

Lo que la red guarda es un conjunto de salidas de transacción no gastadas, que suele abreviarse como UTXO. Cada satoshi que existe está dentro de exactamente una de ellas. Una billetera produce el saldo buscando las salidas que puede firmar y sumando sus montos. Por eso dos billeteras restauradas desde la misma seed pueden informar honestamente saldos distintos: escanearon hasta profundidades de derivación diferentes. El saldo nunca fue un hecho sobre la red. Es un hecho sobre lo que encontró un programa determinado.

Este texto da por sabido qué es una transacción y cómo se confirma. Trata sobre el estado que una transacción modifica.

Una salida es un monto y una condición, y es indivisible

Una salida tiene dos partes y ninguna más: un valor en satoshis y un scriptPubKey, la condición que hay que satisfacer para gastarla. No hay campo de propietario ni etiqueta. Una transacción consume salidas existentes como entradas y crea salidas nuevas.

La propiedad de la que cuelga todo lo demás es que una entrada consume su salida por completo. No existe el gasto parcial ni un mecanismo para hacerlo. La documentación para desarrolladores de Bitcoin lo dice directamente: "el valor completo de las UTXO incluidas debe gastarse o entregarse a un minero como comisión de transacción" (documentación para desarrolladores de Bitcoin, Transactions).

De ahí sale el cambio. Con una sola salida de 0,4 BTC, pagar 0,1 BTC a alguien no permite partirla. Se gasta la salida entera de 0,4, se crea una salida de 0,1 para quien recibe, y se crea una segunda salida que devuelve el resto a una condición bajo control propio. La salida de cambio no es una comodidad. Es la única forma de no regalarle el resto a un minero.

La definición de moneda del whitepaper es la misma idea vista desde el otro lado: "una cadena de firmas digitales" ("a chain of digital signatures"), donde cada dueño la firma y la pasa al siguiente (Bitcoin: A Peer-to-Peer Electronic Cash System, sección 2). Una UTXO es un eslabón de esa cadena, sin gastar.

El conjunto de UTXO es el estado de consenso

Validar una transacción plantea dos preguntas: ¿cada entrada referencia una anotación que está ahora mismo en el conjunto, y el testigo satisface la condición de esa anotación? Nunca pregunta si una cuenta tiene suficiente. Conectar un bloque borra las anotaciones que sus transacciones consumieron e inserta las que crearon, y esa es toda la transición de estado.

El conjunto no es entonces un índice que alguien mantiene por comodidad. Es el estado, y cada nodo completo que uno corre guarda una copia en su base de datos chainstate. Bitcoin Core lo reporta mediante gettxoutsetinfo, cuyo campo txouts es "el número de salidas de transacción no gastadas" (referencia RPC de Bitcoin Core 31.0.0). Al 17 de agosto de 2026 esa cuenta rondaba los 167 millones (Blockchain.com, tamaño del conjunto UTXO, una cifra que se mueve a diario).

La comisión es lo que no se reclamó

No hay campo de comisión en una transacción de Bitcoin. Al serializar una aparecen una versión, una lista de entradas, una lista de salidas, los testigos y un locktime. La comisión es una resta:

comisión = suma(valores de entrada) - suma(valores de salida)

Todo lo que no se asigna a una salida se lo lleva un minero. Gastar una salida de 1 BTC y crear una sola salida de 0,01 BTC para quien recibe equivale a pagar una comisión de 0,99 BTC. La transacción es perfectamente válida, y nada dentro de ella la distingue de una comisión deliberada, porque no hay nada que distinguir.

El caso mejor documentado tiene exactamente esa forma. En el bloque 807.057, minado el 10 de septiembre de 2023, una transacción gastó una única entrada de 19,89514072 BTC, creó cinco salidas que sumaban 0,0740544 BTC, y ahí se detuvo. Los 19,82108632 BTC restantes fueron al minero (transacción d5392d47...). Paxos reconoció que la transferencia era suya, y F2Pool, que minó el bloque, decidió devolver la comisión el 15 de septiembre (Cointelegraph, 15 de septiembre de 2023). Nada en el protocolo exigía esa devolución, y nada en él habría evitado la pérdida.

Bitcoin Core trata esto como un riesgo permanente. Su billetera se niega por defecto a enviar una transacción cuya comisión absoluta supere 0,1 BTC, el valor por defecto de -maxtxfee (src/wallet/wallet.h), y sendrawtransaction rechaza una tasa superior a 0,10 BTC por kvB salvo que se anule maxfeerate (src/node/transaction.h). Esas barandas existen porque la comisión es implícita y una lista de salidas mal armada falla en silencio.

El costo depende del número de entradas, no del monto

Los mineros venden espacio de bloque, así que la comisión que necesita una transacción es su tamaño multiplicado por una tasa. El tamaño lo determina cuántas entradas se gastan, y una entrada es mucho más cara que una salida. El cálculo de polvo de Bitcoin Core deja los números por escrito: una salida P2WPKH gastable se serializa en 31 bytes y necesita una entrada de al menos 67 bytes virtuales para gastarse, una vez aplicado el descuento de testigo definido en BIP 141 (src/policy/policy.cpp).

Los montos no aparecen en ese cálculo. Gastar una salida de 0,5 BTC y gastar una de 20.000 satoshis cuesta lo mismo. Una transacción que barre cuarenta salidas pequeñas es aproximadamente cuarenta veces el tamaño de una que gasta una sola grande, y paga aproximadamente cuarenta veces la comisión para mover el mismo dinero.

Eso es el polvo, dicho con precisión y no como una sensación. El mismo archivo: "Si pagaras más en comisiones que el valor de la salida por gastar algo, entonces lo consideramos polvo." Con el dustRelayFee por defecto de 3.000 satoshis por kvB, una salida P2WPKH por debajo de 294 satoshis es polvo y los nodos no retransmiten una transacción que cree una. Ese umbral es un piso de política, no la línea económica. La línea económica se mueve con el mercado de comisiones: a 50 sat por byte virtual, gastar una entrada cuesta unos 3.350 satoshis, así que cualquier cosa por debajo vale menos que el acto de moverla.

Consolidar salidas pequeñas mientras las tasas están bajas es la respuesta habitual. También es un canje, y lo que se entrega a cambio es la sección siguiente.

Combinar entradas es una afirmación sobre quién las controla

La sección 10 del whitepaper admite el problema en una frase: "Algo de vinculación sigue siendo inevitable con las transacciones de múltiples entradas, que necesariamente revelan que sus entradas pertenecían al mismo dueño."

Esa frase es la base de casi todo el análisis de cadena en Bitcoin. Se la conoce como heurística de propiedad común de entradas: cuando varias salidas se gastan como entradas de una misma transacción, se asume que una sola parte controlaba todas. Es una heurística y no una regla, y CoinJoin existe justamente para falsearla, pero en transacciones corrientes se cumple lo bastante seguido como para montar un negocio encima. Meiklejohn y sus colegas la usaron en 2013 para colapsar millones de direcciones en unos pocos miles de grupos (A Fistful of Bitcoins, IMC 2013).

El coin control, elegir qué salidas gasta una transacción en lugar de dejar que decida la billetera, existe por eso. Si una salida vino de un exchange que guarda documentos de identidad y otra no, gastarlas juntas vincula las dos de forma permanente, y ninguna acción posterior lo deshace: la blockchain es pública y no olvida. Bitcoin Core incluye -avoidpartialspends, que agrupa salidas por dirección y toma todas o ninguna, y su propio texto de ayuda nombra los dos lados: "La privacidad mejora porque las direcciones se barren en su mayoría con menos transacciones y las salidas se agregan en direcciones de cambio limpias. Puede resultar en comisiones más altas" (src/wallet/init.cpp).

Conviene ver la forma del canje. Consolidar sale barato después y vincula las monedas ahora. Mantener las salidas separadas preserva la privacidad y cuesta más gastarlas. Ninguna configuración da las dos cosas, y una billetera que no expone la elección la está tomando por el usuario.

Lo que el modelo no hace

No otorga una cuenta. No hay ningún objeto en Bitcoin que acumule una posición, y por eso "mi saldo" es una abstracción del lado de la billetera y no un hecho de consenso.

No rastrea identidades. El consenso trabaja con condiciones de gasto. Una dirección es una codificación de una de esas condiciones pensada para personas, producida por el software de la billetera, y el código de validación nunca la ve.

No registra de dónde vino una moneda ni si dos monedas pertenecen a la misma persona. Las heurísticas que adivinan lo segundo funcionan por cómo se arman las transacciones, no porque el protocolo guarde la respuesta.

La abstracción es buena, y esconde cuatro cosas: las salidas se gastan enteras, el sobrante es la comisión, la cantidad de salidas es lo que se paga, y gastar dos juntas dice que están relacionadas. Cada una de esas llega tarde o temprano, casi siempre el día en que la comisión supera al pago, o el día en que una empresa con la que nunca se trató sabe qué monedas son de quién. El conjunto es el libro contable. El saldo es un resumen que alguien escribió por comodidad.

Boletín

Bitcoin, sin ruido

Qué ha pasado en Bitcoin, qué cambia de verdad, y las fuentes para que puedas comprobarnos. Un número cada vez, directo a tu correo.

  • Un correo por número, nunca una secuencia automática
  • Sin píxeles de seguimiento y sin compartir direcciones
  • Baja desde cualquier número con un clic

Recibe el próximo número

Un correo por número, sin píxeles de seguimiento, y te puedes dar de baja desde cualquiera de ellos. No compartimos tu dirección. Política de privacidad