Cosmos, el Internet de las cadenas de bloques

in #blockchain5 years ago (edited)

Dentro del ecosistema de las cadenas de bloques es muy bien conocido que dos de los más importantes desafíos que tiene que enfrentar esta tecnología son la escalabilidad y la interoperabilidad.

Cosmos pretende llevar a las cadenas de bloques a un siguiente nivel resolviendo estos dos desafíos.

El problema de la escalabilidad e interoperabilidad

1) Escalabilidad

Para que las cadenas de bloques abiertas como Bitcoin y Ethereum realmente logren competir con sistemas transaccionales como Visa y PayPal, deben estar en la capacidad de aumentar drásticamente su capacidad de procesamiento. Como referencia, PayPal tiene la capacidad de procesar 193 transacciones por segundo; Visa alrededor de 1600 tps; Ethereum, 20 tps; y, Bitcoin, solamente 7 tps.

Tanto Bitcoin como Ethereum han encontrado soluciones al problema de la escalabilidad. En el primer caso, podemos poner como ejemplo SegWit y Lightning Network; en el segundo, sharding o fragmentación y Plasma.

2) Interoperabilidad

Actualmente, tenemos un sinnúmero de protocolos y plataformas que operan diferentes cadenas de bloques con diversas propuestas de valor y propósitos. De igual manera, en el mundo financiero tradicional, tenemos varios sistemas de pagos y de mensajería como SWIFT, ACH, SEPA, etcétera. El problema radica en el hecho de que es extremadamente complejo para estas plataformas comunicarse entre sí. La cadena de bloques de Bitcoin no puede saber qué está ocurriendo en Ethereum y viceversa. Estas estructuras actúan como silos que no comparten información entre sí.

Los intercambios atómicos que, a pesar de no representar una verdadera solución de interoperabilidad entre blockchains, ofrecen intercambios de criptoactivos entre diferentes cadenas de bloques de persona a persona, sin la participación de un intermediario. Del mismo modo, es mucho más difícil cuando los sistemas bancarios tradicionales quieren comunicarse con el criptomundo. De cierta forma, los intercambios centralizados —DCE, por sus siglas en inglés— actúan como intermediarios entre los dos mundos, si bien estas organizaciones, al ser estructuras centralizadas, son extremadamente vulnerables a ataques informáticos y robos de fondos; no es necesario mencionar casos específicos porque ocurren con demasiada frecuencia.

Cosmos, el Internet de las cadenas de bloques

Cosmos aspira a convertirse en el Internet de las blockchains, resolviendo de una vez por todas el problema de interoperabilidad entre las cadenas de bloques. La arquitectura de Cosmos está conformada por varias cadenas de bloques independientes llamadas «zonas» , las que se encuentran unidas a una cadena de bloques central llamada «hub».

cosmos.jpg

Imagen: Brett Ritchie - Unsplash

Esta visión se logra a través de un conjunto de herramientas de código abierto como Tendermint, Cosmos SDK e IBC —Inter-blockchain Communication Protocol, en inglés— , diseñadas para permitir a las personas crear aplicaciones blockchain personalizadas, seguras, escalables e interoperables.

El hub de Cosmos contiene una criptomoneda de activos múltiples que utiliza la Prueba de Participación —PoS, por sus siglas en inglés— como algoritmo de consenso. Su sistema de gobernanza simple permite a la red ser resiliente, adaptarse y escalar con relativa facilidad.

El hub y las zonas de Cosmos se comunican entre sí a través del IBC, este protocolo es una suerte de UDP o TCP virtual para las blockchains. Los criptoactivos pueden transferirse entre zonas de una manera rápida y segura sin la necesidad de intercambios de liquidez entre zonas. Todas las transferencias pasan a través del hub de Cosmos, el que lleva un registro de las transacciones que ocurren entre zonas.

¿Qué es Tendermint Core y ABCI?

Tradicionalmente, una cadena de bloques consta de tres capas —red, consenso y aplicación— que deben ser construidas desde cero. Ethereum simplificó el desarrollo de aplicaciones descentralizadas —DApps, por sus siglas en inglés— al proporcionar una cadena de bloques con máquina virtual —EVM, por sus siglás en inglés— en la que cualquier persona puede implementar contratos inteligentes.

