🇪🇸 Actualización del progreso de Cardano por Sebastien Guillemot (Sept. 2019) (Parte 2 de 2)

:es: Transcripción al español de “Cardano Progress Update by Sebastien Guillemot (Sept 2019)

Publicado en el canal de Youtube de Emurgo el 12 de Septiembre de 2019

Ir a la versión doblada al español


Enlace a Parte 1 de 2

¿Dónde está el equipo Plutus con estas todas estas cosas Shelley ocurriendo? Siguen trabajando en tener a Goguen despachado, el paso siguiente a Shelley es la integración de contratos inteligentes en Cardano, hay unos pasos que realizar, uno es asegurarse de que todo el trabajo que hemos realizado en Plutus está hecho correctamente y no hay errores. Eso significa que necesitamos verificación formal, eso es en lo que continuamos trabajando para Plutus y pueden ver que tenemos dos búsquedas plurales para incluso más verificación de todo el apilamiento Plutus. Pero no sólo estamos trabajando en verificación, también estamos trabajando en la usabilidad de la futura configuración, y para asegurarnos de que todos puedan usar Plutus desde el día uno, en el momento que esté disponible, estamos trabajando muy duro para obtener documentación, como este nuevo libro sobre escribir contratos inteligentes en Plutus, que ha sido publicado el mes pasado, así que si quieres aprender más acerca de Plutus, cómo escribir contratos inteligentes Plutus, chequealo, lee el libro, tiene un montón de ejemplos y un sitio web en el que de hecho puedes escribir, compilar y ejecutar tus propios contratos inteligentes Plutus en una testnet.

La siguiente cosa en la que estamos trabajando es un libro para Marlowe, tenemos un libro para Plutus y Marlowe es otra plataforma de contratos inteligentes para Cardano que está destinado a ser mucho más fácil de usar, no tienes que ser un desarrollador para usarlo, incluso si tu tienes conocimiento básico de blockchain y UTxO, serás capaz de crear tus propios contratos inteligentes, y para explicar eso a la gente también estamos trabajando en un libro Marlowe.

Estamos definiendo especificaciones que hemos escrito, principalmente porque Plutus, como ustedes saben, sigue en desarrollo, de vez en cuando como que tenemos que volver atrás y cambiar un poco la documentación para estar seguros de que reflejen todos los nuevos cambios y también tenemos dos nuevos documentos del equipo Plutus. Uno es llamado Sistema F en Acta y el otro tiene un nombre mucho más complicado, es un documento acerca de compilar un lenguaje intermediario con tipos de datos recursivos mutuamente y funciones recursivas mutuamente dentro del Sistema F Omega con * IFix*, se que esto suena como un montón de palabras al azar todas juntas, pero te juro, busca cada una de ellas, independientemente, es toda terminología real usada comúnmente en el espacio de programación funcional y en espacio de diseño de lenguajes de programación.

Esta es la forma en la que desarrollamos en Cardano, escribimos el código, escribimos la especificación formal, los escribimos en documentos, los publicamos en conferencias, revistas, no sólo para nosotros estar convencidos de que estamos en lo cierto pero para que el resto de la academia y la comunidad de programación también esté convencida de que es correcto. Parte de la revisión por pares, por supuesto, es obtener retroalimentación, integrarlo en tu producto, después de lanzar el libro Plutus, obtuvimos retroalimentación sobre partes que necesitaban ser cambiadas, partes que se podían hacer más claras y estamos tomando nota de esa retroalimentación y ayudando a mejorar el libro, mantendremos el libro con el tiempo, a medida que hagamos más cambios en el lenguaje .

Obviamente, el lenguaje de programación de contratos inteligentes Plutus está mejorando en sí mismo, hemos tenido algunos cambios principales que quiero mencionar este mes, el primero es trabajo en un sistema de tipos para inferencia de transacciones. Básicamente, si piensas en la forma en la que Plutus trabaja, tiene múltiples pasos de compilación, Haskell es nivel superior, pero a medida que compilas puedes ir hacia abajo a Plutus IR, Plutus Core, estas diferentes representaciones que son usadas por las máquinas virtuales para básicamente ejecutar tu código en la blockchain, esta búsqueda plural ayuda en el chequeo de tipos de código Plutus Core usando Haskell. Puedes chequear cómo esto funciona en esta búsqueda plural, cómo puedes usarlo, con el ejemplo de contratos inteligentes que ya han sido posteados en la website de testnet Plutus. Si eres un desarrollador que está interesado en Plutus y chequeo de tipos, puedes chequear esta búsqueda plural, dejaré un link en la descripción.

