¿Qué es Cosmos EVM y cómo funciona esta tecnología dentro del ecosistema Cosmos?

¿Qué es Cosmos EVM y cómo funciona esta tecnología dentro del ecosistema Cosmos?

¿Qué es Cosmos EVM?

Cosmos EVM es software de código abierto que permite a los desarrolladores hacer que una cadena Cosmos SDK sea compatible con EVM. Por tanto, no es una blockchain propia, ni un token, ni tampoco lo mismo que Cosmos Hub o ATOM.

En términos simples, Cosmos EVM añade un entorno en el que las aplicaciones de Ethereum pueden ejecutarse en una cadena Cosmos autónoma. Con ello, un desarrollador puede construir una nueva L1 o ampliar una cadena Cosmos SDK existente con soporte para tecnología de Ethereum.

Una cadena así define por sí misma las reglas principales. Piense en el conjunto de validadores propio, la gobernanza, las comisiones, los módulos activos y las reglas de acceso. Un validador es un participante que verifica nuevos bloques y ayuda a que la red alcance consenso.

Cosmos EVM está diseñado para cadenas que quieren tomar sus propias decisiones, pero al mismo tiempo aprovechar el conocido mundo de Ethereum. El repositorio incluye, por ejemplo, evmd: una implementación de referencia para configurar una cadena compatible con EVM.

El software es un fork de evmOS y está bajo la licencia de código abierto Apache-2.0. Es importante saber que Cosmos EVM todavía se encuentra en la fase v0.x. Eso significa que las futuras actualizaciones, antes de una versión v1, aún pueden incluir cambios técnicos importantes.


Puntos clave

  • Cosmos EVM es software para hacer que una cadena Cosmos SDK sea compatible con EVM.
  • No es una blockchain autónoma ni un token.
  • Cada cadena elige por sí misma, entre otras cosas, validadores, gobernanza, comisiones y reglas de acceso.
  • Gracias a ello, las aplicaciones de Ethereum y los contratos inteligentes de Solidity pueden ejecutarse en una cadena Cosmos.
  • Cosmos EVM es de código abierto y todavía se encuentra en la fase v0.x.

¿Cómo funciona Cosmos EVM?

Cosmos EVM permite que una cadena procese tanto transacciones normales de Cosmos como transacciones de Ethereum. El núcleo de esto es el módulo x/vm, que gestiona la ejecución de la EVM, el gas, las comisiones y el almacenamiento de los cambios.

¿Cómo funciona esto en la práctica? Una transacción de Ethereum se empaqueta primero como MsgEthereumTx. De este modo, la transacción encaja en la forma en que la Cosmos SDK procesa las transacciones. Después, el módulo extrae la transacción de Ethereum de ese paquete y ejecuta la EVM.

Si la transacción tiene éxito, los cambios se almacenan en el almacén de Cosmos SDK. Si la ejecución falla, el cambio temporal puede revertirse. Esto es importante: una transacción fallida no debe dejar cambios ejecutados solo parcialmente.

Bajo el capó, Cosmos EVM tiene, en términos generales, tres componentes:

  • CometBFT: gestiona el consenso, es decir, cómo los validadores deciden juntos qué nuevo bloque es válido.
  • ABCI: la conexión técnica entre CometBFT y la aplicación que se ejecuta en la cadena.
  • go-ethereum (geth): proporciona funcionalidad de EVM, como la ejecución de transacciones de Ethereum.

Cosmos EVM admite distintos tipos de transacciones de Ethereum, entre ellos legacy/EIP-155, EIP-2930, EIP-1559 y EIP-7702. Las transacciones legacy no protegidas están desactivadas por defecto. Las funciones exactas disponibles pueden variar según la cadena Cosmos EVM.

Otro componente importante son las precompilaciones. Se trata de direcciones fijas en las que un contrato inteligente puede invocar una función nativa. En lugar de ejecutar bytecode EVM normal, una precompilación ejecuta directamente código Go. Gracias a ello, un contrato de Solidity puede, por ejemplo, usar funciones de módulos de Cosmos SDK, si la cadena ha activado esa posibilidad.

Ejemplo: un contrato inteligente puede, mediante una precompilación, ejecutar una acción de token nativa o iniciar una transferencia IBC. En ese caso, el contrato no tiene que reconstruir por completo por sí mismo esa funcionalidad de Cosmos.

¿Qué papel desempeña la Ethereum Virtual Machine dentro de Cosmos EVM?

La Ethereum Virtual Machine, o EVM, es dentro de Cosmos EVM el entorno que ejecuta bytecode de Ethereum y contratos inteligentes de Solidity. Puede verse la EVM como la capa de compatibilidad entre las aplicaciones de Ethereum y la infraestructura de Cosmos que hay debajo.

