UTXO o bien Unspent transaction output (transacción de salida no gastada) es uno de los conceptos centrales que dejan el adecuado funcionamiento de la tecnología blockchain que Satoshi Nakamoto desarrollo para Bitcoin, la primera criptomoneda del planeta.

Desde décadas antes que se crease Bitcoin, la obsesión por crear un dinero puramente digital rondaba la cabeza de bastantes personas. Mas uno de los primordiales inconvenientes con el que todos se chocaban de frente era el renombrado doble gasto.

Fue Satoshi Nakamoto quien, merced a un conjunto de técnicas, solucionó este gran inconveniente, pudiendo crear el primer dinero descentralizado puramente digital. En el presente artículo te vamos a explicar que son las UTXO y el enorme papel que juegan en la creación de las transacciones a fin de que tus bitcoins puedan viajar con seguridad en el protocolo blockchain.

UTXO, un término para eludir el doble gasto

Cómo ya hemos explicado en el artículo destinado a ¿De qué manera marchan las transacciones en Bitcoin?, una transacción está compuesta de entradas y salidas. El conjunto de entradas y salidas, al lado de monedas a mandar y firmas criptográficas, dan como resultado un hash de transacción, generalmente llamado HASH ID.

Las entradas son HASH ID de una transacción que recibió el monedero y que no han sido utilizadas anteriormente, esto es que son UTXO, al paso que la salida es la dirección de destino, a la que se le van a crear UTXO que más tarde va a poder emplear en una transacción. Una misma dirección puede tener infinitas UTXO. Es precisamente por esto que a las UTXO se las define como un conjunto de transacciones.

Cuando una persona precisa mandar una transacción, esta debe alimentarse de UTXO. O sea, de transacciones que ha recibido y que no han sido gastadas. Esto quiere decir que una persona puede emplear para una misma transacción una o bien más UTXO. En verdad esos UTXO pueden ser parte de una o bien más direcciones de tu monedero. Y vamos más allí, aun una transacción podría ser creada con UTXO de direcciones de diferentes monederos, siempre y cuando se firme cada una con su pertinente clave privada claro.

Todo esto conduce a un lugar: una UTXO solo puede ser utilizada una vez. Y esto es esencial en el funcionamiento de la tecnología blockchain, puesto que es una parte del conjunto de herramientas que garantiza que unas monedas no sean utilizadas en más de una ocasión (el conocido doble gasto).

Es tal la confiabilidad de utilizar este mecanismo para identificar las monedas no gastadas que esta es la manera en la que en Bitcoin puede contarse cuántas monedas existen en circulación. Lo que se hace es sumar todos las monedas que hay en las UTXO, o sea, en las transacciones que no han sido gastadas.

A continuación te dejamos un caso fácil a fin de que comprendas el flujo:

Imagina que María desea abonar a Pedro un total de cien euros en bitcoins por un trabajo. María espera percibir el pago de ciertas personas que le deben bitcoins y de ese dinero va a pagar por el trabajo de Pedro.

Al percibir María esos pagos, ha tenido unas “Entradas” de dinero, y de esas entradas va a hacer una “Salida” para abonar a Pedro. A María le pagaron las deudas, las que eran un pago de setenta y cinco euros y otro de cincuenta€.

Cuando pague a Pedro, María debe emplear las 2 entradas, puesto que con ninguna de ellas tiene suficiente, y va a poner a Pedro como salida.
Tras eso, Pedro va a tener una entrada UTXO (ha recibido el pago).

¿Dónde van las monedas que sobran?

Como has podido observar María tenía un total de ciento veinticinco euros repartido en 2 UTXO, mas solo precisaba enviar cien€. Ha debido emplear las 2 UTXO, poniendo como Output o bien salida la dirección de Pedro, mas su monedero va a haber hecho otra cosa de forma transparente a María. Su monedero va a haber puesto una dirección de María asimismo como salida, a la que le va a haber asignado los veinticinco euros sobrantes. Es lo que es conocido como dirección de cambio.

