🇪🇸 Marlowe 4: en la blockchain

:es: Traducción al español de “Marlowe 4: onto blockchain”

Publicado en el canal de Youtube de Simon Thompson el 15 de Abril de 2020

Enlace a la versión doblada al español


Lo que me gustaría explicar en este video es como movemos los contratos financieros y otros tipos de contratos u otros tipos de programas para ejecutar en el contexto de una blockchain y si recuerdas cuando hablamos de blockchain en general, este fue el resumen que tuvimos, lo que tenemos en una blockchain es un registro irrefutable de transacciones, una vez que la transacción está en la cadena permanecerá ahí, no puede ser modificada, no puede ser eliminada. Y la propia cadena comprueba que proporciona un montón de servicios, nos permite estar seguros de que cuando un UTXO es redimido es sólo redimido por alguien que tiene la autoridad para redimir, que el proceso de validación asegura la integridad como una blockchain. Pero por otro lado, aprendimos que la cadena es pasiva, así que cambia con las transacciones, pero cualquier transacción es creada fuera de la cadena y submitida a la cadena, así que hay cosas en las que tenemos que pensar tanto fuera de la cadena como en la cadena y en particular tenemos billeteras que son los lugares donde las personas mantienen cualquier activo que tengan y necesitaremos, porque el contrato potencialmente transferirá activos, entonces tendremos que pensar en cómo se mediarán esos procesos, cómo escribimos contratos que funcionan en este mundo y tenemos que pensar en incentivación, tienes que mantener la cadena viva, mantener el contrato vivo.

El contexto particular en el que estamos trabajando es el contexto de la blockchain Cardano, tiene una criptomoneda Ada, aunque Marlowe podría ser igualmente implementado en la parte superior de una blockchain como Ethereum, que se basa en Accounts, como dije, de nuevo, en la introducción, en blockchain lo que tenemos aquí es un modelo UTXO, está algo extendido de una manera que explicaré en un par de videos, pero el modelo es de activos fluyendo a lo largo de lo que parece un gráfico de flujo de datos, dije que está fluyendo de una transacción a otra, las salidas negras se gastan al convertirse en entradas de más transacciones.

He estado trabajando en Marlowe durante varios años, primero que nada cuando yo era un académico en la Universidad de Kent, donde se me proporcionó financiación de investigación por parte de IOHK y una razón por la que estaba ansioso por trabajar con IOHK era el hecho de que hacen todo su trabajo de código abierto, puedes buscar en los repositorios IOHK y puedes encontrar el código base para Marlowe, pero también para todas las otras partes de la blockchain Cardano. IOHK está abierto con su código, pero también están muy entusiasmados con que escribamos documentos, así no hay tensión entre trabajar con IOHK y la libertad de difusión de información. Y creo que el otro rasgo que hace que sea tan interesante trabajar en IOHK es que tienen un fuerte compromiso con la programación funcional. Así que si miras un contrato típico en algo como Ethereum habrá algo del código quizás escrito en Solidity, el código en cadena, pero el código fuera de cadena puede estar escrito en algo como Java Script. Donde la forma en que la blockchain Cardano funciona es que todo está escrito en una variante de Haskell, veamos un poco más de detalle sobre cómo se ve la blockchain Cardano.

Tiene la capa de asentamiento, que es la blockchain fundamental, el punto en que los activos se transfieren, liquidados, los activos se transfieren de un UTXO a un gasto de UTXO. El propósito general del lenguaje de programación en la blockchain Cardano se llama Plutus y Plutus es realmente Haskell, que está compilado para trabajar como lenguaje de programación para Cardano. Ahora lo que hemos hecho es construir encima de Plutus, Marlowe de hecho es es un contrato inteligente Plutus complejo, hemos construido nuestro lenguaje de dominio específico de propósito especial y como puedes ver en el diagrama esto está incrustado en Haskell, así que Haskell impregna los aspectos de programación de la blockchain Cardano con fines generales proporcionados por Plutus y propósitos especiales por Marlowe. Y como puedes ver también tenemos que vincular el mundo real a Marlowe, potencialmente a través de la recepción de entradas, depósitos u obtener información del mundo sobre el precio de una determinada acción o de petróleo crudo o lo que sea, pero también necesita ser vinculado a las billeteras de los usuarios, para que los activos puedan fluir dentro y fuera al ejecutar los contratos Marlowe. Así que esa es la imagen general que tenemos, ahí es donde Marlowe se sienta en el ecosistema blockchain.

Ahora, ¿que sucede cuando movemos las cosas a una blockchain?, bueno tenemos que pensar de forma diferente sobre cómo los contratos se hacen cumplir, un contrato sin blockchain al final va a ser cumplido por un sistema legal, el contrato no es cumplido por sí mismo. El mundo blockchain, el mundo de libros contables distribuidos, es uno en el que puede que no haya ninguna autoridad para asegurar que el contrato se cumpla. Ahora, se podría decir, una de las vistas de eso, es decir “ok, está bien, la blockchain estará ahí para registrar las transacciones, registra lo que ha sucedido, así que proporcionará auditoría y automatización”, pero no necesariamente hará que se cumplan las condiciones del contrato. Pero también podemos intentar pensar en cómo usando criptoeconomía, utilizando el conjunto de incentivos adecuados, podríamos ser capaces de asegurar que el contrato se cumpla a sí mismo tanto como sea posible. Así que hay una nueva dimensión en la que tenemos que pensar.