Gracias a ello, los desarrolladores pueden seguir utilizando muchos flujos de trabajo conocidos de Ethereum. Piense en MetaMask, Hardhat, Foundry, Remix, ethers.js y viem. Los contratos de Solidity que funcionan en Ethereum pueden, en principio, desplegarse en una cadena Cosmos EVM sin modificar el código del contrato.

Cosmos EVM ofrece para ello, entre otras cosas, JSON-RPC compatible con Ethereum, tipos de transacción, direcciones y funcionalidad de cuentas. En términos simples, JSON-RPC es la forma estándar en que una wallet o una aplicación envía solicitudes técnicas a una blockchain. Su wallet de criptomonedas puede así comunicarse con una cadena Cosmos EVM adecuada de una manera familiar.

Una misma clave subyacente puede tener dos representaciones de dirección: una dirección hexadecimal de Ethereum y una dirección Bech32 de Cosmos. Hexadecimal es el formato de dirección conocido que comienza con 0x. Bech32 es el formato legible de Cosmos con un prefijo de la cadena correspondiente. Son dos formas de la misma clave subyacente.

Además, una cadena Cosmos EVM utiliza dos tipos de ID de cadena: un ID de cadena de Cosmos y un ID de cadena EVM numérico aparte. Estos ayudan al software a reconocer el entorno correcto y las reglas de las transacciones.

La compatibilidad es amplia, pero no es literalmente idéntica a Ethereum. Cosmos EVM admite opcodes de EVM, EIPs e interfaces ERC hasta la hardfork Prague. Las transacciones blob de EIP-4844 y PREVRANDAO de EIP-4399 no son compatibles.

¿Cómo apoya Cosmos EVM la interoperabilidad?

Cosmos EVM puede apoyar la interoperabilidad al incorporar IBC en la cadena. IBC es un protocolo que permite a blockchains independientes enviarse datos, mensajes y tokens entre sí.

Eso no significa que cada cadena Cosmos EVM esté conectada automáticamente con cualquier otra blockchain. Para la comunicación se necesitan, entre otras cosas, compatibilidad con IBC, una conexión, canales, relayers y una contraparte compatible. Cosmos EVM tampoco establece por sí mismo una conexión directa con Ethereum mainnet.

A través de precompilaciones, los contratos EVM también pueden usar funciones de otros módulos de Cosmos SDK. Piense en staking, distribución, gobernanza, funciones bancarias y transferencias IBC. Las posibilidades exactas dependen de lo que el desarrollador de esa cadena haya añadido y activado.

¿Cómo funciona la comunicación con otras blockchains de Cosmos?

La comunicación con otras blockchains de Cosmos se realiza mediante paquetes IBC. Un paquete es simplemente un conjunto de datos que debe pasar de una blockchain a otra.

Primero, la cadena de origen registra que existe ese paquete. Después, un relayer recoge el mensaje y lo entrega, junto con una prueba criptográfica, a la otra blockchain. Por tanto, un relayer transporta datos, pero no custodia de forma centralizada sus tokens.

La blockchain receptora utiliza un cliente ligero de IBC para verificar esa prueba. Un cliente ligero mantiene información compacta sobre el estado de consenso de la otra blockchain. Así puede comprobar si la información enviada realmente está en la cadena de origen.

Tras establecer una conexión IBC, dos blockchains obtienen cada una un enlace al cliente ligero de la otra parte. Las aplicaciones utilizan después puertos y canales para enviar paquetes. Una combinación de portID y channelID indica a dónde debe ir un paquete.

Los canales pueden ser ordered o unordered. En los ordered, los paquetes deben llegar en el mismo orden. En los unordered, el orden de llegada puede variar.

Para una cadena Cosmos EVM, los contratos de Solidity pueden iniciar movimientos de tokens mediante la precompilación ICS-20. ICS-20 es el estándar dentro de IBC para enviar tokens fungibles, es decir, tokens intercambiables de la misma clase. Los activos IBC recibidos también pueden estar disponibles para contratos EVM como precompilaciones ERC-20 dinámicas a través del módulo ERC-20.

¿Qué papel desempeña IBC dentro de Cosmos EVM?

IBC es la capa de protocolo que permite a una cadena Cosmos EVM intercambiar mensajes y tokens con otras blockchains compatibles con IBC. Para los desarrolladores de Solidity, la precompilación ICS-20 es una herramienta importante en este contexto.

Con ella, un contrato puede iniciar una transferencia entre cadenas e introducir, entre otros datos, el puerto de origen, el canal, la denominación del token, el importe, el destinatario y un timeout. Un timeout es el tiempo límite o la altura de bloque máxima dentro de la cual debe procesarse un paquete.