Otra cosa que hemos hecho es tener en consideración las tarifas por transacción, así que en esta testnet, podemos simplificar un montón del mecanismo de tarifas por transacciones o removerlas enteramente, para asegurarnos de que fácilmente podemos testear un sistema de contratos inteligentes en oposición a tener que testear toda la lógica regular de bloques. Pero ahora estamos agregando las tarifas por transacción a las consideraciones a lo largo de todo el código y eso es esencialmente lo que esta búsqueda plural hace. Obviamente ahora tenemos una mucho mejor documentación en Plutus y continuamos mejorando cada mes y el lenguaje en sí mismo continúa mejorando en usabilidad en las varias APIs y los pasos para tener la testnet Plutus eventualmente integrada dentro de la red principal Cardano.

Parte de hacer que Plutus sea usable, es tener una manera de conectarse a él desde sitios web y otros componentes off chain, tenemos un repositorio GitHub para esto, lo cubrimos en meses anteriores, llamado backend de contratos inteligentes, así que un montón de trabajo ha ocurrido el mes pasado en el backend de contratos inteligentes, puedes leer acerca de los varios cambios que ocurrieron aquí, pero esencialmente estamos tratando de hacer más fácil ejecutar tus contratos inteligentes de una forma en la que es estáticamente chequeado y compila directamente de tu contrato inteligente Plutus. Así que, cuando escribes tu código Plutus y lo compilas, obtienes componentes on chain, off chain. Tomas el componente off chain, lo enganchas en tu sitio web con esta librería que usa typescript para básicamente asegurarse de que todo lo que ocurre en Plutus es type check para tu implementación type script. Si quieres chequearlo y ver cómo funciona, chequea este repositorio Github y mira los cambios que hemos realizado para hacer al sistema más rápido, más seguro y en general más fácil de usar. Si quieres darte cuenta de cómo funciona, hay un Leeme al costado del repositorio Github, que básicamente explica como tener todo ejecutándose con NodeJs y Docker.

Hablemos un poco de Ouroboros formal. Ouroboros es el protocolo subyacente operando para Cardano y mientras lo implementamos en Haskell, en Rust, debemos asegurarnos de que la prueba en sí misma, en el documento Ouroboros, son correctas. Continuamos escribiendo una muy formal especificación para Ouroboros y puedes ver que un montón de búsquedas plurales han emergido este mes para básicamente continuar trabajando en esta especificación formal. Ouroboros básicamente utiliza Isabelle y otras herramientas customizadas para verificar que no hay errores y todas las pruebas del documento pueden ser verificadas.

¿Cómo le está yendo al equipo Haskell? Obviamente la gente de Ouroboros Formal que están trabajando en este proyecto, están trabajando muy cerca del equipo Haskell, que esencialmente tiene una tubería para ir de la especificación formal todo para arriba hasta el código ejecutable. Veamos lo que el equipo Haskell ha estado haciendo, en la cosa más emocionante en la que han estado trabajando es algo llamado Cardano Explorer, ¿qué es el Cardano Explorer? es un nuevo código base que esencialmente te permite usar el nodo Haskell Shelley para encender y explorar. Otra vez, esto es diferente de Seiza porque no es un sitio web no es una UI, esta es una API que fácilmente puedes utilizar encender y explorar en tu máquina local, información acerca de bloques, transacciones y billeteras y todo este tipo de información.

Si tu eres una compañía que quiere construir utilizando el código base Haskell, ahora también tienes una opción para explorar una API, como mencioné anteriormente en este video, tenemos una API para explorar el código base Rust y este repositorio GitHub provee una API para el código base Haskell, tienen un montón de documentación acerca de cómo funciona exactamente, puedes leerla y ver cómo está diseñado, cómo usamos herramientas como Postgres para encender esta base de datos para explorador Haskell de Cardano. Esto no está hecho en un 100% todavía, todavía estamos implementando muchos de los terminales para consultar el explorador, quizás sea un poco temprano para construir sobre él, pero si eres súper entusiasta de este proyecto, chequealo, trata de levantarlo y ejecutarlo, usa los terminales y quizás sugiere algunas funciones que piensas deberían ser agregadas.