Cosmos se basa en el motor Tendermint que consta de dos partes principales:

  1. Tendermint Core: motor de consenso BFT —Byzantine Fault Tolerance, en inglés— y PoS —Proof of Stake, en inglés—
  2. Application Blockchain Interface —ABCI—: replicación BFT de DApps en múltiples lenguajes de programación.

Tendermint Core es una solución que empaqueta las capas de red y consenso de una cadena de bloques en un motor genérico, permitiendo a los desarrolladores enfocarse en el desarrollo de aplicaciones en lugar del complejo protocolo subyacente. Como resultado, Tendermint ahorra cientos de horas de tiempo de desarrollo. Es necesario tener en cuenta que el término «Tendermint» también designa el nombre del algoritmo de consenso tolerante a fallas bizantinas —BFT, por sus siglas en inglés— utilizado por el motor de Tendermint Core.

El motor de Tendermint Core está conectado a la aplicación mediante un protocolo denominado Application Blockchain Interface —ABCI, por sus siglas en inglés—. Este protocolo puede «envolverse» con cualquier lenguaje de programación, lo que permite a los desarrolladores elegir el que se ajuste a sus necesidades.

Propiedades de Tendermint

  1. Tendermint es un motor de consenso independiente de la aplicación.
  2. Tendermint Core reduce el tiempo de desarrollo de una cadena de bloques de años a semanas.
  3. Puede ser utilizado para crear tanto cadenas de bloques abiertas como cerradas. Tendermint Core maneja la creación de redes y el consenso para una cadena de bloques, lo que significa que ayuda a los nodos a propagar transacciones y a los validadores a acordar un conjunto de transacciones para agregar a la cadena.
  4. Alto rendimiento: tiene la capacidad de procesar 10 mil transacciones por segundo y generar un bloque por segundo.
  5. Finalidad instantánea: las bifurcaciones no ocurren mientras más de un tercio de los validadores sean honestos. Los usuarios pueden estar seguros de que sus transacciones finalizan tan pronto como se crea un bloque —lo que no ocurren en las blockchains PoW como Bitcoin y Ethereum— .
  6. El consenso de Tendermint no solo es tolerante a fallas, sino que también rinde cuentas. Si la cadena de bloques se bifurca, hay una forma de determinar responsabilidades. Esta característica evita los ataques de doble gasto y censura.
  7. Clientes con seguridad simple y mejorada, ideales para ser usados en dispositivos móviles e IoT. En contraste, los clientes de Bitcoin, al ser más complejos, requieren de especificaciones más exigentes, lo que los hace poco prácticos para ciertos casos de uso.

Cosmos SDK

Tendermint Core reduce el tiempo de desarrollo de una cadena de bloques de años a semanas, no obstante, la construcción de una aplicación ABCI segura desde cero sigue siendo una tarea difícil. Para esto existe el SDK de Cosmos que es un marco general que simplifica el proceso de creación de aplicaciones blockchain seguras sobre Tendermint Core.

galaxia.jpg

Imagen: Alexander Andrews - Unsplash

El objetivo de Cosmos SDK es crear un ecosistema de módulos que permita desarrollar aplicaciones específicas sin tener que codificar desde cero. Cualquier persona puede crear un módulo para el SDK de Cosmos, del mismo modo, emplear módulos listos que pueden ser importados a las aplicaciones. Viene también con un conjunto de herramientas de desarrollo útiles para crear interfaces de línea de comandos —CLI, por sus siglas en inglés—, servidores REST y una variedad de bibliotecas de uso común.

El SDK de Cosmos, como todas las herramientas de Cosmos, está diseñado para ser modular. Permite a los desarrolladores construir sobre Tendermint Core. Sin embargo, se puede utilizar con cualquier otro motor de consenso que implemente la ABCI. Conforme pase el tiempo, se espera que surjan múltiples SDK, construidos con diferentes modelos de arquitectura y compatibles con múltiples motores de consenso, todo dentro de la red de Cosmos.

Conexión entre cadenas de bloques