La precompilación ICS-20 tiene una dirección fija: 0x0000000000000000000000000000000000000802. Esa dirección solo funciona si la cadena correspondiente ha activado esta precompilación.

Cosmos EVM también añade callbacks para transferencias ICS-20. Un callback es una función que puede invocarse automáticamente cuando ha ocurrido un paso determinado:

  • En la cadena de destino, onRecvPacket puede ejecutarse en cuanto se recibe un paquete.
  • En la cadena de origen, onAcknowledgePacket puede responder a una confirmación.
  • En la cadena de origen, onTimeoutPacket puede responder si la transferencia no se completa a tiempo.

Gracias a ello, un contrato inteligente puede ejecutar lógica adicional después de recibir tokens, por ejemplo un swap en un DEX o añadir liquidez. La transferencia de tokens y el callback se ejecutan juntos dentro del procesamiento de ese paquete. Por tanto, ambos tienen éxito o ambos fallan.

Sin embargo, existe una limitación práctica: para una transferencia IBC, el destinatario debe usar actualmente una dirección Bech32. Todavía no se admite una dirección hexadecimal 0x como destinatario para este fin. La dirección del remitente sí se convierte automáticamente de hexadecimal a Bech32.

Los callbacks hacen que las aplicaciones entre cadenas sean más potentes, pero también más complejas. Los desarrolladores deben gestionar bien los timeouts, las acknowledgements, los datos memo, los límites de gas y el manejo de errores.

¿Para qué puede utilizarse Cosmos EVM?

Cosmos EVM se utiliza sobre todo para construir o ampliar una cadena Cosmos SDK en la que puedan ejecutarse contratos inteligentes de Solidity y herramientas de Ethereum ya existentes. Esto resulta útil para equipos que desean combinar la compatibilidad con Ethereum con la libertad de una L1 propia.

Un desarrollador puede decidir por sí mismo cómo será esa cadena. Por ejemplo, qué validadores participan, cómo funciona la gobernanza, qué comisiones se aplican, quién puede desplegar contratos y qué módulos de Cosmos SDK están disponibles.

Algunas aplicaciones posibles son:

  • Construir aplicaciones EVM: los contratos inteligentes de Solidity existentes pueden ejecutarse en la cadena.
  • Usar funciones nativas de Cosmos: los contratos inteligentes pueden invocar staking, delegación, gobernanza e interacciones nativas con tokens mediante precompilaciones.
  • Ejecutar flujos de tokens IBC: los contratos pueden enviar tokens a otra blockchain compatible con IBC.
  • Automatizar lógica entre cadenas: los callbacks pueden responder a la recepción, la confirmación o un timeout de una transferencia.
  • Ofrecer acceso similar al de ERC-20: los tokens nativos de Cosmos y los activos IBC entrantes pueden hacerse utilizables para contratos EVM mediante el módulo ERC-20.
  • Restringir el acceso: una cadena puede configurar una EVM permissioned, en la que determinadas direcciones sí o no pueden desplegar o invocar contratos.

Estas posibilidades no están disponibles automáticamente en todas partes. Que una aplicación pueda usar IBC, staking o gobernanza desde un contrato inteligente depende de los módulos y precompilaciones activos en esa cadena concreta.

¿Cuál es la diferencia entre Cosmos EVM y otras redes EVM?

Cosmos EVM se diferencia de otras redes EVM porque no es una red independiente, sino una pila de software para cadenas autónomas de Cosmos SDK. Por tanto, no se compara uno a uno con Ethereum, una L1 EVM concreta o una Layer 2.

La compatibilidad con Ethereum sí es una parte importante. Los desarrolladores pueden usar herramientas de Ethereum, JSON-RPC y contratos inteligentes de Solidity. Al mismo tiempo, la infraestructura subyacente funciona de otra manera: una cadena Cosmos EVM utiliza consenso CometBFT y un conjunto propio de validadores.

Con CometBFT, la finalidad puede producirse tras un bloque comprometido, normalmente en torno a 1 a 2 segundos. La finalidad significa, en términos simples, que después de esa confirmación un bloque ya no debería poder revertirse. Para ello, al menos dos tercios del stake deben comprometer un bloque.

Cosmos EVM está diseñado para una L1 soberana. Esa cadena gestiona por sí misma el conjunto de validadores, la gobernanza y la economía de comisiones. Esto es distinto de las rollups, que dependen en parte de una capa de liquidación para parte de su diseño y seguridad.

