Decisión de diseño de UTXO de Qtum
Una de las razones más interesantes para trabajar en la industria blockchain es que no existe una solución monopólica a un problema debido a que la gran mayoría de las bases de código son entornos colaborativos de código abierto. En función de los problemas específicos, se anima a los desarrolladores a utilizar la herramienta adecuada para la tarea en cuestión.
Al principio, cuando se diseñó Qtum por primera vez, el proceso de pensamiento fue construir una blockchain lista para el negocio que fuera versátil pero segura. Para lograr estas motivaciones, Qtum eligió el modelo UTXO (Salida de transacciones no gastadas) subyacente en el que se basa Bitcoin sobre el modelo de Cuentas en el que se basan las blockchains de estilo Ethereum.
Por lo tanto, queríamos tomarnos un segundo y explicar por qué optamos por la blockchain de estilo UTXO y comparar los dos modelos para aquellos que acaban de ingresar a la blockchain.
Modelo UTXO
El modelo UTXO fue el primer modelo de blockchain, implementado como parte fundamental de cómo funciona el blockchain de bitcoin. Es simple y elegante en su estructura. Si bien a muchos entusiastas de las criptomonedas les gusta hablar sobre la cantidad de “bitcoins” que tienen, esto a veces lleva a la idea errónea de que los bitcoins son como tokens o monedas que intercambiarían entre sí.
Desde el punto de vista técnico, los “bitcoins” son más como recibos. Si Alice, una minera, encuentra un bloque, el sistema le emite un recibo (transacción) indicando que le deben “25 Bitcoins”. Este recibo es una sola transacción y actualmente no se ha gastado. Las transacciones solo tienen dos estados, ya sea gastadas o no gastadas.
Cuando Alice vaya a comprarle una computadora portátil nueva a Bob que cueste 1 bitcoin, consumirá (gastará) la transacción de 25 bitcoins para crear dos transacciones nuevas. Una transacción es para Bob por el 1 bitcoin que le debe, la otra transacción es para ella misma por el resto de los bitcoins (cambio).
¿Por qué Alice no puede simplemente tachar “25” en la transacción original y convertirlo en 24 y hacer una nueva transacción a Bob por 1 bitcoin? Bueno, como discutimos antes, las transacciones solo se pueden gastar o no gastar. No se pueden modificar. Esta es una de las grandes características de lo que se supone que es una blockchain, inmutable. La única forma de crear una nueva transacción es gastar una transacción que sea igual o mayor que el valor de la transacción que está utilizando como entrada. Si la transacción consumida es mayor que el valor que desea gastar, el resto del valor se convierte en cambio y se le devuelve como una nueva transacción.
Debido a que cada nueva transacción debe tener un registro de las entradas que se utilizaron para crearla, podemos auditar para asegurarnos de que nadie haya ganado dinero de la nada. La única excepción a la regla es el propio sistema, que genera una nueva transacción para el minero. De esta manera, puede rastrear cada transacción hasta su emisión original desde el sistema, esto se conoce como una transacción de base de monedas. Esto puede parecer complejo, y el modelo UTXO es complejo, pero da como resultado una blockchain completamente auditable.

Modelo de cuentas
El modelo UTXO es excelente para garantizar la inmutabilidad en el contexto para mover el valor en forma de tokens, pero ¿qué pasa si el valor que está moviendo no es solo un “token” básico? ¿Qué pasa si el “valor” que desea invocar es un fragmento de código? Si el resultado de la transacción para la publicación es un fragmento de código, ¿cómo lo hace para que pueda ser consumido no solo por el editor sino por cualquier persona?
El modelo de Cuentas es mucho más simple que el modelo UTXO, ya que mantiene un estado compartido en todos los nodos utilizando una base de datos y las transacciones simplemente actualizan la base de datos cuando es necesario. Permite estructuras de datos complejas y permite la computación general.
Plataforma de computación general de Qtum en UTXO
Si Cuentas es más adecuado para la informática general que el modelo UTXO, entonces ¿por qué y cómo fue Qtum con el modelo UTXO?
Para saber cómo, Qtum trabajó en una “Capa de abstracción de cuentas” especial sobre la que puede leer en nuestro documento técnico o leer en nuestro próximo artículo al respecto. La AAL expone una interfaz compatible con EVM al tiempo que permite una base de transacciones UTXO.
Qtum eligió el modelo UTXO principalmente por la seguridad que brinda el modelo más antiguo. Debido al conjunto limitado de códigos de operación utilizados en el script de Bitcoin y a los 8 años desde Bitcoin (en el momento del documento técnico de Qtum), se consideró un modelo significativamente más seguro. El modelo de cuentas se basa en un conjunto comparativamente mayor de funciones informáticas generales y, como tal, sigue siendo más riesgoso implementarlo de forma nativa que el modelo UTXO.
En segundo lugar, al utilizar AAL podemos exponer un modelo de cuentas de propósito general, no solo uno que sea compatible con EVM. La primera VM que se ejecutó en AAL fue Ethereum VM y se puso en marcha el año pasado, pero nuestros planes actuales son lanzar una VM x86 junto con EVM, ambas ejecutándose en la cadena Qtum. Esto es posible porque no implementamos el EVM de forma nativa y, en su lugar, lo exponemos al AAL, lo que permite la modularidad.
Y finalmente, utilizando el modelo UTXO, podemos implementar el consenso de prueba de participación a nivel de protocolo, y no solo como una aplicación de contrato inteligente en la parte superior de la cadena. El algoritmo Blackcoin Proof-of-Stake modificado que utilizamos hace uso de pruebas paralelas y requiere actividad UTXO, algo que no podríamos hacer en un modelo de cuentas.
En resumen, el modelo Qtum UTXO nos permite construir a partir de la estabilidad y seguridad en las que la blockchain de Bitcoin ha estado trabajando durante años, al mismo tiempo que permite una plataforma de desarrollo versátil para aplicaciones descentralizadas.