El modelo UTXO y el modelo de cuentas resuelven el mismo problema básico de maneras distintas: permiten a una blockchain determinar quién puede gastar valor y evitan que el mismo valor se gaste dos veces. Bitcoin registra salidas de transacción no gastadas, mientras Ethereum mantiene un estado mutable asociado a cuentas, con campos como balance y nonce. La guía para desarrolladores de Bitcoin explica que una transacción válida consume outputs anteriores que todavía no han sido gastados y que cada output solo puede gastarse una vez. La documentación oficial de Ethereum describe las cuentas como objetos de estado con balance y nonce.
La diferencia no es solo teórica. Afecta a cómo una wallet construye transacciones, por qué Bitcoin crea outputs de cambio, cómo se calculan ciertas comisiones, de qué forma se filtra privacidad, por qué un usuario de Ethereum puede recibir errores de nonce y cómo el software razona sobre operaciones simultáneas. Ningún modelo es universalmente “mejor”. Cada uno introduce ventajas y costes distintos.
Puntos clave
- Bitcoin no actualiza un único campo de balance de una wallet en la blockchain. El balance se calcula a partir de los UTXO que sus claves pueden gastar.
- Ethereum mantiene estado por cuenta. Una externally owned account tiene balance y nonce; una cuenta de contrato añade código y almacenamiento.
- Una transacción de Bitcoin consume UTXO completos y crea nuevos outputs. Si los inputs superan el pago más la comisión, normalmente se crea un output de cambio.
- Ethereum utiliza el nonce de la cuenta para ordenar transacciones y evitar repeticiones conflictivas.
- Los UTXO permiten usar direcciones nuevas, pero fusionar inputs y seguir el cambio puede revelar relaciones.
- El modelo de cuentas hace intuitivos balances y contratos persistentes, aunque una dirección reutilizada deja un historial fácil de seguir.
- Las comisiones reflejan arquitecturas distintas: en Bitcoin importan el peso y los inputs; en Ethereum importa el gas requerido por la ejecución.
La diferencia fundamental
Una analogía útil es efectivo frente a un libro contable.
En un sistema UTXO, el valor existe como unidades gastables separadas. Si una wallet controla UTXO de 0,01 BTC, 0,03 BTC y 0,08 BTC, la interfaz puede mostrar 0,12 BTC, pero la cadena no almacena un campo “balance = 0,12 BTC” para esa wallet. El software identifica los outputs que sus claves pueden gastar y los suma.
La Bitcoin Developer Guide describe las transacciones como cadenas de outputs: una nueva transacción gasta satoshis recibidos en outputs anteriores. Cuando un output se utiliza como input, ya no puede volver a gastarse.
En un sistema de cuentas, el protocolo mantiene estado asociado a cada cuenta. La documentación de cuentas de Ethereum enumera campos como balance y nonce. En una externally owned account, el nonce cuenta las transacciones enviadas y solo una transacción con un nonce concreto puede ejecutarse para esa cuenta.
Simplificando, Bitcoin pregunta “¿qué outputs no gastados se consumen y qué nuevos outputs se crean?”. Ethereum pregunta “¿puede esta cuenta realizar esta transición de estado y cuál será el nuevo estado?”.
Comparación UTXO vs modelo de cuentas
| Pregunta | Modelo UTXO | Modelo de cuentas |
|---|---|---|
| Representación del valor | Outputs no gastados separados | Balance y estado asociados a cuentas |
| Ejemplo típico | Bitcoin | Ethereum |
| Forma de gastar | Consumir outputs y crear outputs nuevos | Actualizar estado de cuentas y contratos |
| Protección frente a doble gasto | Cada output puede consumirse una sola vez | Nonce y reglas de transición evitan replay/conflictos de orden |
| Cambio | Normalmente existe como nuevo output | Se actualiza el balance; no hay change output estilo Bitcoin |
| Complejidad de wallet | Coin selection, cambio, seguimiento de UTXO | Nonce, gas, contratos, aprobaciones |
| Privacidad | Direcciones nuevas, pero inputs y cambio se pueden agrupar | Historial persistente de la cuenta fácil de seguir |
| Smart contracts | Condiciones de gasto asociadas a outputs | Código y almacenamiento persistente |
| Paralelismo | Outputs independientes pueden razonarse por separado | Estado compartido puede generar conflictos |
| Problemas habituales | Fragmentación, inputs caros, coin selection | Gaps de nonce, reemplazos, reverts y gas |
Es una comparación de alto nivel. Las cadenas reales incorporan mempools, rollups, smart wallets, batching y otros mecanismos.
Cómo funciona una transacción UTXO en Bitcoin
Los inputs de Bitcoin referencian outputs creados por transacciones anteriores. La referencia oficial de transacciones documenta cómo cada input apunta a un output previo y cómo los nuevos outputs especifican valor y condiciones de gasto.
Supongamos una wallet con:
- 0,08 BTC
- 0,05 BTC
El usuario quiere enviar 0,10 BTC. Solo para este ejemplo, asumamos una comisión de 0,0002 BTC.
La wallet podría seleccionar ambos UTXO:
0,08 + 0,05 = 0,13 BTC en inputs
y crear:
0,10 BTC para el destinatario
0,0298 BTC de cambio
La diferencia es:
0,13 - 0,10 - 0,0298 = 0,0002 BTC de comisión
Los outputs originales de 0,08 y 0,05 quedan completamente gastados. Bitcoin no reduce dos saldos parciales en una tabla. Se crean nuevos UTXO para el receptor y para el cambio.
Por eso el cambio es una consecuencia del modelo. La guía de BTC-Pulse sobre outputs de cambio en Bitcoin explica su impacto sobre privacidad y contabilidad.
Cómo difiere una transacción de una cuenta Ethereum
Ahora imaginemos, solo como comparación conceptual, una cuenta tipo Ethereum con 0,13 unidades. El usuario envía 0,10 y paga un coste hipotético de ejecución de 0,0002.
Conceptualmente el estado puede pasar de:
balance = 0,13
a:
balance = 0,0298
mientras aumenta el balance del destinatario y avanza el nonce del emisor.
No hay que elegir una “moneda” de 0,08 y otra de 0,05 porque esos objetos discretos no existen en el modelo de cuentas.
El nonce es esencial. Las transacciones de una externally owned account se ejecutan en orden de nonce y una misma posición no puede convertirse en dos transacciones ejecutadas independientes. Por eso aparecen problemas como “nonce too low”, gaps de nonce o reemplazos cuando se transmiten varias operaciones desde la misma cuenta.
Los números del ejemplo son deliberadamente hipotéticos. Ethereum calcula las comisiones a partir de gas utilizado y parámetros de fee, no mediante un coste fijo de 0,0002.
Por qué una wallet de Bitcoin necesita coin selection
Como los UTXO son unidades discretas, una wallet debe escoger cuáles gastar.
Ese proceso es coin selection. Puede elegir un UTXO grande, varios pequeños o una combinación optimizada. La decisión influye en:
- tamaño de la transacción;
- comisión;
- número y tamaño de futuros outputs de cambio;
- privacidad;
- fragmentación futura.
La guía de BTC-Pulse sobre coin selection en Bitcoin desarrolla estas consecuencias.
Una wallet basada en cuentas no resuelve exactamente ese problema. Debe gestionar otras variables: gas, orden de nonces, simulación de contratos, token approvals y estado pendiente.
Cómo evita cada modelo el doble gasto
Ambos impiden que el mismo valor tenga dos gastos válidos, pero lo hacen de forma distinta.
En UTXO
Un output está gastado o no gastado. Dos transacciones pueden competir por el mismo outpoint, pero ambas no pueden quedar como gastos válidos finales en la misma historia canónica.
Las dependencias son explícitas: una transacción señala exactamente los outputs que consume.
En cuentas
El protocolo evalúa cada transición contra el estado vigente. Para una externally owned account de Ethereum, el nonce establece la secuencia. Una vez ejecutado el nonce 42 en el estado canónico, otra transacción independiente no puede ejecutarse después como otro nonce 42 válido.
La diferencia importa para desarrolladores. En UTXO, dos transacciones que consumen outputs no relacionados pueden no tocar los mismos objetos gastables. En el modelo de cuentas, aplicaciones distintas pueden modificar estado compartido.
Esto no significa que UTXO sea automáticamente más escalable. Consenso, disponibilidad de datos, diseño de ejecución, capacidades de script, red y límites de bloque también son determinantes.
Privacidad: ventajas y fugas diferentes
Una wallet UTXO puede generar naturalmente una dirección nueva para cada recepción y para el cambio. Eso reduce la reutilización simple de direcciones.
Sin embargo, combinar varios inputs crea señales de clustering. Un analista puede inferir que una misma entidad controlaba esos inputs. También puede intentar identificar qué output es el pago y cuál es el cambio.
Por tanto, una persona puede usar muchas direcciones y seguir revelando relaciones mediante su patrón de gasto.
En un sistema de cuentas, el patrón es distinto. Los usuarios suelen conservar una dirección durante mucho tiempo. Balance, llamadas a contratos, transferencias de tokens y contrapartes quedan vinculados a un historial persistente. Es cómodo, pero facilita construir un perfil público de actividad.
Ninguna arquitectura ofrece privacidad fuerte por sí sola.
Comisiones: peso de inputs frente a gas de ejecución
El modelo contable cambia qué hace cara una transacción.
Bitcoin
La comisión depende del peso de la transacción y del fee rate de mercado. Gastar más UTXO suele añadir más datos de input. Una wallet con muchos outputs pequeños puede pagar más para mover el mismo valor total que otra con un input eficiente.
Por eso coin selection y consolidación son relevantes cuando cambia la demanda de blockspace.
Ethereum
Ethereum utiliza gas para medir computación y determinados cambios de estado. Una transferencia simple de ETH tiene un perfil de gas distinto de una interacción compleja con un contrato.
No debe reducirse la comparación a “UTXO es más barato” o “cuentas es más barato”. El coste depende de la red y de lo que realmente hace la transacción.
Smart contracts y estado
Los outputs de Bitcoin contienen condiciones de gasto. Bitcoin Script puede exigir firmas, timelocks, condiciones multisig, hashes y otras reglas antes de poder consumir un output.
Los contratos de Ethereum son cuentas persistentes con código y almacenamiento. Una transacción puede llamar a un contrato que modifica estado, crea otro contrato o invoca más contratos.
El estado compartido facilita aplicaciones complejas, pero también añade riesgos de ejecución: una operación puede depender de modificaciones realizadas por otras y el usuario debe entender approvals, reverts y gas.
Otros protocolos utilizan variantes extended-UTXO con contratos más expresivos, pero no deben confundirse con el modelo exacto de Bitcoin.
Árbol de diagnóstico de una transacción
Cuando una transacción se comporta de forma inesperada, identificar el modelo ayuda.
Si es UTXO
- ¿Qué outputs controla la wallet?
- ¿Cuáles eligió como inputs?
- ¿Creó un output de cambio?
- ¿Cuántos inputs aumentan el peso?
- ¿Algún input ya está gastado o comprometido por una operación pendiente?
- ¿La wallet ofrece coin control?
Si es account-based
- ¿Cuál es el balance actual?
- ¿Qué nonce espera la red?
- ¿Hay un nonce anterior pendiente?
- ¿Es una transferencia simple o una llamada a contrato?
- ¿Cuánto gas requiere?
- ¿Toca estado que otra transacción pendiente también modifica?
Esta secuencia suele explicar mejor un problema que limitarse al balance mostrado en pantalla.
Errores frecuentes
“Una dirección Bitcoin tiene un balance guardado directamente onchain”
No exactamente. Wallets y explorers calculan balances a partir de outputs. El protocolo registra transacciones, outputs y gastos.
“Un UTXO se puede gastar parcialmente”
No. El UTXO seleccionado se consume entero y el resto vuelve como un nuevo output, normalmente de cambio.
“Ethereum no puede impedir doble gasto porque no tiene UTXO”
Incorrecto. Ethereum valida transiciones de estado y usa nonces para ordenar las transacciones de cuentas externas.
“Más UTXO significa más dinero”
No. Una wallet puede tener cientos de outputs diminutos o uno grande.
“En el modelo de cuentas todo se ejecuta independientemente”
No. Hay dependencias por nonce y por estado compartido de contratos.
Casos límite
Transferencias propias de Bitcoin
Una operación puede mover fondos entre direcciones controladas por la misma wallet. La blockchain no etiqueta automáticamente qué output es “para uno mismo”; esa interpretación procede de metadata y heurísticas.
Account abstraction
Las smart accounts pueden cambiar firma, recuperación, fee payment y batching, pero siguen operando sobre un entorno de cuentas/estado. No convierten Ethereum en una cadena UTXO.
Exchanges
Un exchange puede mostrar “balance BTC” o “balance ETH” en una base de datos interna. Esa interfaz no revela cómo gestiona UTXO, omnibus wallets, cuentas o custodia en la blockchain.
Layer 2
Las L2 de Ethereum pueden modificar costes y experiencia de ejecución sin dejar de liquidar sobre Ethereum. No todas exponen exactamente el mismo comportamiento operativo que mainnet.
Preguntas frecuentes
¿Es mejor UTXO que el modelo de cuentas?
No de forma universal. UTXO hace explícitos los objetos gastables y ofrece ventajas para coin control y ciertos tipos de razonamiento paralelo. Las cuentas facilitan balances persistentes y contratos complejos. La elección depende del diseño.
¿Por qué Bitcoin manda cambio a otra dirección?
Porque el UTXO seleccionado debe consumirse completamente. La wallet crea un nuevo output para el resto después del pago y la comisión.
¿Por qué Ethereum utiliza nonce?
El nonce ordena transacciones de una externally owned account y ayuda a evitar replay. Un nonce concreto solo puede ejecutarse una vez para esa cuenta.
¿UTXO hace privado a Bitcoin?
No. Direcciones nuevas ayudan, pero inputs combinados, heurísticas de cambio, registros de exchanges y el historial onchain pueden relacionar actividad.
¿Qué modelo es más fácil para el usuario?
Un balance de cuenta suele ser más intuitivo. UTXO permanece invisible hasta que importan coin selection, fees o privacidad. Los usuarios account-based, por su parte, deben aprender nonce, gas, approvals y reverts.
BTC-Pulse Take
UTXO y cuentas son respuestas diferentes al mismo problema contable. Bitcoin trata el valor como outputs gastables con una procedencia explícita. Ethereum mantiene cuentas y aplica transiciones ordenadas de estado.
El resultado para el usuario es un conjunto distinto de comportamientos de wallet. En Bitcoin aparecen coin selection, cambio, número de inputs y privacidad UTXO. En Ethereum aparecen nonces, gas, approvals e historial persistente.
Entender la arquitectura debajo de la interfaz facilita mucho el troubleshooting y evita comparaciones engañosas basadas en una única métrica.
Este artículo es educativo y no constituye asesoramiento financiero ni de seguridad. Los protocolos pueden cambiar mediante upgrades y cada wallet puede abstraer estas mecánicas de manera diferente.
Fuentes
- Bitcoin Developer Guide — Block Chain: transactions and UTXOs
- Bitcoin Developer Reference — Transactions
- Bitcoin Developer Examples — Transactions
- Ethereum.org — Ethereum accounts
- Ethereum.org — Transactions
- Ethereum.org — Ethereum Virtual Machine