La economía de comisiones también puede diferir de la de Ethereum. Cosmos EVM utiliza EIP-1559, pero la base fee va a validadores y delegadores en lugar de quemarse. Además, una cadena puede desactivar la base fee o establecer un precio mínimo del gas.

Además, Cosmos EVM añade posibilidades que no se encuentran de forma estándar en todas las redes EVM: acceso a módulos de Cosmos SDK mediante precompilaciones e interoperabilidad basada en IBC. Pero incluso entre dos cadenas Cosmos EVM puede haber grandes diferencias. Cada cadena puede añadir sus propias precompilaciones y decidir qué funciones están activas.

No todos los componentes específicos de Ethereum o de las rollups están presentes. Por ejemplo, las transacciones blob de EIP-4844 y PREVRANDAO de EIP-4399 no están disponibles.

¿Cuáles son las ventajas y limitaciones de Cosmos EVM?

Cosmos EVM combina herramientas conocidas de Ethereum con la flexibilidad de una cadena autónoma de Cosmos SDK. Esto ofrece ventajas interesantes, pero también conviene analizar con atención la cadena concreta sobre la que se construye o que se utiliza.

Las ventajas:

  • Entorno EVM conocido: pueden utilizarse contratos inteligentes de Solidity y muchas herramientas de Ethereum.
  • Finalidad rápida: las cadenas CometBFT pueden ofrecer tiempos de bloque rápidos y finalidad tras un bloque comprometido.
  • Acceso a funciones de Cosmos: las precompilaciones pueden permitir que los contratos inteligentes interactúen con staking, gobernanza, activos bancarios nativos y transferencias IBC.
  • Gran libertad de configuración: los desarrolladores eligen módulos, precompilaciones activas, parámetros de comisiones y políticas de acceso.
  • Posibilidades entre cadenas: IBC y los callbacks permiten flujos de tokens más complejos entre blockchains compatibles.

Las limitaciones:

  • No existe una experiencia uniforme: los conjuntos de validadores, los endpoints RPC, los canales IBC, los tokens disponibles, las precompilaciones y los parámetros difieren según la cadena.
  • No todas las funciones EVM existen: faltan las transacciones blob de EIP-4844 y PREVRANDAO de EIP-4399.
  • Limitación de direcciones IBC: las transferencias ICS-20 requieren actualmente una dirección Bech32 del destinatario, no una dirección hexadecimal.
  • Técnica adicional con otros decimales: un token nativo con 18 decimales es la vía más sencilla y recomendada. Una cadena existente con una cantidad distinta de decimales necesita x/precisebank, lo que complica la integración.
  • El software sigue en desarrollo: las versiones v0.x pueden incluir cambios incompatibles antes de una versión v1.

También es importante: una auditoría o la compatibilidad con EVM no garantizan automáticamente que cada implementación sea segura. Una configuración concreta, contratos inteligentes, canales IBC e integraciones entre cadenas pueden tener sus propios riesgos.

Conclusión

Cosmos EVM es una capa de construcción flexible para desarrolladores que desean combinar su propia cadena Cosmos SDK con el conocido entorno de Ethereum. Por tanto, no es una blockchain ni un token aparte, sino software que permite que contratos inteligentes de Solidity, herramientas de Ethereum y JSON-RPC funcionen en una cadena Cosmos autónoma.

La gran fortaleza reside en la combinación: compatibilidad con EVM por un lado, y módulos de Cosmos SDK, un conjunto propio de validadores e IBC por el otro. Gracias a ello, los contratos inteligentes pueden, por ejemplo, usar funciones nativas de tokens o transferencias entre cadenas.

Al mismo tiempo, Cosmos EVM no es exactamente igual en todas partes. Las funciones, las comisiones, las conexiones IBC, las precompilaciones y los ajustes técnicos varían según la cadena. Por eso, para usuarios y desarrolladores es importante fijarse siempre en la implementación concreta, no solo en la etiqueta Cosmos EVM.

Acerca de Finst

Finst es una plataforma de criptomonedas líder en los Países Bajos que ofrece comisiones de trading ultrabajas, seguridad de nivel institucional y un conjunto integral de servicios cripto como trading, custodia, staking y rampas fiat de entrada y salida. Finst, fundada por el antiguo equipo central de DEGIRO, está autorizada como proveedor de servicios de criptoactivos por la Autoridad Neerlandesa de los Mercados Financieros (AFM) y presta servicios tanto a clientes minoristas como institucionales en 30 países europeos.

La plataforma de criptomonedas para todos los inversores

Tanto si es un trader activo como un inversor a largo plazo, Finst le permite hacer crecer su patrimonio en criptomonedas con confianza y tranquilidad.

Abrir cuenta gratis