🇪🇸 Cardano es el primer proyecto de cadena de bloques de misión crítica

:es: Traducción al español de Cardano is the first mission-critical blockchain project

Publicado por Cardanians en su blog de Medium, el 4 de Diciembre de 2019.


En las aeronaves se utiliza un software de misión crítica.

Cardano es el primer proyecto que apuesta por el desarrollo de métodos formales, y el equipo lo construye como un proyecto de misión crítica. Se necesitan mucho tiempo y esfuerzo para construir un proyecto de este tipo. El equipo investigó cuidadosamente otros proyectos existentes y realizó todos los estudios pertinentes, sin tener miedo de experimentar y buscar el mejor enfoque para el entorno del mundo real. El equipo de IOHK tenía que encontrar a los mejores expertos en los campos dados, y cooperar con ellos. El equipo debió investigar, escribir algunos estudios, pedir revisiones críticas de los estudios que ha escrito a personas competentes, escribir un software siguiendo las especificaciones y probarlo. A veces puede ocurrir que sea necesario descartar algún trabajo o al menos realizar correcciones, aprender de los errores o empezar desde el principio de una manera diferente. Y eso no puede hacerse en un año o dos.

La cadena de bloques no es Facebook

Estamos acostumbrados a estar siempre online en internet, y en todos los servicios que utilizamos a diario, por ejemplo, los servicios ofrecidos por Facebook, Amazon o Google. La mayoría de los servicios funcionan bien y si no, empiezan a funcionar en unas pocas horas. Todos estos servicios están centralizados, y hay administradores responsables que son capaces de solucionar los problemas rápidamente y hacer que los servicios vuelvan a estar disponibles para el usuario. Los servicios son propiedad de empresas que toman decisiones sobre la incorporación de nuevas funciones. Equipos dedicados implementan las características y actualizan el código fuente según lo dicten los líderes, o según estudios de mercado. El modelo económico es simple. Los propietarios de las empresas disponen de infraestructuras de servidores, departamentos de I+D, marketing y ventas. Para pagar por todo, los servicios deben ser rentables. No creas que, porque no pagues por servicios que se prestan a través de internet, dichos servicios son gratuitos. Los servicios no son gratuitos en absoluto. Estas empresas recopilan toneladas de información sobre nosotros y luego la capitalizan.


El modelo de negocio de los gigantes de IT es simple.

Cadena de bloques es la denominación para una red pública globalmente distribuida y consensuada, donde existen diferencias significativas en comparación con los servicios tradicionales proporcionados por famosos gigantes de la tecnología de la información. Echemos un vistazo a algunos de ellos:

  • La cadena de bloques es una red pública. Esto significa que todo el mundo puede ejecutar un nodo y esperar una recompensa. Por lo tanto, es preciso implicar a modelos económicos viables. Un número suficiente de personas deben estar dispuestas a utilizar el protocolo, y pagar por él, para recompensar a los propietarios de los nodos. Cuantos más usuarios existan, menores serán las tarifas de transacción o el uso de los servicios.
  • La cadena de bloques debe estar disponible para los usuarios las 24 horas del día, los 7 días de la semana, sin excepción. Si se trata de una computadora financiera global, entonces debe ser 100% confiable. El mundo no puede detenerse debido a un fallo en una red financiera.
  • La cadena de bloques debe ser 100% segura. En la cadena de bloques se guarda información sobre la propiedad de monedas valiosas, o activos tokenizados. Sólo el propietario puede crear una transacción válida y transferir la propiedad. Existen requisitos de privacidad, por lo que el sistema no puede ser fácilmente pirateado.
  • La cadena de bloques debe ser (siempre) resistente a los ataques de la red, ser capaz de llegar a un consenso, y procesar todas las transacciones de una manera resistente a la censura.
  • La cadena de bloques debe ser descentralizada, con el foco puesto en mantenerla en un alto nivel de descentralización. La descentralización tiene que ver con un protocolo, y también con la gobernanza. La gobernabilidad es más importante aún, ya que si algo sale mal, la comunidad debe decidir cómo solucionarlo. No somos capaces de crear un protocolo totalmente autónomo que se mantenga por sí solo. Necesitamos desarrolladores que sigan los preceptos de la comunidad a través de una votación democrática y participativa. La comunidad es la única que puede decidir sobre la adición de nuevas características.
  • Si se supone que la cadena de bloques es una red global, entonces debe necesariamente escalar. No se adoptará una red mundial que sólo pueda servir al 1% de la población. Somos capaces de enviar un correo electrónico en segundos. También debemos ser capaces de enviar valor rápidamente, y debe ser muy económico hacerlo. Las personas de países pobres no pueden gastar 1 dólar por una comisión por transacción.
  • Una cadena de bloques es software, por lo que debe ser actualizada periódicamente. No es tan obvio cómo hacerlo de forma descentralizada y segura. Las actualizaciones son necesarias para implementar los cambios, y a veces puede ocurrir que existan incompatibilidades entre las versiones antiguas y nuevas del software.
  • Una cadena de bloques no es algo que podamos desarrollar de una vez y luego olvidarla. El trabajo de corregir errores y mejoras es interminable. El software debe estar abierto a los cambios, pero idealmente cerrado a la introducción de nuevos errores durante las actualizaciones.