La otra intrigante diferencia entre el mundo blockchain y el mundo financiero es esta cuestión del doble de gasto que por supuesto no queremos, una blockchain, cuando pensamos en criptomonedas, queremos que las criptomonedas se comporten como monedas reales, que el dinero no pueda ser gastado dos veces, si tengo un billete de diez libras y lo gasto ese billete se gastó, no puedo gastarlo nuevamente. Pero, por supuesto, en el sistema financiero los bancos gastan dinero repetidamente o cualquier fuente de crédito está efectivamente es en algún sentido un doble gasto, en principio, y esto es lo que sucede cuando hay una corrida en el banco, se ha gastado dinero, prestado a la gente, multiplicado y es imposible respaldarlo todo completamente, así que el crédito es uno de los motores del sistema financiero. Así que tenemos que ser conscientes que si queremos usar una blockchain como el lugar para las transacciones financieras que tenemos que ser conscientes de que no podemos modelar las cosas como el crédito en una blockchain, cualquier fuente de crédito tiene que ser externa a la propia blockchain.

Pensando en cómo operan los contratos necesitamos pensar en la modalidad de esas operaciones, un contrato puede hacer que algunas cosas sucedan, un contrato puede hacer que un pago se produzca, porque el contrato puede iniciar esa acción. Pero, por supuesto, un contrato no puede obligar a un participante a hacer un depósito, así que hay una modalidad diferente, algunas cosas pueden ser empujadas como los pagos, pero para otras cosas el contrato tiene que esperar a un participante externo para hacer que algo suceda. Y sólo pensando en asegurarse de que los contratos se comporten como deberían, tenemos que pensar, hablo de esto en blockchain en general, pero se aplica igualmente bien aquí, ciertamente queremos evitar el mal comportamiento, no queremos poder gastar el dinero dos veces por ejemplo. Pero también tenemos que asegurarnos de que las cosas buenas sigan sucediendo, tenemos que evitar una situación donde los participantes pueden o tenemos que tratar de evitar tanto como podamos la situación donde los participantes se retiran de un contrato, simplemente dejan de interactuar con el contrato, así que tenemos que encontrar formas de lidiar con eso. Así que tenemos que pensar, tenemos que modelar, obtener una idea de cómo podríamos obtener valores del mundo externo, quizás necesitemos valores aleatorios, si hay un grado de aleatoriedad en el contrato, o tenemos que obtener valores de los precios de las acciones del petróleo o de los precios al contado o precios de las acciones o lo que sea. Ahora no es el sentido de la blockchain proporcionar esos y podemos, hasta donde nuestro modelo de cómo funcionan las cosas en la blockchain, simplemente podemos pensar en esto como otro participante en el contrato ejecutando una acción, están proporcionando un valor como si el participante humano pudiera hacer una elección, este oráculo está haciendo algo, algo muy parecido a eso. Así la forma en que tratamos esto en Marlowe es tratarlos, cuando necesitamos, como participantes.

Ahora la otra cosa en la que tenemos que pensar, y esto es quizás el núcleo de lo que estamos haciendo, necesitamos pensar en el dinero siendo comprometido a un contrato sólo por un tiempo finito, el dinero no puede estar bloqueado para siempre. Y esto nos da una forma de evitar que alguien simplemente, si tuviera un contrato contigo, vos comprometes un poco de dinero al contrato y yo simplemente me alejo, en teoría ese dinero podría estar bloqueado indefinidamente, necesitamos que nuestros contratos garanticen que eso no pueda suceder. Así que necesitamos pensar en tiempos límite, nuestros contratos necesitan hablar de asegurar que después de una cantidad de tiempo claramente definido el dinero puede ser liberado. Un diseño que dije antes, no podemos exigir un depósito, sólo podemos pedir un depósito, a alguien depositar una cierta cantidad de dinero en el contrato. Ahora, si hacemos eso, corremos el riesgo de tener que esperar para siempre, así que tenemos que pensar en eso, pedir un depósito, pero sólo esperando una cierta cantidad finita de tiempo para hacerlo y luego tomar algunas medidas correctivas si no han realizado el depósito para ese momento, lo usamos para conseguir urgencia, para asegurarnos de que el contrato sigue progresando y nos aseguramos de que todas las operaciones que esperan algo del mundo exterior sólo esperan una cantidad de tiempo determinado y esto significa que podemos ver un contrato Marlowe y podemos ver que tendremos algo así como un horizonte de evento, después de esta cantidad de tiempo nada más puede suceder en el contrato, así que podemos ver que en ese punto, donde no pasará nada más, podamos felizmente, y esto es parte de nuestro modelo, devolver el dinero, cualquier dinero que haya quedado, devolverlo a la gente que lo haya depositado. Ok, así que espero que esto les haya dado una imagen general sobre cómo nos enfocamos al movernos al mundo blockchain, lo que haremos a continuación es que miraremos al contrato de garantía y ver cómo eso tiene que ser modificado para encajar en este nuevo mundo.