O que é Cosmos EVM e como funciona esta tecnologia no ecossistema Cosmos?

O que é Cosmos EVM e como funciona esta tecnologia no ecossistema Cosmos?

O que é Cosmos EVM?

Cosmos EVM é software de código aberto que permite aos programadores tornar uma cadeia Cosmos SDK compatível com a EVM. Portanto, não é uma blockchain própria, nem um token, e também não é o mesmo que Cosmos Hub ou ATOM.

Em termos simples, o Cosmos EVM acrescenta um ambiente no qual as aplicações Ethereum podem correr numa cadeia Cosmos autónoma. Com isto, um programador pode construir uma nova L1, ou expandir uma cadeia Cosmos SDK existente com suporte para tecnologia Ethereum.

Uma cadeia destas define por si própria as principais regras do jogo. Pense no conjunto de validadores, na governação, nas taxas, nos módulos activos e nas regras de acesso. Um validador é um participante que verifica novos blocos e ajuda a rede a chegar a consenso.

O Cosmos EVM foi construído para cadeias que querem fazer as suas próprias escolhas, mas que ao mesmo tempo querem beneficiar do conhecido universo Ethereum. O repositório inclui, por exemplo, evmd: uma implementação de referência para configurar uma cadeia compatível com a EVM.

O software é um fork do evmOS e está abrangido pela licença open source Apache-2.0. Importa saber que o Cosmos EVM ainda está na fase v0.x. Isto significa que futuras actualizações, antes de um lançamento v1, ainda podem incluir alterações técnicas mais significativas.


Pontos principais

  • O Cosmos EVM é software para tornar uma cadeia Cosmos SDK compatível com a EVM.
  • Não é uma blockchain autónoma nem um token.
  • Cada cadeia escolhe por si, entre outros, validadores, governação, taxas e regras de acesso.
  • Aplicações Ethereum e smart contracts em Solidity podem, assim, correr numa cadeia Cosmos.
  • O Cosmos EVM é open source e encontra-se ainda na fase v0.x.

Como funciona o Cosmos EVM?

O Cosmos EVM permite que uma cadeia processe tanto transacções normais do Cosmos como transacções Ethereum. O núcleo disto é o módulo x/vm, que trata da execução da EVM, do gas, das taxas e do armazenamento das alterações.

Como funciona isto na prática? Uma transacção Ethereum é primeiro embrulhada como MsgEthereumTx. Desta forma, a transacção encaixa na maneira como o Cosmos SDK processa transacções. Depois, o módulo retira a transacção Ethereum desse embrulho e executa-a na EVM.

Se a transacção for bem-sucedida, as alterações são guardadas no store do Cosmos SDK. Se a execução falhar, a alteração temporária pode ser revertida. Isto é importante: uma transacção falhada não deve deixar alterações parcialmente executadas.

Por baixo do capô, o Cosmos EVM tem, de forma geral, três componentes:

  • CometBFT: trata do consenso, ou seja, de como os validadores decidem em conjunto qual o novo bloco válido.
  • ABCI: a ligação técnica entre o CometBFT e a aplicação que corre na cadeia.
  • go-ethereum (geth): fornece funcionalidade EVM, como a execução de transacções Ethereum.

O Cosmos EVM suporta vários tipos de transacções Ethereum, incluindo legacy/EIP-155, EIP-2930, EIP-1559 e EIP-7702. As transacções legacy não protegidas estão desactivadas por defeito. As funcionalidades exactas disponíveis podem variar de uma cadeia Cosmos EVM para outra.

Outro elemento importante são os precompiles. Estes são endereços fixos nos quais um smart contract pode chamar uma função nativa. Em vez de bytecode EVM normal, um precompile executa directamente código Go. Assim, um contrato em Solidity pode, por exemplo, usar funções de módulos do Cosmos SDK, se a cadeia tiver activado essa possibilidade.

Exemplo: um smart contract pode, através de um precompile, executar uma acção de token nativo ou iniciar uma transferência IBC. O contrato não precisa, então, de reconstruir toda essa funcionalidade do Cosmos por si próprio.

Que papel desempenha a Ethereum Virtual Machine no Cosmos EVM?

A Ethereum Virtual Machine, ou EVM, é, no Cosmos EVM, o ambiente que executa bytecode Ethereum e smart contracts em Solidity. Pode ver a EVM como a camada de compatibilidade entre as aplicações Ethereum e a infraestrutura Cosmos por baixo.