Desde el punto de vista tecnológico, es mucho más difícil desarrollar una cadena de bloques que un protocolo cliente-servidor común. Las razones son obvias. Sabemos muy bien cómo diseñar y crear protocolos cliente-servidor ya que lo hacemos desde hace varias décadas. Por ejemplo, el conocido protocolo de correo SMTP se creó en los años setenta. Además, en la mayoría de los casos no hay ningún problema con la escalabilidad ni con la necesidad de descentralización. Crear un nuevo servicio global es un problema más social que técnico, y las nuevas empresas se estás esforzando mucho en su adopción.

Puedes leer nuestro artículo donde describimos las diferencias entre las bases de datos tradicionales y la cadena de bloques.

La cadena de bloques recientemente celebró su primera década de existencia, y no recibió mucha atención al principio. No tenemos muchas experiencias en la construcción de redes similares durante el pasado. Por supuesto, tenemos algunas redes distribuidas funcionales. Sin embargo, no existe una red global distribuida y consensuada, con un modelo económico que sea utilizado por las masas.

En este momento, podemos decir que la cadena de bloques atrae la atención, pero no está lista para servir a la gente debido a la inmadurez de su tecnología. Si tienes una mirada crítica sobre el cripto-verso verás redes PoW que fueron atacadas con éxito por famosos ataques del 51%. Las redes PoW son, en su mayoría, lentas y no escalan casi nada. Sólo Bitcoin puede considerarse como una red segura, pero es criticada por algunas personas por sus problemas relacionados con la descentralización. También tenemos redes que utilizan algoritmos de consenso DPoS. Tenemos algunos proyectos que se escalan mucho mejor, pero su descentralización es limitada debido a que sólo un número determinado de nodos validadores pueden participar en la creación de nuevos bloques. Estamos en el comienzo de la era de las cadenas de bloques. Necesitamos construir una cadena de bloques descentralizada, segura y escalable, y debemos verla funcionando durante varios años sin problemas. Además, no se trata sólo de la cadena de bloques en sí, sino también de funciones útiles y de resolver problemas reales. La gente no adoptará un cadena de bloques sólo por el hecho de que existe. La gente adoptará la funcionalidad o los servicios, no la tecnología que los sustenta.


¿Podemos hacerlo en forma digital? Entonces la gente los usará. Los contratos inteligentes son el futuro.

Cardano está construido como un sistema de misión crítica

Cardano es el primer proyecto de cadena de bloques que tomó completa dimensión de la complejidad en la creación de una cadena de bloques. Es por ello que el proyecto se desarrolla a partir de una filosofía científica. Cardano está diseñado y construido por un equipo global de académicos e ingenieros líderes en la materia. Además, se han dedicado al proyecto el pensamiento y el cuidado de algunos de los principales expertos en sus campos. El rigor científico aplicado a sistemas de misión crítica, como los aeroespaciales y bancarios, ha sido utilizado para construir Cardano, con una implementación de alta seguridad.

