
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.