Desta forma, os programadores podem continuar a usar muitos fluxos de trabalho Ethereum conhecidos. Pense em MetaMask, Hardhat, Foundry, Remix, ethers.js e viem. Contratos em Solidity que funcionam em Ethereum podem, em princípio, ser implementados numa cadeia Cosmos EVM sem alterações ao código do contrato.

Para isso, o Cosmos EVM oferece, entre outros, JSON-RPC compatível com Ethereum, tipos de transacção, endereços e funcionalidade de contas. Em termos simples, JSON-RPC é a forma padrão como uma carteira ou aplicação envia pedidos técnicos para uma blockchain. A sua carteira de criptomoedas pode, assim, comunicar com uma cadeia Cosmos EVM adequada de forma familiar.

Uma única chave subjacente pode ter duas representações de endereço: um endereço Ethereum hexadecimal e um endereço Cosmos Bech32. Hexadecimal é o formato de endereço conhecido que começa com 0x. Bech32 é o formato legível do Cosmos com um prefixo da cadeia em questão. São duas formas da mesma chave subjacente.

Uma cadeia Cosmos EVM também usa dois tipos de chain ID: um chain ID do Cosmos e um chain ID EVM numérico separado. Estes ajudam o software a reconhecer o ambiente correcto e as regras de transacção.

A compatibilidade é ampla, mas não é literalmente idêntica à Ethereum. O Cosmos EVM suporta opcodes da EVM, EIPs e interfaces ERC até à hardfork Prague. As transacções blob do EIP-4844 e o PREVRANDAO do EIP-4399 não são suportados.

Como é que o Cosmos EVM suporta a interoperabilidade?

O Cosmos EVM pode suportar interoperabilidade ao incluir IBC na cadeia. IBC é um protocolo que permite às blockchains independentes enviar dados, mensagens e tokens entre si.

Isto não significa que cada cadeia Cosmos EVM esteja automaticamente ligada a qualquer outra blockchain. Para haver comunicação, são necessários, entre outros, suporte IBC, uma ligação, canais, relayers e uma contraparte compatível. O Cosmos EVM também não cria, por si só, uma ligação directa ao Ethereum mainnet.

Através de precompiles, os contratos EVM podem ainda usar funções de outros módulos do Cosmos SDK. Pense em staking, distribuição, governação, funções bancárias e transferências IBC. As possibilidades exactas dependem do que o construtor dessa cadeia adicionou e activou.

Como funciona a comunicação com outras blockchains Cosmos?

A comunicação com outras blockchains Cosmos passa por pacotes IBC. Um packet é simplesmente um pacote de dados que tem de passar de uma blockchain para outra.

A cadeia de origem regista primeiro que esse packet existe. Depois, um relayer recolhe a mensagem e entrega-a, juntamente com prova criptográfica, à outra blockchain. Um relayer transporta, portanto, dados, mas não guarda centralmente os seus tokens.

A blockchain receptora usa um light client IBC para verificar essa prova. Um light client mantém informação compacta sobre o estado de consenso da outra blockchain. Assim, pode verificar se a informação enviada está realmente na cadeia de origem.

Depois de estabelecer uma ligação IBC, duas blockchains recebem cada uma uma ligação ao light client da outra parte. As aplicações usam então portas e canais para enviar packets. Uma combinação de portID e channelID indica para onde um packet deve ir.

Os canais podem ser ordered ou unordered. Nos ordered, os packets têm de chegar pela mesma ordem. Nos unordered, a ordem de recepção pode variar.

Numa cadeia Cosmos EVM, os contratos em Solidity podem iniciar movimentos de tokens através do precompile ICS-20. ICS-20 é o padrão dentro do IBC para o envio de fungible tokens, ou seja, tokens fungíveis da mesma espécie. Os activos IBC recebidos podem também ficar disponíveis como precompiles ERC-20 dinâmicos para contratos EVM através do módulo ERC-20.

Que papel desempenha o IBC no Cosmos EVM?

O IBC é a camada de protocolo que permite a uma cadeia Cosmos EVM trocar mensagens e tokens com outras blockchains compatíveis com IBC. Para programadores Solidity, o precompile ICS-20 é aqui uma ferramenta importante.

Com isto, um contrato pode iniciar uma transferência cross-chain e preencher, entre outros, a porta de origem, o canal, a denominação do token, o montante, o destinatário e um timeout. Um timeout é o prazo máximo ou a altura de bloco até à qual um packet tem de ser processado.

