馃嚜馃嚫 Modelo UTxO. Contabilidad en Cardano

:cuba::es: Traducci贸n de contenido en formato video publicado por Lars Br眉njes Director de Educaci贸n de IOHK.

Buenas a todos. Bienvenidos a otro episodio de: Iniciativa de Stake Pools.

Antes de realizar las transacciones actuales que conocemos, debemos hablar resumidamente sobre c贸mo funciona la contabilidad en Cardano.

En las cripto monedas se usan com煤nmente dos modelos para la contabilidad. Uno es llamado Modelo Contable, y otro es llamado Modelo UTxO, el cual por sus siglas en ingl茅s (Unspent Transacci贸n Output) significa, Transacci贸n de Salida no Gastada. El ejemplo m谩s prominente para el Modelo Contable es la red Ethereum, y para el Modelo UTxO pueden ser las redes Bitcoin y particularmente Cardano. Para realizar transacciones en Cardano, primero deber铆as entender c贸mo funciona b谩sicamente el Modelo UTxO.

Primeramente veamos el Modelo Contable, y como la mayor铆a de ustedes piensan que deber铆a funcionar, y c贸mo es que funciona en los bancos. La idea es que la blockchain tiene un estado global que b谩sicamente lista los balances de cada cuenta. Por ejemplo, veamos la siguiente imagen:

En cierto momento Alice tiene en su cuenta un balance de 100 ETH, y Bob 50 ETH. Si Alice quiere transferir 40 ETH a Bob simplemente se actualiza el balance en la lista, se sustraen 40 ETH de los originales 100 y Alice entonces tiene 60 ETH, se a帽aden 40 ETH en el balance de Bob y pasa de 50 a 90 ETH. Es bastante sencillo el proceso. Pero no es el m茅todo que Cardano usa.

Cardano usa el Modelo UTxO, Salida de Transacciones no Gastadas. Vamos a tomar el mismo ejemplo de Bob y Alice, pero en vez de estar los balances en un estado global de la blockchain, nos centramos en el dinero que cada persona tiene en un momento dado, esta cantidad queda grabada como una moneda, una sola unidad que no puede ser dividida en varias partes. El punto, es que no puedes usar solo 60 ADA si tienes 100, siempre debes usar tu balance total, aunque tengas una o muchas criptomonedas en tu billetera, siempre debes usar el monto total para una transacci贸n, no puedes dividirlas.

En el ejemplo ya visto, Alice tiene 100 ADA y Bob 50, Alice quiere transferir 40 a Bob pero no puede dividir su monto total, debe usar los 100 que posee completamente. Como resultado de esto, evidentemente Alice tendr谩 su cambio de vuelta, que ser铆an 60, esto se logra ya que la transacci贸n de salida que contiene los 100 ADA no van directamente al balance de Bob, sino que se crea otra transacci贸n de salida segura con las 60 ADA restantes hacia la propia billetera de Alice. Y Bob obtiene los 40 solamente. Veamos el ejemplo abajo:

En la imagen, el rect谩ngulo gris simula las transacciones, que pueden tener una o varias entradas y salidas en ambos sentidos. En el ejemplo tenemos una entrada que representa las 100 ADA de Alice, y tiene dos salidas, 40 para Bob y 60 que son retornadas hacia Alice. Entonces, si nos fijamos en las UTxO de cada usuario antes de que ocurra la transacci贸n tenemos que Alice posee 100 ADA y Bob 50, luego de la transacci贸n los 100 de Alice se gastan y se crean dos nuevas UTxO, una con 60 ADA en la billetera de Alice, y otra con 40 en la billetera de Bob. Finalmente quedan creadas en total 3 UTxO en el sistema, la original que tenia Bob con 50 mas las dos nuevas, una con 60 de Alice y otra con 40 de Bob.

Veamos ahora un ejemplo un poco m谩s complicado. Supongamos que estamos en el escenario del ejemplo anterior luego de ejecutada la transacci贸n, y Alice junto con Bob acuerdan transferir 55 ADA a Charlie cada uno, de esta forma Charlie obtendr谩 110 ADA. Veamos la situaci贸n inicial abajo:

Alice tiene 60 ADA en su billetera. Bob tiene 90 en total en su billetera, 40 que recibi贸 de Alice m谩s las 50 originales. Ambos van a pagar 55 ADA a Charlie, Alice tiene una sola opci贸n, una UTxO con 60 ADA y es la que va a usar, mientras Bob tiene dos UTxO pero ninguna de las dos tiene 55 ADA, as铆 que tendr谩 que usar ambas.

Como soluci贸n, tendremos una transacci贸n con tres entradas provenientes de las tres UTxO disponibles, una con 60 ADA de Alice y las otras dos con 40 y 50 ADA de Bob. Veamos el ejemplo abajo:

Luego de realizada la transacci贸n tenemos tres salidas. Una para Charlie la cual es el motivo principal de la transacci贸n, y otras dos para Alice y Bob.

Una salida con 5 ADA restantes de los 60 de Alice, ya que 55 fueron enviados hacia Charlie. Otra salida con 35 ADA restantes de los 90 totales generados por las dos entradas de Bob, ya que 55 fueron enviadas a Charlie. Y finalmente una salida con 110 ADA para Charlie.

Y es as铆 como el modelo UTxO funciona. En las im谩genes mostradas, podemos apreciar como las entradas de la segunda transacci贸n fueron las salidas de la primera transacci贸n.

O sea, se puede decir que las UTxO generadas por la salida de una transacci贸n pueden ser usadas como entradas de futuras transacciones.

Cuando es una transacci贸n desde diferentes billeteras, cada participante debe aprobar primero su entrada correspondiente antes de que la transacci贸n se ejecute. En los ejemplos, la primera transacci贸n solo debe ser aprobada por Alice, ya que la entrada pertenece a ella solamente, sin embargo en la segunda transacci贸n las entradas pertenecen a Alice y Bob, por tanto debe ser aprobada por ambos para que se ejecute, lo cual tiene sentido ya que sino podr铆a ocurrir que solamente Alice env铆e sus 55 ADA y no ambos, tal y como acordaron. Los destinatarios nunca aprueban las transacciones, la primera transacci贸n Bob no tuvo que aprobarla, y tampoco Charlie la segunda, lo cual quiere decir que puedes enviar dinero a cualquier persona sin su consentimiento.

Otro punto a mencionar, es que en las transacciones el dinero ni se crea ni se destruye, o sea que, intuitivamente la suma de las entradas de una transacci贸n deber铆a ser igual a la suma de las salidas de una transacci贸n. Lo cual se demuestra en los ejemplos mostrados. Pero eso no es del todo cierto, ya que adicionalmente tenemos las comisiones, sabiendo esto, entonces en la red Cardano se debe proveer un valor mayor en la entrada de una transacci贸n con respecto a su salida, y la diferencia entre el valor de entrada y salida es la comisi贸n.

En el caso de la red Bitcoin esa comisi贸n puede ser modificable y por tanto variable, entonces cuando realizas una transacci贸n puedes establecer la comisi贸n que quieres pagar.

En Cardano es diferente, ya que existe un m铆nimo espec铆fico asignado para las comisiones, el cual debe ser al menos incluido en cada transacci贸n. Hay en existencia comandos que pueden ayudar a realizar el c谩lculo sobre esta m铆nima comisi贸n que debe ser incluida en cada transacci贸n.

Actualmente los contratos inteligentes llegar谩n a Cardano tan pronto como la era Goguen sea lanzada, y cuando llegue este momento los ejemplos explicados ser谩n m谩s complicados ya que en vez de usarse el modelo UTxO b谩sico se usar谩 el modelo extendido E-UTxO el cual puede adicionalmente encargarse de los contratos inteligentes. Llegado este momento las transacciones entre las personas que env铆an y reciben no necesitar谩n las direcciones p煤blicas b谩sicas sino Scripts que ya las contienen. De esta forma los Scripts reemplazan las aprobaciones por parte de los usuarios, y son sustituidas por condiciones que deben ser cumplidas para que se lleve a cabo una transacci贸n. Pero por el momento con estas explicaciones es suficiente para explicar el modelo UTxO.

Muchas gracias.