UTXO frente a blockchains basadas en cuentas: funcionamiento, diferencias y aplicaciones

¿Qué son las blockchains UTXO y basadas en cuentas?
Las blockchains UTXO y basadas en cuentas son dos formas diferentes en que una blockchain registra quién posee qué criptoactivo y cómo se procesan las transacciones.
Ejemplos conocidos de blockchains que funcionan con el modelo UTXO son Bitcoin, Litecoin, Dogecoin y Bitcoin Cash. Cardano utiliza una variante más avanzada, el modelo eUTXO, que también permite lógica más compleja y contratos inteligentes.
Ejemplos conocidos de blockchains basadas en cuentas son Ethereum, Solana y la C-Chain de Avalanche. En estas blockchains, el estado se registra en cuentas, por ejemplo mediante saldos y otros datos almacenados. Ethereum utiliza, por ejemplo, cuentas con un saldo y un nonce, entre otros elementos, mientras que Solana almacena todo el estado en cuentas.
UTXO es la abreviatura de Unspent Transaction Output: una parte de criptoactivo procedente de una transacción anterior que aún no se ha gastado. Puede compararse con billetes digitales sueltos. Cada billete tiene un valor determinado y solo puede gastarse una vez.
Cuando, por ejemplo, realiza una transacción de Bitcoin, utiliza una o varias UTXO existentes como entrada. Después, estas se consideran gastadas. Al mismo tiempo, se crean nuevas UTXO para el destinatario y, en su caso, para el cambio que vuelve al remitente.
Un modelo basado en cuentas funciona más como una cuenta bancaria convencional. Una cuenta tiene un estado actual, como un saldo que sube o baja cuando se procesan transacciones. En Ethereum, una cuenta de este tipo contiene, además del saldo en ETH, por ejemplo un nonce y, según el tipo de cuenta, información sobre código y datos almacenados.
La diferencia principal está, por tanto, en la administración. Una blockchain UTXO registra piezas de valor separadas que aún no se han gastado, mientras que una blockchain basada en cuentas registra sobre todo el saldo actual y otros datos por cuenta.
Esto no dice automáticamente nada sobre, por ejemplo, el consenso, la privacidad o las posibilidades de los contratos inteligentes. Además, existen modelos UTXO más avanzados, como eUTXO, que también admiten lógica más compleja.
Puntos clave
- Un modelo UTXO registra el valor como salidas separadas de transacciones anteriores que aún no se han gastado.
- Un modelo basado en cuentas registra un saldo variable y otros datos por cuenta.
- Bitcoin utiliza el modelo UTXO y Ethereum es un ejemplo conocido de blockchain basada en cuentas.
- En UTXO, una salida existente se consume y se crean nuevas salidas.
- Ambos modelos pueden tener transacciones seudónimas, pero fácilmente rastreables, en blockchains públicas.
¿Cómo funciona el modelo UTXO?
El modelo UTXO funciona con piezas separadas de criptoactivo que aún no se han gastado. Una UTXO de este tipo procede de una transacción anterior y solo puede utilizarse si se cumplen las condiciones asociadas. Por lo general, usted demuestra con una firma digital que está autorizado a gastar esa UTXO.
Cuando crea una nueva transacción, esta hace referencia a una o varias UTXO existentes. A continuación, la red comprueba si esas UTXO no se han gastado antes y si se han cumplido las condiciones.
Es importante saber lo siguiente: una UTXO no puede gastarse parcialmente. En cuanto la utiliza, la UTXO completa se considera gastada. Por eso, en un pago suelen crearse varias nuevas UTXO: una para el destinatario y, en su caso, una para el importe restante que vuelve al remitente. A esto último también se le llama change output.
Ejemplo: Suponga que su cartera de criptomonedas puede gastar una UTXO de 1 BTC y que desea enviar 0,4 BTC a otra persona.
Entonces se utiliza la UTXO completa de 1 BTC como entrada. La transacción puede, por ejemplo, enviar 0,4 BTC al destinatario y devolver el importe restante, tras deducir las comisiones de transacción, como una nueva UTXO a una dirección que usted controle.
La antigua UTXO de 1 BTC deja entonces de existir. En su lugar, se han creado nuevas UTXO.
Por tanto, su saldo visible no consiste en una sola cantidad en la blockchain. Es la suma de todas las UTXO que su cartera puede gastar.
También es fácil comprobar el valor de una transacción. El valor total de las nuevas salidas no puede ser superior al valor de las entradas utilizadas. La diferencia entre ambas puede ir al minero que produce el bloque como comisión de transacción.
En Bitcoin, a una UTXO también se le pueden vincular condiciones adicionales mediante scripts. Un script de este tipo determina bajo qué condiciones puede gastarse la UTXO. Esto hace que Bitcoin sea programable para ciertas formas de autorización, pero el modelo de scripts de Bitcoin es mucho más limitado que los contratos inteligentes avanzados de, por ejemplo, Ethereum.
¿Cómo funciona el modelo basado en cuentas?
El modelo basado en cuentas funciona con cuentas que cada una tiene un estado actual. Piense, por ejemplo, en un saldo y un nonce. Un nonce es un número ascendente que registra cuántas transacciones ha enviado una cuenta. Así, la red puede evitar que la misma orden de transacción se ejecute de nuevo.
En una transacción normal de ETH, el saldo del remitente disminuye y el saldo del destinatario aumenta. Después, el nuevo estado de ambas cuentas se almacena en Ethereum.
Ethereum distingue dos tipos de cuentas:
- Externally owned accounts (EOA): cuentas gestionadas con una clave privada. Suelen ser las cuentas que los usuarios gestionan a través de una cartera. Una EOA puede iniciar una transacción por sí misma.
- Cuentas de contrato: cuentas a las que está asociado código de contrato inteligente. No tienen clave privada y no inician por sí solas una transacción externa. Ejecutan código cuando son invocadas por una transacción u otro contrato.
Una transacción desde una EOA contiene, entre otros datos, información sobre el destino, el importe, el nonce, la firma, cualquier dato adicional y cuánto gas puede utilizarse como máximo. El gas determina cuántos recursos de cálculo puede emplear Ethereum para una transacción.
Si una transacción se dirige solo a una cuenta normal, por ejemplo se puede enviar ETH. Si la transacción se dirige a una cuenta de contrato, la EVM, el entorno de ejecución de Ethereum, puede ejecutar el código de ese contrato.
Gracias a ello, una sola transacción puede hacer mucho más que simplemente enviar ETH. Un contrato inteligente puede, por ejemplo, mover tokens, modificar datos almacenados o invocar otros contratos inteligentes.
Los validadores comprueban y procesan las transacciones según las mismas reglas. Si la transacción es válida, los nuevos saldos y demás cambios pasan a formar parte del nuevo estado de Ethereum.
¿Cuáles son las principales diferencias entre ambos modelos?
La mayor diferencia está en la forma en que una blockchain registra lo que posee una persona.
En un modelo UTXO, el estado actual consiste en piezas separadas de criptoactivo que aún no se han gastado. En un modelo basado en cuentas, cada cuenta tiene un estado actual, como un saldo, un nonce y, en su caso, datos de contrato almacenados.
En UTXO, se consumen salidas existentes y se crean nuevas salidas. En las cuentas, el estado existente se modifica directamente. Piense, por ejemplo, en un saldo que disminuye, un nonce que aumenta o datos de un contrato inteligente que cambian.
La prevención del doble gasto también funciona de forma distinta. En UTXO, la misma salida solo puede utilizarse una vez. En un modelo basado en cuentas, el nonce ayuda a procesar las transacciones de la misma cuenta en el orden correcto y a evitar que la misma orden se ejecute de nuevo.
Sería demasiado simplista decir que UTXO solo es adecuado para pagos y que las blockchains basadas en cuentas solo sirven para contratos inteligentes. Los modelos UTXO avanzados, como eUTXO, también pueden admitir lógica más compleja y contratos inteligentes.
Además, el funcionamiento práctico de una blockchain no depende solo del modelo UTXO o de cuentas. También influyen, por ejemplo, la cartera de criptomonedas, las comisiones de transacción, la máquina virtual y las posibles técnicas de privacidad.
¿En qué se diferencian las transacciones y la administración de saldos?
En una transacción UTXO, su cartera utiliza una o varias UTXO existentes como entrada. La cartera reúne suficientes importes separados para poder pagar el importe y las comisiones de transacción. A esto también se le llama coin selection.
¿Las UTXO elegidas en conjunto valen más que el importe que desea enviar? Entonces, por lo general, se crea una nueva UTXO con el importe restante. A esto se le llama change output.
Por tanto, en un modelo UTXO su saldo consiste en varias UTXO separadas que, en conjunto, forman su saldo total disponible.
En un modelo basado en cuentas, esto funciona de otra manera. Una cuenta tiene un único saldo que se ajusta directamente. Si envía ETH, por ejemplo, el saldo de su cuenta disminuye y el del destinatario aumenta.
Las transacciones desde la misma cuenta de Ethereum también tienen cada una un nonce. De este modo, Ethereum sabe en qué orden deben procesarse esas transacciones. Esto es importante, porque una transacción anterior puede influir en una posterior. Por ejemplo, su saldo puede cambiar o un contrato inteligente puede tener entretanto un estado diferente.
Por ello, una transacción de Ethereum no se puede comparar bien con una sola entrada y una sola salida. La transacción comienza desde una sola cuenta, pero un contrato inteligente puede modificar durante su ejecución varias cuentas, tokens y datos almacenados.
¿En qué se diferencian la privacidad y la trazabilidad?
Las blockchains públicas UTXO y basadas en cuentas suelen ser seudónimas. Eso significa que una dirección no muestra automáticamente su nombre, pero las transacciones y direcciones sí están visibles públicamente en la blockchain.
En Bitcoin, a menudo se utilizan distintas direcciones para diferentes transacciones. Además, el cambio de una transacción también puede enviarse a una nueva dirección. Por ello, no siempre es evidente de inmediato qué direcciones pertenecen a la misma persona.
Aun así, los analistas pueden reconocer patrones. Si, por ejemplo, varias direcciones se utilizan conjuntamente como entrada para una sola transacción de Bitcoin, eso puede indicar que la misma parte controla esas direcciones. Sin embargo, eso no constituye una prueba concluyente.
En Ethereum, las personas suelen utilizar la misma dirección de cuenta para muchas actividades distintas. Por ello, las transacciones, los movimientos de tokens y las interacciones con contratos inteligentes desde esa dirección pueden vincularse entre sí con mayor facilidad.
Ninguno de los dos modelos es automáticamente anónimo ni más favorable para la privacidad. Técnicas adicionales, como las zero-knowledge proofs, los mixers o las transacciones blindadas, pueden aumentar la privacidad. Se trata de técnicas complementarias y no de una parte estándar del modelo UTXO o basado en cuentas.
¿Qué ventajas y desventajas tienen las blockchains UTXO y basadas en cuentas?
Ambos modelos tienen puntos fuertes y débiles. Qué enfoque funciona mejor depende de lo que una blockchain o aplicación deba hacer.
Ventajas del modelo UTXO
-
Estructura de transacción clara En una transacción UTXO, se ve con precisión qué salidas existentes se utilizan y qué nuevas salidas se crean. Esto permite seguir con claridad el flujo de fondos dentro de una transacción.
-
Posibilidad de procesamiento paralelo Las transacciones que no utilizan las mismas UTXO pueden, en algunos modelos UTXO, verificarse de forma independiente entre sí. Esto puede abrir espacio para el procesamiento paralelo.
-
Control claro del doble gasto Una UTXO solo puede gastarse una vez. En cuanto se utiliza, deja de existir como salida disponible.
Desventajas del modelo UTXO
-
Más trabajo para las carteras Una cartera de criptomonedas debe decidir qué UTXO se utilizarán para un pago. Esto se llama coin selection. También deben gestionarse las change outputs y los grandes números de pequeñas UTXO.
-
El estado compartido puede ser más complejo Si varias transacciones necesitan la misma UTXO para ejecutar la lógica de un contrato, pueden entrar en conflicto entre sí. En cuanto una transacción utiliza esa UTXO, la otra transacción puede tener que reconstruirse con el nuevo estado.
Ventajas del modelo basado en cuentas
-
Administración de saldos sencilla Una cuenta tiene un saldo actual que se ajusta directamente. Por ello, una cartera no tiene que reunir primero varias UTXO separadas.
-
Útil para estados compartidos y persistentes Las blockchains basadas en cuentas, como Ethereum, pueden vincular datos directamente a cuentas y contratos inteligentes. Esto encaja bien con aplicaciones en las que muchas transacciones se apoyan en la misma información almacenada.
-
Adecuado para contratos inteligentes complejos Un contrato inteligente puede modificar durante una sola ejecución distintos saldos, cuentas y datos almacenados. Esto hace que el modelo sea práctico para muchos tipos diferentes de aplicaciones blockchain.
Desventajas del modelo basado en cuentas
-
Las transacciones dependen más del estado actual El resultado de una transacción puede depender del saldo, del nonce o de los datos del contrato en el momento en que se ejecuta la transacción. Una transacción anterior puede haber cambiado ya ese estado entretanto.
-
El orden de las transacciones es importante Las transacciones desde la misma cuenta deben ejecutarse en el orden correcto del nonce. También en los contratos inteligentes, el orden en que se procesan las transacciones puede influir en el estado final.
-
Más estado compartido puede complicar el procesamiento Cuando muchas transacciones intentan modificar las mismas cuentas o datos de contrato, esas transacciones no siempre son completamente independientes entre sí.
En resumen: ninguno de los dos modelos es automáticamente más rápido, más barato, más seguro o mejor para la privacidad. Estas características dependen del diseño completo de la blockchain y de la forma en que se haya desarrollado el modelo UTXO o basado en cuentas dentro de ella.
¿Cuándo es adecuado cada modelo de blockchain?
Un modelo UTXO encaja bien en aplicaciones en las que el valor se registra como importes separados y cada salida solo puede gastarse una vez. Esto funciona, por ejemplo, bien para pagos, donde debe quedar claro qué importes se utilizan y qué nuevos importes se crean después.
Si desea construir aplicaciones más complejas, un modelo UTXO puede seguir siendo adecuado. Las variantes avanzadas, como eUTXO, también pueden admitir contratos inteligentes y reglas más complejas.
No obstante, en este tipo de aplicaciones debe pensarse bien en cómo trabajan varios usuarios al mismo tiempo con los mismos datos. Si muchas transacciones necesitan siempre la misma UTXO, pueden entrar en conflicto entre sí. Al distribuir los datos entre varias UTXO, a veces pueden limitarse esos conflictos.
Un modelo basado en cuentas, en cambio, encaja bien en aplicaciones en las que los datos se modifican con frecuencia y varias acciones se apoyan en el mismo estado almacenado. En Ethereum, por ejemplo, una transacción puede enviar ETH y, al mismo tiempo, invocar un contrato inteligente que después modifica los datos almacenados.
Por ello, cuál es el enfoque más adecuado no depende solo de la etiqueta UTXO o basada en cuentas. Fíjese sobre todo en lo que la aplicación debe hacer, cuántos usuarios quieren modificar los mismos datos al mismo tiempo, cuán complejos son los contratos inteligentes y qué experiencia de uso desea ofrecer para las carteras.
Conclusión
UTXO y las blockchains basadas en cuentas resuelven el mismo problema básico, pero lo hacen de forma distinta. UTXO trabaja con salidas separadas que solo pueden gastarse una vez, mientras que un modelo de cuentas registra un estado variable por cuenta.
Para los pagos sencillos, la diferencia se ve claramente: en UTXO se consumen importes digitales antiguos y se crean nuevos, mientras que en las cuentas se actualizan los saldos. En aplicaciones más complejas, la elección resulta más interesante. Las variantes UTXO pueden admitir contratos inteligentes, y los modelos basados en cuentas también pueden transferir valor perfectamente.
Por eso, lo más importante no es qué modelo es mejor en general. Se trata de qué modelo encaja mejor con lo que una blockchain o aplicación debe hacer.