O precompile ICS-20 tem um endereço fixo: 0x0000000000000000000000000000000000000802. Esse endereço só funciona se a cadeia em questão tiver activado este precompile.

O Cosmos EVM também acrescenta callbacks para transferências ICS-20. Um callback é uma função que pode ser chamada automaticamente quando uma determinada etapa tiver ocorrido:

  • Na cadeia de destino, onRecvPacket pode correr assim que um packet for recebido.
  • Na cadeia de origem, onAcknowledgePacket pode reagir a uma confirmação.
  • Na cadeia de origem, onTimeoutPacket pode reagir se a transferência não for concluída a tempo.

Desta forma, um smart contract pode executar lógica adicional após receber tokens, por exemplo uma swap numa DEX ou a adição de liquidez. A transferência de tokens e o callback são executados em conjunto no processamento desse packet. Portanto, têm sucesso em conjunto ou falham em conjunto.

Há, contudo, uma limitação prática: para uma transferência IBC, o destinatário tem actualmente de usar um endereço Bech32. Um endereço hexadecimal 0x como destinatário ainda não é suportado para este efeito. O endereço do remetente é, no entanto, convertido automaticamente de hexadecimal para Bech32.

Os callbacks tornam as aplicações cross-chain mais poderosas, mas também mais complexas. Os programadores têm de lidar bem com timeouts, acknowledgements, dados de memo, limites de gas e tratamento de erros.

Para que pode o Cosmos EVM ser usado?

O Cosmos EVM é usado sobretudo para construir ou expandir uma cadeia Cosmos SDK na qual smart contracts em Solidity e ferramentas Ethereum possam correr. Isto é útil para equipas que querem combinar compatibilidade com Ethereum com a liberdade de uma L1 própria.

Um construtor pode decidir por si como essa cadeia deve ser. Por exemplo, quais os validadores que participam, como funciona a governação, quais as taxas aplicáveis, quem pode implementar contratos e quais os módulos do Cosmos SDK disponíveis.

As possíveis aplicações incluem, entre outras:

  • Construir aplicações EVM: smart contracts em Solidity existentes podem correr na cadeia.
  • Usar funções nativas do Cosmos: smart contracts podem, através de precompiles, chamar staking, delegação, governação e interacções nativas com tokens.
  • Executar fluxos de tokens IBC: os contratos podem enviar tokens para outra blockchain compatível com IBC.
  • Automatizar lógica cross-chain: callbacks podem reagir à recepção, confirmação ou timeout de uma transferência.
  • Oferecer acesso semelhante ao ERC-20: tokens nativos do Cosmos e activos IBC recebidos podem ficar utilizáveis para contratos EVM através do módulo ERC-20.
  • Restringir o acesso: uma cadeia pode configurar uma EVM permissionada, na qual determinados endereços podem ou não implementar ou chamar contratos.

Estas possibilidades não estão automaticamente disponíveis em todo o lado. Se uma aplicação pode, por exemplo, usar IBC, staking ou governação a partir de um smart contract depende dos módulos e precompiles activos nessa cadeia específica.

Qual é a diferença entre o Cosmos EVM e outras redes EVM?

O Cosmos EVM difere de outras redes EVM porque não é uma rede separada, mas sim uma stack de software para cadeias Cosmos SDK autónomas. Portanto, não o compara um-para-um com Ethereum, com uma L1 EVM específica ou com uma Layer 2.

A compatibilidade com Ethereum é, no entanto, uma parte importante. Os programadores podem usar ferramentas Ethereum, JSON-RPC e smart contracts em Solidity. Ao mesmo tempo, a infraestrutura subjacente funciona de forma diferente: uma cadeia Cosmos EVM usa consenso CometBFT e um conjunto de validadores próprio.

No CometBFT, a finalidade pode ocorrer após um bloco confirmado, normalmente em cerca de 1 a 2 segundos. Finalidade significa, em termos simples, que um bloco, depois dessa confirmação, já não deve ser revertido. Para isso, pelo menos dois terços do stake têm de confirmar um bloco.

O Cosmos EVM foi concebido para uma L1 soberana. Uma cadeia destas gere, portanto, por si própria o conjunto de validadores, a governação e a economia de taxas. Isto é diferente das rollups, que dependem, em parte, de uma camada de settlement para o seu desenho e segurança.

A economia de taxas também pode divergir da Ethereum. O Cosmos EVM usa EIP-1559, mas a base fee vai para validadores e delegadores em vez de ser queimada. Além disso, uma cadeia pode desactivar a base fee ou definir um preço mínimo de gas.