No es fácil construir una cadena de bloques, como tampoco puede desarrollarse con la calidad esperada a través de un equipo de programadores promedio. Es necesario reunir expertos en criptografía, seguridad de software, redes distribuidas, modelado de amenazas, diseño de protocolos, teoría de juegos, sistemas operativos, economía y, por supuesto, arquitectos y programadores de software. En el caso de Cardano, también hay contratos inteligentes, por lo que se necesitan otros expertos para diseñar lenguajes de programación. Además, el enfoque de Cardano requiere expertos para el desarrollo de métodos formales y no hay mucha gente con tales conocimientos. Como puedes ver, se necesitan muchos expertos involucrados en el proyecto, y no olvides que el proyecto es global. Para que funcione también se necesitan unos cuantos grandes líderes de equipo.


Cumbre 2019 de IOHK

¿Qué es un sistema de misión crítica?

En términos generales, un sistema de misión crítica es un sistema que es esencial para la supervivencia de una empresa u organización. Cuando un sistema de misión crítica falla o se interrumpe, las operaciones se ven afectadas significativamente.

Cuando hay un servicio esencial necesario para las operaciones normales, solíamos llamarlo un sistema de misión crítica. Depende del contexto de uso del software de misión crítica para decidir qué es lo que está potencialmente en peligro. Un sistema de misión crítica puede ser un sistema de navegación para aviones en los que la vida humana está en peligro. En el contexto de los sistemas bancarios, podemos hablar de posibles pérdidas financieras, por lo que a menudo lo llamamos sistema crítico para el negocio.

Para los gigantes de la tecnología de la información, sus bases de datos y servidores pueden ser considerados como sistemas de misión crítica. Así construyen infraestructuras que son capaces de seguir operando sin interrupciones en los casos en que la red está siendo atacada, algunos servidores se caen, la base de datos se daña, hay escasez de energía o algún problema de hardware. Normalmente en estas infraestructuras los servidores y bases de datos se encuentran en diferentes sitios. Entonces cuando algún sitio queda completamente aislado por cualquier razón, otro puede hacerse cargo del servicio. Y los usuarios no notarán nada.

En el contexto de la cadena de bloques, hablamos de una red pública para personas mantenidas por personas. Las criptomonedas quieren sustituir gradualmente al sistema financiero actual, dar libertad a las personas, y permitirles que dependan de las tecnologías de cadenas de bloques. Si una cadena de bloques fallara, y algunos datos se perdieran permanentemente, algunas personas podrían perderlo todo. En muchos casos, las personas depositan su confianza en una cadena de bloques, y si sus posesiones se mantienen en dicha cadena, entonces se puede considerar como un sistema de misión crítica.

Por lo tanto, la cadena de bloques pública no puede interrumpirse bajo ninguna circunstancia, y debe ser capaz de llegar a un consenso a intervalos regulares. Cualquier interrupción puede resultar en situaciones en las que la gente no pueda pagar por algo, probar algo, llegar a alguna parte, realizar algo, etc.

Cardano será un sistema operativo financiero mundial, por lo que merece ser construido como un sistema de misión crítica desde cero. El proyecto apunta a mil millones de usuarios, por lo que debe ser fiable desde el principio. No tiene sentido crear una cadena de bloques rápidamente, esperar a su adopción, para luego intentar mejorar el protocolo.

Desarrollo de métodos formales

El desarrollo de métodos formales es una forma procedimental de construir software poniendo foco en su confiabilidad. Es un método que ayuda a construir sistemas de misión crítica. El uso del método formal no es habitual en los negocios de hoy en día, ya que el desarrollo de estos sistemas es muy lento en comparación con el enfoque habitual aplicado por las empresas comerciales de IT. A menudo necesitan entregar algo, probarlo y después mejorarlo. Esto se debe principalmente a la alta competencia en el mercado.

El enfoque de los métodos formales también es muy costoso. No sólo por el tiempo necesario para la entrega, sino también por la naturaleza científica y matemática que requiere la contratación de expertos con la formación o experiencia adecuada. Además, se carece de herramientas de apoyo para el desarrollo y la verificación de métodos formales.