El equipo Haskell también tiene un proyecto llamado Cardano Wallet (billetera), esto es lo que mencioné anteriormente que el equipo Daedalus está usando, Daedalus se conecta a la Cardano Wallet, que se conecta con el Cardano Node, que se ejecuta en tu computadora, el cual es el código base Haskell. Así que han agregado nueva funcionalidad, para firmar transacciones externamente, lo cual es requerido para billeteras de dispositivo. El equipo Daedalus planea lanzar soporte para billetera de dispositivo, han estado trabajando en la API del lado del puerto JavaScript y este es trabajo equivalente para el lado del nodo, en el que también están trabajando. Como quizás ustedes saben, el soporte para billeteras de dispositivo está en Yoroi y Adalite y el equipo Daedalus también está trabajando para dar soporte a billeteras de dispositivo.

¿En qué ha estado trabajando el equipo de red de trabajo Haskell? Por si no saben, Cardano está básicamente escribiendo un completo apilamiento de red de trabajo desde cero. Y es requerido porque las blockchain (cadena de bloques) son un muy específico caso de uso, así que no podemos usar una librería existente, tenemos que hacer un montón de nueva investigación acerca de lo que exactamente necesitas para hacer un apilamiento de red de trabajo en Cardano, en una blockchain. Esta parte se ha llevado a cabo por un largo tiempo, lo cubro cada mes y este mes no es la excepción, continuamos trabajando, agregando funciones y un montón de ello es en tres categorías, una de ellas es auditoría básica de memoria y uso de recursos, básicamente quieres estar seguro de que la memoria que estás usando, ejecutando la red de trabajo, llamando al código base Haskell no es muy grande, tiene un rendimiento razonable y asegurarte de que fácilmente eres capaz de manejar multi threading, alocación de recursos. Esa es una de las principales cosas en las que hemos estado trabajando, la otra es la transición de Byron a Shelley. La capa de red de trabajo necesita ser capaz de sincronizar transacciones Byron, bloques, todo y suavemente transicionar hacia Shelley, estamos trabajando en extender las transacciones, transicionar los datos almacenados en disco, si abren Daedalus ahora y vas a tu carpeta Daedalus verás un montón de archivos en el disco, representando todos los bloques, el sistema ejecutable convertirá los bloques de la red principal Byron a la nueva representación Shelley.

Estamos trabajando en transicionar Praos y Génesis, de una forma paso a paso, quizás recuerdes que Charles en el pasado habló como no queremos que Cardano tenga un interruptor de encendido/apagado, será un proceso gradual, paso a paso, donde el 5% de la red será descentralizada, el 10% de la red será descentralizada. Estamos trabajando en la implementación de este paso transicional, como siempre, queremos hacer esto con respeto a las especificaciones formales que hemos escrito. Recuerda que el equipo Haskell está haciendo esto muy rigurosamente, paso a paso, tenemos una especificación formal que mostré antes, tenemos la especificación ejecutable que mostré en meses previos y ahora tenemos una capa de red de trabajo que conecta con el siguiente paso y con el próximo paso, y cada paso es un chequeo para asegurarnos de que todo lo que estamos haciendo es correcto.

Como mencioné, está esta búsqueda plural para el proceso transicional porque esencialmente cambiaremos la red principal Cardano para usar BFT y una vez que estemos en BFT necesitamos transicionar a Praos, donde paso a paso determinaremos cuantos bloques son creados por el sistema BFT y cuantos bloques son creados por Ouroboros Génesis y Praos. Y tenemos otro trabajo básicamente ocupándose de la deuda técnica para continuar este proyecto Ouroboros de red de trabajo listo para Shelley.