La conexión entre blockchains se logra a través del protocolo IBC. El principio detrás de este protocolo es bastante simple. Por ejemplo, asumamos que una cuenta de la cadena quiere enviar 100 tokens a la cadena B. A continuación, ocurren una serie de eventos que permiten llevar a cabo dicha transacción con éxito.

  1. Rastreo: continuamente, la cadena B recibe los encabezados de las transacciones de la cadena A y viceversa. Esto quiere decir que cada cadena puede rastrear el conjunto de validaciones de la otra. Esencialmente, cada cadena ejecuta un cliente ligero de la otra.
  2. Vinculación: cuando la transacción se inicia, los 100 tokens son bloqueados en la cadena A y vinculados con la B.
  3. Prueba de relevo o posta: una prueba de que los 100 tokens están vinculados se transmite de la cadena A la B.
  4. Validación: la prueba de relevo se verifica en la cadena B contra el encabezado de la cadena A y, si es válida, se crean 100 cupones del token en la cadena B. Considerar que los tokens que se han creado en la cadena B no son reales ya que estos existen solamente en la cadena A. Dicho de otro modo, los tokens en la cadena B son una representación —cupones— de los tokens de la cadena A. La validación provee de una prueba de que estos tokens están bloqueados en la cadena A.

El Internet de las cadenas de bloques

IBC es un protocolo que permite que dos cadenas de bloques heterogéneas transfieran tokens entre sí. A partir de ahí, ¿cómo creamos una red de blockchains? Conectando entre sí cada blockchain a través de conexiones IBC directas. El principal problema con este enfoque es que el número de conexiones en la red crece de forma cuadrada con el número de blockchains. Si hay 100 cadenas en la red y cada una necesita mantener una conexión IBC, estamos hablando de 4950 conexiones.

Para resolver esto, Cosmos propone una arquitectura modular con dos clases de blockchain: hubs y zonas. Las zonas son cadenas de bloques heterogéneas regulares y los hubs son cadenas de bloques específicamente diseñadas para conectar zonas entre sí. Cuando una zona crea una conexión IBC con un hub, puede acceder automáticamente a todas las demás zonas conectadas a ella. Como resultado, cada zona necesita solamente establecer un número limitado de conexiones con un conjunto restringido de hubs. Los hubs también evitan el doble gasto entre las zonas. Esto significa que cuando una zona recibe un token de un hub, solo necesita confiar en la zona de origen de este token y en el hub.

Conectando cadenas de bloques que no son Tendermint

Hasta ahora, la arquitectura de Cosmos que hemos presentado muestra cómo las cadenas basadas en Tendermint pueden interoperar. La interacción que propone Cosmos no solamente se limita a las cadenas de Tendermint, de hecho, cualquier tipo de blockchain puede conectarse a Cosmos. Existen dos casos que deben distinguirse:

Cadenas de finalidad rápida

Las cadenas de bloques que utilizan cualquier algoritmo de consenso de finalidad rápida pueden conectarse con Cosmos mediante la adaptación de IBC. Por ejemplo, si Ethereum se cambiara a Casper FFG —Friendly Finality Gadget, en inglés— , se podría establecer una conexión directa entre Ethereum y Cosmos.

Cadenas de finalidad probabilística

Para las cadenas de bloques que no tienen una finalidad rápida, como las PoW, las cosas se ponen un poco más complicadas. Para estas cadenas utilizamos un tipo especial de cadena de proxy llamada «Peg-Zone». Una PZ es una blockchain que rastrea el estado de otra blockchain. Una PZ por sí misma tiene una finalidad rápida y, por lo tanto, es compatible con IBC. Su función es establecer la finalidad de la cadena de bloques que vincula.

Imaginemos que queremos vincular la blockchain de Ethereum con Cosmos para poder enviar tokens de una forma bidireccional. Considerando que la cadena de Ethereum —que es PoW— no es de finalidad rápida, se debe crear una PZ para que actúe de puente entre las dos cadenas de bloques.

En primer lugar, la PZ debe decidir un umbral de finalidad para la cadena de origen. Por ejemplo, puede asumir que un bloque dado de la cadena de origen es definitivo cuando se agregan 50 bloques después de aquel. Segundo, se debe implementar un contrato inteligente en Ethereum para que los usuarios que desean transmitir tokens de esta cadena a Cosmos deban enviarlos al contrato. Posteriormente, el contrato bloquea los tokens y, luego de 50 bloques, se libera una representación o cupón de estos tokens en la PZ. Un mecanismo similar se debe utilizar para enviar tokens desde Cosmos hacia Ethereum.