Por cierto, hay unas transacciones que se transforman en una UTXO mas no vienen generadas por una UTXO anterior. Prosigue leyendo para descubrir cuales son.
Con lo descrito previamente vas a poder comprender de qué manera este modelo de “Entradas” y “Salidas”, puede servirnos para establecer relaciones de posesión y concesión del dinero. Una relaciones que en blockchain están marcadas por el empleo de criptografía y que nos ofrecen la seguridad absoluta de que el dinero ha llegado a destino y que está ciertamente bajo el control del receptor.

UTXO y su relevancia en Bitcoin

En Bitcoin todas y cada una de las transacciones tienen esta estructura de entradas y salidas. En las “Entradas” de una transacción Bitcoin, podemos ver los orígenes del saldo que estamos manejando con nuestra wallet o bien monedero. Al tiempo que en las “Salidas”, podemos ver hacía donde mandamos nuestro dinero. Auxiliar a esto, asimismo podemos ver el dinero sobrante que es devuelto. Todo ello es perceptible y trazable por cualquier persona, puesto que la blockchain de Bitcoin es pública y transparente.

Si te fijas bien, este modelo deja tener un control total en la manera en como se puede utilizar el dinero y exactamente en qué condiciones se puede emplear. Primeramente, para poder emplear un saldo en Bitcoin ese saldo ha de estar considerado como una UTXO en tu monedero. O sea, alguien debe efectuarse un pago (una salida o bien UTXO) a fin de que este pago se convierta en tu entrada y de esta manera tengas saldo libre que gastar.

Este es un proceso es recursivo. Esto es, se repite desde el instante en que la moneda es generada a resultas de un bloque minado. Por servirnos de un ejemplo, una transacción coinbase es realmente una UTXO creada por el minero para mandar ese saldo a una dirección bajo su control. De este modo esa transacción de salida se transforma en una entrada de dinero para el minero que más tarde va a poder gastar. Exactamente el mismo proceso se repite para el resto de usuarios de Bitcoin. Con esto podemos ver que las UTXO son parte esencial de las transacciones de Bitcoin y sin ellas, su funcionamiento sería imposible.

Ampliando el ejemplo de de qué forma marcha una UTXO en Bitcoin

Podemos ver el funcionamiento de una UTXO en Bitcoin de la próxima forma:

Daniel desea abonar por el vehículo de Luis, valorado en 1 BTC, y en su monedero tiene libre un total de uno con cinco BTC. El saldo de Daniel está dividido en 2 direcciones la A con 0,8 BTC y la B con 0,7 BTC.

Así, Daniel va donde Luis y efectúa el pago por un 1 BTC. En este punto, el monedero de Daniel no puede mandar 1 BTC directamente pues el saldo está dividido en 2 direcciones. Conque toma los dos saldos y los transforma en las entradas de la transacción de pago. Seguidamente toma la dirección de Luis y asigna a exactamente la misma el envío de 1 BTC, auxiliar asigna un total de 0,4995 BTC a la dirección de cambio, y el resto queda como la comisión de minería.

Una vez que Daniel mande su transacción, esta va a ser procesada y confirmada por la red, empezando su camino a la irreversibilidad. Y en este punto, va a ser simple ver dónde se encuentran las UTXO de la transacción.

Las primeras UTXO que podemos advertir en el ejemplo son los saldos de Daniel. Esas direcciones con 0,8 BTC y 0,7 BTC de saldo, son 2 UTXO que están bajo su control y son las que les dejan hacer el pago a Luis. Como Daniel tiene el control de esos saldo, puede convertir sus UTXO en “Entradas” para un nuevo pago como ciertamente lo hace en este caso.