¿Qué está pasando en el lado de la especificación formal? Como mencioné unos minutos atrás, el equipo Haskell trabaja paso a paso y tenemos especificación ejecutable que dice exactamente cómo las cosas se necesitan comportar al momento de la ejecución. Es diferente a una especificación matemática porque con la especificación ejecutable no sólo puedes verificar que es matemáticamente correcto pero también de que lo puedes ejecutar y obtener el resultado correcto. Estamos trabajando en la especificación para multi firma, quizás recuerden en meses previos, que hemos hablado de soporte multi firma para Cardano y teníamos algunas diferentes propuestas, las dos principales propuestas, donde una es implementar multi firma como una funcionalidad nativa de la red Cardano, la otra era implementar multi firma como la funcionalidad encima de los contratos inteligentes, encima de Plutus y entregar parte de Plutus dentro de Shelley. Hemos tenido una larga discusión acerca de ambos lados, los beneficios, desventajas y parece que los equipos han acordado que nos vamos a mover hacia una scripts multi firma nativos, eso significa que no estaremos entregando Plutus como parte de Shelley, en vez de eso, la multi firma será incluida nativamente dentro del protocolo Cardano. Si quieres ver exactamente cómo funciona la multi firma, ahora puedes leer la especificación para multi firma nativa y estamos seguros de cómo implementarlo, puedes ver cómo implementarlo para tu billetera que soporta Cardano.

¿Qué más hemos estado haciendo en el lado de la especificación formal? Como les mencioné, Cardano es un proceso paso a paso y tenemos que estar seguros que todos los pasos están sincronizados, cada vez que cambiamos la definición matemática necesitamos estar seguros de que este cambio sea reflejado en la especificación formal, reflejado en el próximo paso, en el próximo paso, es como una cascada. El equipo de especificación Ledger, han estado ocupados el mes pasado básicamente haciendo que la especificación formal concuerde con la especificación ejecutable. Aquí les muestro tres búsquedas plurales, pero hay muchas más donde están haciendo pequeños cambios aquí y allá para asegurarse de que cada parte de su código concuerde con especificación formal original para Cardano.

Y eso es para el código, ahora quiero ir sobre otras novedades, antes de que cerremos este video, una de ellas es que Emurgo firmó un MOU (Memorandum de Entendimiento) con algunas asociaciones de comercio, están soportadas y apoyadas por el gobierno de Corea del Sur, notablemente hay dos alianzas, la Asociación Coreana de Contenido Blockchain y la Asociación Coreana de juegos móviles. Hemos tenido un comunicado de prensa para hablar acerca de cómo planeamos trabajar con ellos en sus respectivos campos, estamos muy emocionados de que compañías y asociaciones están trabajando con Emurgo para ayudar a influenciar la tecnología blockchain en sus respectivos dominios.

Otra cosa que quiero mencionar es que Runtime Verification publicó un documento acerca de IELE, por si no recuerdan IELE es uno de los lenguajes de contratos inteligentes que IOHK ayudó a desarrollar y financiar. Y es una manera de formalmente especificar una máquina virtual donde puedes usar esas semánticas formales para fácilmente escribir contratos inteligentes y probar que tu contrato inteligente es seguro. Recientemente publicaron un nuevo documento acerca de IELE y el trabajo que IOHK ayudó a financiar, si estás interesado en IELE, chequea este documento que en resumen explica todo lo que se ha hecho hasta ahora. IELE probablemente no sea entregado con la primer versión de Goguen pero seguimos en amistad cercana con Runtime Verification, seguimos todo el trabajo que hacemos y nos encantaría ver esto incluído en Cardano algún día, estoy contento de que hayan resumido todo el trabajo que han hecho hasta aquí, continuaremos siguiendo el trabajo por realizar y con suerte implementar toda esta asombrosa tecnología en Cardano en el futuro.

La última cosa que quiero mencionar es que IOHK ha estado haciendo un montón de videos demos de progreso de desarrollo Cardano para ayudar a informar a la comunidad acerca de lo que exactamente está ocurriendo con el producto. Así que si quieres saber exactamente lo que el equipo Haskell ha estado haciendo por ejemplo en este video, cómo el equipo de red de trabajo está almacenando los bloques y leyendo bloques de un disco en este proyecto Ouroboros que mencioné, ahora tienes un video de 20 minutos que explica exactamente cómo funciona así que interesado en los pequeños detalles y saber exactamente cómo funciona, chequea este video demo en el que IOHK ha estado trabajando recientemente, este es el segundo, creo que el primero fue a fin del mes pasado y tendremos más en el futuro.

No se trata sólo de compartir la tecnología que tenemos con el resto del ecosistema, es todo acerca de transparencia y asegurarnos de que todos en la comunidad vean el trabajo que estamos haciendo y eso es muy importante.

Eso básicamente resumen todo el trabajo de este mes, muchas cosas han ocurrido, tenemos muchas más en el mes de Septiembre, así que siguenos en Twitter, Youtube, todas las plataformas y estate al día con este emocionante proyecto