Além disso, o Cosmos EVM acrescenta possibilidades que não encontra por defeito em todas as redes EVM: acesso a módulos do Cosmos SDK através de precompiles e interoperabilidade baseada em IBC. Mas também entre duas cadeias Cosmos EVM podem existir diferenças significativas. Cada cadeia pode adicionar os seus próprios precompiles e decidir quais as funções activas.

Nem todos os componentes específicos de Ethereum ou de rollups estão presentes. Assim, as transacções blob do EIP-4844 e o PREVRANDAO do EIP-4399 não estão disponíveis.

Quais são as vantagens e limitações do Cosmos EVM?

O Cosmos EVM combina ferramentas Ethereum conhecidas com a flexibilidade de uma cadeia Cosmos SDK autónoma. Isto traz vantagens interessantes, mas também é preciso analisar bem a cadeia concreta na qual está a construir ou que está a usar.

As vantagens:

  • Ambiente EVM conhecido: smart contracts em Solidity e muitas ferramentas Ethereum podem ser usados.
  • Finalidade rápida: cadeias CometBFT podem oferecer tempos de bloco rápidos e finalidade após um bloco confirmado.
  • Acesso a funções do Cosmos: precompiles podem permitir que smart contracts interajam com staking, governação, activos bancários nativos e transferências IBC.
  • Muita liberdade de configuração: os construtores escolhem módulos, precompiles activos, parâmetros de taxas e políticas de acesso.
  • Possibilidades cross-chain: IBC e callbacks tornam possíveis fluxos de tokens mais complexos entre blockchains compatíveis.

As limitações:

  • Não existe uma experiência uniforme: conjuntos de validadores, endpoints RPC, canais IBC, tokens disponíveis, precompiles e parâmetros variam de cadeia para cadeia.
  • Nem todas as funções EVM existem: as transacções blob do EIP-4844 e o PREVRANDAO do EIP-4399 não estão presentes.
  • Limitação de endereço IBC: as transferências ICS-20 exigem actualmente um endereço Bech32 do destinatário, não um endereço hexadecimal.
  • Técnica adicional com outros decimais: um token nativo com 18 decimais é o caminho mais simples e recomendado. Uma cadeia existente com uma quantidade diferente de decimais precisa de x/precisebank, o que torna a integração mais complexa.
  • O software ainda está em desenvolvimento: as versões v0.x podem incluir breaking changes antes de uma versão v1.

Também é importante: uma auditoria ou compatibilidade EVM não é uma garantia automática de que cada implementação seja segura. Uma configuração específica, smart contracts, canais IBC e integrações cross-chain podem ter riscos próprios.

Conclusão

O Cosmos EVM é uma camada de construção flexível para programadores que querem combinar uma cadeia Cosmos SDK própria com o conhecido ambiente Ethereum. Portanto, não é uma blockchain ou token separado, mas software que permite que smart contracts em Solidity, ferramentas Ethereum e JSON-RPC funcionem numa cadeia Cosmos autónoma.

A grande força está na combinação: compatibilidade EVM de um lado, e módulos Cosmos SDK, um conjunto de validadores próprio e IBC do outro. Assim, os smart contracts podem, por exemplo, usar funções nativas de tokens ou transferências cross-chain.

Ao mesmo tempo, o Cosmos EVM não é exactamente igual em todo o lado. As funções, taxas, ligações IBC, precompiles e definições técnicas variam de cadeia para cadeia. Por isso, para utilizadores e programadores, é importante olhar sempre para a implementação concreta, e não apenas para o rótulo Cosmos EVM.

Sobre a Finst

A Finst é uma plataforma de criptomoedas líder nos Países Baixos que oferece taxas de transação bastante reduzidas, segurança de nível institucional e um conjunto abrangente de serviços de criptomoedas, como negociação, custódia, staking e rampas de entrada e saída de moeda fiduciária. Fundada pelo antigo núcleo da equipa da DEGIRO, a Finst está autorizada como prestador de serviços de criptoativos pela Autoridade Holandesa para os Mercados Financeiros (AFM) e serve clientes privados e institucionais em 30 países europeus.

A plataforma de criptomoedas para todos os investidores

Quer seja um investidor ativo ou de longo prazo, a Finst permite-lhe aumentar o seu património de criptomoedas com confiança e tranquilidade.

Criar conta gratuita