Inmediatamente una vez que la red confirma la transacción de Daniel la situación cambia. Ahora, Daniel ya no tiene bajo su control los saldos que tenía de entrada, y en su sitio, su transacción ha generado nuevas UTXO que sobrescriben las precedentes. Las nuevas UTXO en cuestión están representadas primero, por la dirección de Luis y el 1 BTC que ha recibido en ella de una parte de Daniel. Y segundo, por la dirección de cambio y los 0,4995 BTC que Daniel ha recibido de la red, pues es lo que le resta del pago que efectuó. Como hemos dicho el resto para llenar el uno con cinco BTC que tenía Daniel de entrada quedan como pago de comisión para el minero.

Bitcoin Scripts y su relación con las UTXO

Todo el funcionamiento de las UTXO en Bitcoin está garantizado por los Bitcoin Script, el lenguaje de programación que se utiliza para redactar todas y cada una de las operaciones en Bitcoin. Cada transacción tiene un script asociado que nos permite:

  1. Validar que verdaderamente el saldo utilizado es nuestro.
  2. Garantizar que los saldos mandados solo puedan ser gastados por la persona a quien se lo mandamos.

Pero ¿De qué manera se efectúan estas operaciones? Es lo que explicamos a continuación:

Validando que el saldo es nuestro

La primera labor para poder utilizar un saldo en Bitcoin es probar que ciertamente ese saldo es nuestro. Para esto, lo primero a tener en consideración es que cada UTXO que convertimos en una entrada (saldo que gastaremos) realmente es la salida de una transacción precedente que nos dio acceso a esos BTC. Esto es, todo saldo en Bitcoin tienen una UTXO asociada al mismo, y dicho UTXO tiene asociado un script de bloqueo.

Este script de bloqueo es un candado digital que debemos abrir para entonces poder hacer empleo del saldo de dicha UTXO. Los script de bloqueo en Bitcoin son variados, mas el más frecuente es el P2PKH (Pay to Public Key Hash). Si bien asimismo existen el P2SH (multisig), el P2PK (el más primitivo de todos). Este script de bloqueo va a poder ser abierto con la clave privada que dé como resultado la dirección indicada en la UTXO.

Así que para poder desbloquear dicho script lo que debemos es tomar la dirección de Bitcoin, tomar nuestra clave privada y producir la clave pública de dicha dirección. Al final estampamos nuestra firma digital y con todos esos datos verificados, se desbloquea el saldo de dicha dirección a fin de que podamos utilizarlo. Esto es, los nodos admitirán la transacción y la van a poner en el mempool a espera de los mineros.

Por el contrario, si fallamos al hacer ese procedimiento, sencillamente la transacción es rechazada por los nodos y no vamos a poder emplear el saldo. A este proceso lleva por nombre script de desbloqueo. Naturalmente, este proceso criptográfico es automático y transparente para los usuarios de un monedero, todo el proceso lo efectúa el propio monedero, mas ahora conoces qué sucede dentro de él. En tal esquema, esta una parte del funcionamiento está descrita en el scriptSig de cada Bitcoin Script.

Creando el script de bloqueo

Al probar que podemos gastar nuestras UTXO, proseguimos con el proceso de creación de la transacción, creando un script de bloqueo para la nueva UTXO dirigida a destino. En un caso así, lo que hace el monedero es crear un script afín al que nos crearon a nosotrosanteriormente, el que indique que el único que puede gastar esta nueva UTXO es quien tenga en su poder las claves privadas con controlen las direcciones a donde hemos mandado.

De esta forma, lo que se crea es una cadena de validación, donde los bitcoins al pasar de una dirección a otra, quedan bloqueados para ser usados por la última persona que toma posesión de ellos.

Como puedes ver, en Bitcoin todo tiene un por qué razón bien definido, y que deja que sus partes en conjunto dejen el adecuado funcionamiento de la criptomonedas. Siendo un protocolo abierto, todos nodos que desean ser parte del protocolo interpretan las reglas de igual manera.

