Polkadot y Cosmos son protocolos que proporcionan una interfaz para que diferentes state machines (máquinas de estado) se comuniquen entre sí. Ambos protocolos se basan en la tesis de que en el futuro habrá múltiples blockchains que necesitarán interoperar entre sí, en lugar de que las blockchains individuales existan de forma aislada.
Modelo #
Polkadot utiliza un modelo fragmentado (sharded) en el que cada shard del protocolo tiene una función de transición de estado abstracta (STF). Polkadot utiliza WebAssembly (Wasm) como “meta-protocolo”. La STF de un shard puede ser abstracta siempre que los validadores de Polkadot puedan ejecutarla dentro de un entorno Wasm.
Los shards de Polkadot se llaman “parachains“. Cada vez que una parachain quiere hacer una transición de estado, envía un bloque (lote de transiciones de estado) junto con una prueba de estado que los validadores de Polkadot pueden verificar de forma independiente. Estos bloques se finalizan para las parachains cuando son finalizados por la Relay Chain de Polkadot, la cadena principal del sistema. Como tal, todas las parachains comparten el estado con todo el sistema, lo que significa que una reorganización de la cadena de una sola parachain requeriría una reorganización de todas las parachains y la Relay Chain.
Cosmos utiliza un modelo de bridge-hub (puente-hub) que conecta las cadenas Tendermint. El sistema puede tener múltiples hubs (el principal es el “Cosmos Hub”), pero cada hub conecta un grupo de cadenas exteriores, llamadas “zonas”. Cada zona es responsable de asegurar la cadena con un conjunto de validadores con suficiente stake y descentralizados. Las zonas se envían mensajes y tokens entre sí a través del hub mediante un protocolo llamado Inter-Blockchain Communication (IBC). Como las zonas no comparten el estado, la reorganización de una zona no reorganizaría otras zonas, lo que significa que cada mensaje está ligado a la confianza del destinatario en la seguridad del remitente.
Arquitectura #
Polkadot #
Polkadot tiene una Relay Chain que actúa como cadena principal del sistema. Todos los validadores de Polkadot están en la Relay Chain. Las parachains tienen collators, que construyen y proponen bloques de parachain a los validadores. Los collators no tienen ninguna responsabilidad de seguridad, y por lo tanto no requieren un sistema de incentivos robusto. Los collators pueden presentar un único bloque de parachain para cada bloque de la Relay Chain cada 6 segundos. Una vez que una parachain envía un bloque, los validadores realizan una serie de comprobaciones de disponibilidad y validez antes de enviarlo a la cadena final.
Los slots de parachain son limitados, por lo que los candidatos a parachain participan en una subasta para reservar un slot durante un máximo de dos años. Para las cadenas que no disponen de fondos para un slot de parachain o la necesidad de ejecutar con un tiempo de bloque de seis segundos, Polkadot también tiene parathreads. Las parathreads se ejecutan sobre una base de pago por uso, pagando sólo por ejecutar un bloque cuando lo necesitan.
Para interactuar con las cadenas que quieren utilizar su propio proceso de finalización (por ejemplo, Bitcoin), Polkadot tiene parachains puentes que ofrecen compatibilidad bidireccional.
Cosmos #
Cosmos tiene una cadena principal llamada “Hub” que conecta otras blockchains llamadas “zonas”. Cosmos puede tener múltiples hubs, pero en este resumen se considerará un único hub. Cada zona debe mantener su propio estado y por lo tanto tener su propia comunidad de validadores. Cuando una zona quiere comunicarse con otra, envía paquetes a través del IBC. El Hub mantiene un ledger de múltiples tokens de balances de tokens (los mensajes que no son de transferencia se retransmiten pero su estado no se almacena en el Hub).
Las zonas monitorizan el estado del Hub con un light client (cliente ligero), pero el Hub no rastrea los estados de las zonas. Las zonas deben utilizar un algoritmo de finalidad determinística (actualmente, todas utilizan Tendermint) e implementar la interfaz IBC para poder enviar mensajes a otras cadenas a través del Hub.
Cosmos también puede interactuar con cadenas externas mediante el uso de “peg zones”, que son similares a las parachains puentes.
Consenso #
Polkadot utiliza un protocolo de consenso híbrido con dos subprotocolos: BABE y GRANDPA, denominados conjuntamente “Fast Forward”. BABE (Blind Assignment for Blockchain Extension) utiliza una función aleatoria verificable (VRF) para asignar slots a los validadores y un patrón round-robin de reserva para garantizar que cada slot tenga un autor. GRANDPA (GHOST-based Recursive Ancestor Deriving Prefix Agreement) vota on chains, en lugar de bloques individuales. En conjunto, BABE puede crear bloques candidatos para ampliar la cadena finalizada y GRANDPA puede finalizarlos en lotes (hasta millones de bloques a la vez).
Este aislamiento de las tareas ofrece varias ventajas. En primer lugar, supone una reducción de la complejidad del transporte tanto para la producción de bloques como para su finalización. BABE tiene una complejidad lineal, por lo que es fácil de escalar a miles de productores de bloques con poca sobrecarga de red. GRANDPA tiene una complejidad cuadrática, pero se reduce por un factor de latencia, o por el número de bloques que finaliza en un lote.
En segundo lugar, tener la capacidad de ampliar la cadena con bloques no finalizados permite que otros validadores realicen extensas comprobaciones de disponibilidad y validez para garantizar que no se produzcan transiciones de estado no válidas en la cadena final.
Cosmos (tanto el Hub como las zonas) utiliza el consenso Tendermint, un protocolo round-robin que proporciona una finalidad instantánea. La producción de bloques y la finalización están en el mismo camino del algoritmo, lo que significa que produce y finaliza un bloque a la vez. Como es un algoritmo basado en PBFT (como GRANDPA), tiene una complejidad de transporte cuadrática, pero sólo puede finalizar un bloque a la vez.
Mecánica de staking #
Polkadot utiliza Nominated Proof of Stake (NPoS) para seleccionar validadores utilizando el algoritmo secuencial Phragmén. El tamaño del conjunto de validadores se establece por la gobernanza (1_000 validadores previstos) y quienes hacen staking que no quieran ejecutar la infraestructura de validadores pueden nominar hasta 16 validadores. El algoritmo de Phragmén selecciona la asignación óptima de stake, donde lo óptimo se basa en tener el conjunto de stake más uniforme.
Todos los validadores en Polkadot tienen el mismo peso en los protocolos de consenso. Es decir, para alcanzar más de 2/3 de apoyo a una cadena, más de 2/3 de los validadores deben comprometerse con ella, en lugar de 2/3 del stake. Asimismo, las recompensas a los validadores están ligadas a su actividad, principalmente a la producción de bloques y a la justificación de la finalidad, y no a su cantidad de stake. Esto crea un incentivo para nominar a los validadores con stake más bajos, ya que obtendrán mayores rendimientos de sus tokens en staking.
El Cosmos Hub utiliza el Bonded Proof of Stake (una variante del PoS delegado) para elegir a los validadores. Quienes hacen staking deben depositar fondos y enviar una transacción de delegación para cada validador en el que deseen delegar, con el número de tokens a delegar. El Cosmos Hub tiene previsto admitir hasta 300 validadores.
Tanto la votación por consenso como las recompensas se basan en el stake en Cosmos. En el caso de la votación por consenso, deben comprometerse más de 2/3 del stake, en lugar de 2/3 de los validadores. Del mismo modo, un validador con el 10% del stake total ganará el 10% de las recompensas.
Por último, en Cosmos, si un staker (quien hace stake) no vota en un referéndum de gobernanza, los validadores asumen su poder de voto. Por ello, muchos validadores en Cosmos tienen comisión cero para adquirir más control sobre el protocolo. En Polkadot, la gobernanza y el staking son completamente desunidos; el nombramiento de un validador no asigna ningún derecho de voto de gobernanza al validador.
Paso de mensajes #
Polkadot utiliza el Cross-Consensus Message Passing Format (Formato de Paso de Mensajes de Consenso Cruzado -XCM) para que las parachains se envíen mensajes arbitrarios entre sí. Las parachains abren conexiones entre sí y pueden enviar mensajes a través de sus canales establecidos. Los collators son nodos completos de las parachains y nodos completos de la Relay Chain, por lo que los nodos collators son un componente clave del paso de mensajes. Los mensajes no pasan por la Relay Chain, sólo los proofs of post (pruebas de correo) y las operaciones del canal (abrir, cerrar, etc.) van a la Relay Chain. Esto mejora la escalabilidad al mantener los datos en los bordes del sistema.
En el caso de una reorganización de la cadena, los mensajes pueden retroceder hasta el punto de la reorganización basándose en las proof of post de la Relay Chain. El estado compartido entre parachains significa que los mensajes están libres de límites de confianza; todos operan en el mismo contexto.
Polkadot tiene un protocolo adicional llamado SPREE que proporciona una lógica compartida para los mensajes cross-chain (entre cadenas). Los mensajes enviados con SPREE conllevan garantías adicionales sobre la procedencia y la interpretación por parte de la cadena receptora.
Cosmos utiliza un protocolo cross-chain llamado Inter-Blockchain Communication (IBC). La implementación actual de Cosmos utiliza el Hub para pasar tokens entre zonas. Sin embargo, Cosmos tiene una nueva especificación para pasar datos arbitrarios. No obstante, como las cadenas no comparten el estado, las cadenas receptoras deben confiar en la seguridad del origen de un mensaje.
Gobernanza #
Polkadot tiene un sistema de gobernanza multicameral con varias vías para aprobar propuestas. Todas las propuestas pasan en última instancia por un referéndum público, en el que la mayoría de los tokens siempre puede controlar el resultado. Para los referendos de baja participación, Polkadot utiliza un sesgo de quórum adaptativo para establecer el umbral de aprobación. Los referendos pueden contener una variedad de propuestas, incluyendo la asignación de fondos de un Tesoro on-chain. Las decisiones se promulgan on-chain y son vinculantes y autónomas.
Polkadot tiene varios órganos permissionless (sin permiso) on-chain. El principal es el Consejo, que está formado por un conjunto de cuentas que se eligen a la manera de Phragmén. El Consejo representa los intereses de las minorías y, por ello, las propuestas que son aprobadas por unanimidad por el Consejo tienen un umbral de aprobación más bajo en el referéndum público. También existe un Comité Técnico para hacer recomendaciones técnicas (por ejemplo, una actualización de emergencia del runtime (tiempo de ejecución) para corregir un error).
Cosmos utiliza la señalización mediante monedas para aprobar los referendos. La promulgación real de las decisiones de gobernanza se lleva a cabo a través de una bifurcación del protocolo (protocol fork), al igual que otras blockchains. Todos los poseedores de tokens pueden votar, sin embargo, si un delegado se abstiene de votar, entonces el validador en el que delega asume su poder de voto. Los validadores en Polkadot no reciben ningún poder de voto en función de sus nominadores.
Actualizaciones #
Utilizando el meta-protocolo Wasm, Polkadot puede realizar actualizaciones de la cadena y propuestas exitosas sin un hard fork. Cualquier cosa que esté dentro del STF, la cola de transacciones, o los off-chain workers pueden ser actualizados sin bifurcar la cadena.
Como Cosmos no se basa en un meta-protocolo, debe promulgar actualizaciones y propuestas a través de un mecanismo de bifurcación normal.
Marco de desarrollo #
Tanto Cosmos como Polkadot están diseñados de forma que cada cadena tiene su STF y ambos proporcionan soporte para smart contracts tanto en Wasm como en la Ethereum Virtual Machine (Máquina Virtual de Ethereum -EVM-). Polkadot proporciona un compilador de Wasm por adelantado, así como un intérprete (Wasmi) para la ejecución, mientras que Cosmos sólo ejecuta smart contracts en un intérprete.
Las cadenas de Cosmos pueden desarrollarse utilizando el SDK de Cosmos, escrito en Go. El SDK de Cosmos contiene unos 10 módulos (por ejemplo, de staking, de gobernanza, etc.) que pueden incluirse en el STF de una cadena. El SDK se basa en Tendermint.
El principal marco de desarrollo para las parachains es Substrate, escrito en Rust. Substrate viene con FRAME, un conjunto de unos 40 módulos (llamados “pallets”) para utilizar en el STF de una cadena. Más allá del simple uso de pallets, Substrate añade una capa más de abstracción que permite a los desarrolladores componer los pallets de FRAME añadiendo módulos personalizados y configurando los parámetros y valores de almacenamiento iniciales para la cadena.
- POLKADOT PUEDE SOPORTAR UN STF ESCRITO EN CUALQUIER LENGUAJE
- Siempre que compile con su meta-protocolo Wasm. Asimismo, podría seguir utilizando el cliente Substrate (base de datos, RPC, red, etc.); sólo necesita implementar las primitivas en la interfaz.
Conclusión #
Polkadot fue diseñado bajo el principio de que la escalabilidad y la interoperabilidad requieren una lógica de validación compartida para crear un entorno libre de confianza. A medida que se desarrollan más blockchains, su seguridad debe ser cooperativa, no competitiva. Por lo tanto, Polkadot proporciona la lógica de validación compartida y los procesos de seguridad a través de las cadenas para que puedan interactuar sabiendo que sus interlocutores ejecutan dentro del mismo contexto de seguridad.
La red Cosmos utiliza un modelo puente-hub para conectar cadenas con garantías de seguridad independientes, lo que significa que la comunicación entre cadenas sigue estando limitada por la confianza que la cadena receptora tiene en la cadena emisora.