Actualmente, el equipo de Tendermint está trabajando en una PZ para la cadena Ethereum llamada Peggy. La construcción de una PZ con Ethereum es relativamente simple porque esta cadena de bloques está basada en cuentas y corre contratos inteligentes. Por otro lado, construir una PZ para Bitcoin es algo más complicado, sin embargo, teóricamente es posible.

¿Qué es Cosmos? En resumen

  • Cosmos permite la creación tanto de cadenas de bloques públicas como privadas, fáciles de desarrollar a través de Tendermint Core y la modularidad de Cosmos SDK.
  • Cosmos permite que las cadenas de bloques transfieran valor entre sí a través de IBC y Peg-Zones, al mismo tiempo que conservar su soberanía individual.
  • Cosmos proporciona soluciones de escalabilidad horizontal y vertical, permitiendo la participación de millones de usuarios.

El desarrollo de Cosmos está respaldado por la Fundación Interchain, con sede en Suiza. Muchos de los desarrolladores que trabajan en Cosmos son de la compañía que desarrolló Tendermint Core. En particular, Jae Kwon, quien inicialmente propuso Tendermint en 2014, es uno de los desarrolladores líderes y es miembro de la junta de la Fundación Interchain.

Cosmos recaudó aproximadamente $ 16.8 millones en su ICO que terminó en abril de 2017. Desde entonces, el proyecto ha experimentado un proceso de desarrollo metódico. El primer hub lanzado en la red Cosmos es el Hub Cosmos que es una cadena de bloques PoS cuyo token nativo se llama ATOM, en la que las tarifas transaccionales pueden ser pagadas con diferentes tokens. Actualmente, el hub de la blockchain de Cosmos se encuentra en producción, su bloque génesis fue forjado el 13 de marzo de 2019 a las 23:00 UTC.

Finalmente, Cosmos no es un producto sino todo un ecosistema construido sobre un conjunto de herramientas modulares, adaptables e intercambiables. Estas herramientas son la base necesaria para crear el Internet descentralizado y el sistema financiero global del mañana.

avatar_jfbt_steemit_120x120.png
Juan Francisco Bolaños
@criptoEstratega

steemit_divider.png

Referencias:

  • Akbar, K. (6 abril 2018). What is Cosmos Blockchain? The Most Comprehensive Guide. Recuperado de http://bit.ly/2JTayRP
  • Buchman, E., & Kwon, J. (Sin fecha). Cosmos: A Network of Distributed Ledgers. Recuperado el 1 de abril de 2019 de http://bit.ly/2uCxES3
  • Curran, B. (5 diciembre 2018). Guide to Cosmos: The Tendermint-Based Blockchain Ecosystem. Recuperado de http://bit.ly/2JTtjEE
  • Kim, C. (15 marzo 2019). A Blockchain to Connect All Blockchains, Cosmos Is Officially Live. Recuperado de http://bit.ly/2JWrtTD

steemit_divider.png

Lecturas que vas a disfrutar

Una selección de mis mejores artículos:

steemit_divider.png

Academia Blockchain

Academia Blockchain es una iniciativa que crea un espacio para la difusión y conocimiento de la cadena de bloques y las criptomonedas en Latinoamérica.

academiablockchain.jpg

Amigos, están cordialmente invitados a visitarnos en nuestros canales digitales:

Web | YouTube | Twitter | Facebook | Instagram | Telegram | Patreon | Steemit

steemit_divider.png

Compra en Amazon y paga con bitcoin

Compra lo que más te gusta en Amazon y paga con bitcoin y otras criptodivisas a través de Purse.io. Recibe descuentos del 5 al 15 % en tus compras. Regístrate aquí.

steemit_divider.png

Sort:  

Se aprecia que este proyecto COSMO, es muy interesante, dada sus caracterìsticas de intercambio entre bloques o transferencias entre bloques , ademàs de permitir la participaciòn de usuarios pùblicos y privados mediante la creaciòn de bloques que servirìan como un imàn a inversores y desarrolladores.

Congratulations @juanfb! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You made more than 12000 upvotes. Your next target is to reach 13000 upvotes.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Vote for @Steemitboard as a witness to get one more award and increased upvotes!