Todas las transacciones son revisadas por todos y cada uno de los nodos, siendo admitidas aquellas que admiten la mayor parte y confirmadas aquellas que la mayor parte del poder de hash (que lo producen los mineros) admitan. Estos controles garantizan de forma democrática el cumplimiento del protocolo.

¿Cuánto sabes, criptonauta?

¿El modelo de las UTXO está presente en todas y cada una de las criptomonedas?

Curiosidades de las UTXO en Bitcoin

Ahora bien, en el ejemplo precedente probablemente habrás visto ciertas cosas curiosas sobre las UTXO y su funcionamiento en Bitcoin, y le vamos a dar explicación en esta sección.

Transacciones que no vienen de un UTXO

Como te señalábamos previamente, hay unas transacciones singulares, unas que no se producen con unos UTXO, puesto que las monedas aparecen “mágicamente”. Este particular caso se da en las transacciones coinbase, que son creadas por los mineros en el instante de minar un bloque y sirven para conseguir la recompensa del bloque.

¿Por qué razón no efectuar un pago fraccionado utilizando los saldos en BTC?

Leyendo el ejemplo precedente probablemente te has preguntado ¿Por qué razón el monedero de Bitcoin de Daniel no ha efectuado un pago preciso de 1 BTC utilizando una sola entrada? La contestación para ello es que los UTXO representan el saldo en Bitcoin de forma indivisible. Esto es, no podemos convertir ese saldo en valores más pequeños, salvo que gastemos el saldo creando una nueva transacción.

Para hacerlo más fácil veamos este ejemplo: si deseamos abonar 1 BTC con nuestro monedero, mas dicha cantidad está repartida en cien UTXO diferentes que tienen 0,01 BTC cada una, entonces nuestro monedero va a tomar las cien direcciones como entradas de nuestra transacción y con esto efectuará el pago. Esto es, el protocolo Bitcoin marca esas cien UTXO como “Gastadas”. De allá, produce una transacción nueva con un UTXO nuevo que es a dónde hemos mandado el pago de 1 BTC, y nos deja sin control de saldo en esas direcciones utilizadas.

Relación con las comisiones en Bitcoin

Otra utilidad de las UTXO debe ver con las comisiones o bien fee en Bitcoin. En el ejemplo precedente explicamos que toda vez que efectuamos una transacción, la comisión de dicha operación es igual a la diferencia entre las entradas y las salidas. Es decir:

Entrada total — Salida total = Comisiones

Esto nos señala que la construcción de una transacción tiene desde un primer instante previsto un saldo de comisiones. La comisión a los mineros no se asocia a ninguna salida, con lo que los mineros se quedan aquello que queda sin asociar. Esto es, la entrada total siempre y en todo momento habrá de ser superior al salir total asociada.

La comisión a los mineros no es fija, cada uno de ellos decide cuanto quiere abonar dependiendo de la prisa que tenga, mas es una cosa que vemos en todas y cada una de las transacciones en Bitcoin y tiene como finalidad 2 cosas:

  1. Incentivar el trabajo de los mineros que al producir un bloque no solo reciben la recompensa del mismo, sino más bien asimismo asimismo las comisiones de todas y cada una de las transacciones confirmadas por dicho bloque.
  2. Evitar que la red sea frágil a ataques maliciosos como los DDoS, dusting attack, entre otros muchos. Esto debido a que cada transacción tiene un costo y hacer transacciones en números masivos tiene un alto costo para el atacante.

UTXO en otras blockchains y criptomonedas

El esquema de UTXO es tan bueno que el resto de criptomonedas han decidido emplearlo para sus sistemas. Como es natural, cada blockchain puede ajustar este término de diferentes. De esta manera, puede amoldarse a las funciones auxiliares que pueda presentar cada protocolo blockchain donde se ejecutan. No obstante, el funcionamiento básico es exactamente el mismo. De allá que aun monedas de privacidad como Monero o bien Zcash, empleen este esquema ceñido a las peculiaridades de su protocolo.