En pocas palabras, el desarrollo de métodos formales es un tipo particular de técnicas basadas en la matemática para escribir la especificación, el desarrollo y la verificación del resultado: el software creado. La motivación para utilizar el método formal es la expectativa de que el análisis o modelado matemático puede contribuir significativamente a la fiabilidad y robustez de un diseño, y a las especificaciones que luego se utilizarán para escribir el software. En caso de que el diseño, basado en matemáticas y modelado, sea correcto y el software esté escrito siguiendo estrictamente el diseño, existe una alta probabilidad de que el software se comporte como es esperado por los autores y usuarios.

En otras palabras, se utilizan métodos formales para proporcionar una descripción precisa y detallada del sistema que se va a desarrollar. La especificación o diseño es a menudo elaborado por investigadores o científicos, y es utilizada por arquitectos y programadores de software para guiar el desarrollo de software. Además, se utiliza para el proceso de verificación. Cuando se crea el software, debe ser verificable que cumple con todos los requisitos de forma completa y precisa. El diseño debe estar escrito de manera que los programadores puedan entenderlo, escribir el código y finalmente verificarlo. Para ello, se puede utilizar un lenguaje formal con una sintaxis y una semántica precisa e inequívocamente definidas. Los científicos y los programadores deben entenderse entre sí, y no puede haber mucho espacio para el ruido en su interacción.


Ejemplo de la especificación formal del protocolo Ouroboros (sólo una simple función del helper del epoch).

De manera simplificada, hay tres pasos principales en el proceso:

  1. Preparar una especificación para desarrolladores, en su mayoría por investigadores, matemáticos y/o científicos. En este paso, se debe preparar una descripción formal del sistema. Este paso también debe contener una validación de la especificación. Una revisión de otros expertos es muy bien recibida.
  2. Una vez que se prepara la especificación formal o el diseño, los programadores pueden tomarla, estudiarla y empezar a crear software siguiendo estrictamente la especificación.
  3. Una vez desarrollado el software, es el momento de verificar que realmente se comporta en todos los escenarios posibles, tal y como lo dicta la especificación formal. Se pueden usar muchos métodos diferentes para verificar eso. Sin embargo, el software debería funcionar correctamente en el entorno real.

IOHK utiliza especificaciones formales que les permiten verificar que el código final se ajusta a lo que los investigadores preveían inicialmente en sus publicaciones. Al crear especificaciones independientes de la implementación, pueden construir componentes del sistema utilizando diferentes lenguajes y confiar en que trabajarán juntos.

Vale la pena mencionar que IOHK decidió usar el lenguaje de programación funcional Haskell, lo que es una gran elección para el proyecto, regido por los métodos formales, ya que que el código se puede verificar fácilmente según las especificaciones.

En el pasado, IOHK publicó muchas especificaciones de diseño o especificaciones formales. Por ejemplo:

Hay muchas otras especificaciones para cada parte del proyecto, por ejemplo, Ouroboros PoS, billetera, modelo UTxO, etc.

Resumen

La construcción de un proyecto de misión crítica requiere tiempo, por lo que la crítica por esperar demasiado tiempo para su entrega no es apropiada. Construir software de alta calidad toma tiempo, Cardano puso la vara aún más alta, y el equipo de IOHK decidió usar los métodos formales. Todo eso tuvo que ejecutarse desde cero, y en el camino Charles logró encontrar muchos grandes científicos y expertos.

Cardano estará listo para los negocios reales en 2020. Será seguro, descentralizado y mucho más escalable que sus competidores. En 2021 podemos esperar una mejor escalabilidad (fase Basho) y una mejor gobernanza (fase Voltaire). Sin embargo, si todo va bien, no debería haber necesidad de mejorar o arreglar lo que ya se ha entregado. Gracias a ello, Cardano puede tener una ventaja competitiva.


Considera la posibilidad de delegar tus monedas ADA en Cardanians.

Si te gustan nuestros artículos, puedes apoyarnos con una donación en ADA:

DdzFFzCqrhseNP1C9XEs1MA82rgnVZwNpeiNCbLxrJfRzwaceXB9VYqPFYyRrYegc67SERjcQ1xvwB6jryp5vgGUf1cvzbeZP2a92tQe