Wat is Cosmos EVM en hoe werkt deze technologie binnen het Cosmos-ecosysteem?

Wat is Cosmos EVM?
Cosmos EVM is open-source software waarmee ontwikkelaars een Cosmos SDK-chain EVM-compatibel kunnen maken. Het is dus geen eigen blockchain, geen token en ook niet hetzelfde als Cosmos Hub of ATOM.
Simpel gezegd voegt Cosmos EVM een omgeving toe waarin Ethereum-apps kunnen draaien aan een zelfstandige Cosmos-chain. Een ontwikkelaar kan hiermee een nieuwe L1 bouwen, of een bestaande Cosmos SDK-chain uitbreiden met ondersteuning voor Ethereum-technologie.
Zo'n chain bepaalt zelf de belangrijkste spelregels. Denk aan de eigen validator-set, governance, fees, actieve modules en toegangsregels. Een validator is een deelnemer die nieuwe blocks controleert en helpt het netwerk tot overeenstemming te komen.
Cosmos EVM is gebouwd voor chains die hun eigen keuzes willen maken, maar tegelijk gebruik willen maken van de bekende Ethereum-wereld. De repository bevat bijvoorbeeld evmd: een referentie-implementatie om een EVM-compatibele chain op te zetten.
De software is een fork van evmOS en valt onder de Apache-2.0-open-sourcelicentie. Belangrijk om te weten: Cosmos EVM zit nog in de v0.x-fase. Dat betekent dat toekomstige updates vóór een v1-release nog grotere technische veranderingen kunnen bevatten.
Korte samenvatting
- Cosmos EVM is software om een Cosmos SDK-chain EVM-compatibel te maken.
- Het is geen zelfstandige blockchain en ook geen token.
- Elke chain kiest zelf onder meer validators, governance, fees en toegangsregels.
- Ethereum-apps en Solidity-smart contracts kunnen hierdoor op een Cosmos-chain draaien.
- Cosmos EVM is open source en bevindt zich nog in de v0.x-fase.
Hoe werkt Cosmos EVM?
Cosmos EVM laat een chain zowel gewone Cosmos-transacties als Ethereum-transacties verwerken. De kern hiervan is de x/vm-module, die de EVM-uitvoering, gas, fees en de opslag van wijzigingen regelt.
Hoe werkt dat in de praktijk? Een Ethereum-transactie wordt eerst verpakt als MsgEthereumTx. Daardoor past de transactie in de manier waarop de Cosmos SDK transacties verwerkt. Daarna haalt de module de Ethereum-transactie uit die verpakking en voert de EVM hem uit.
Als de transactie slaagt, worden de veranderingen opgeslagen in de Cosmos SDK-store. Mislukt de uitvoering, dan kan de tijdelijke wijziging worden teruggedraaid. Dat is belangrijk: een mislukte transactie mag niet half uitgevoerde wijzigingen achterlaten.
Onder de motorkap heeft Cosmos EVM grofweg drie onderdelen:
- CometBFT: regelt consensus, dus hoe validators samen besluiten welk nieuw block geldig is.
- ABCI: de technische verbinding tussen CometBFT en de applicatie die op de chain draait.
- go-ethereum (
geth): levert EVM-functionaliteit, zoals de uitvoering van Ethereum-transacties.
Cosmos EVM ondersteunt verschillende Ethereum-transactietypen, waaronder legacy/EIP-155, EIP-2930, EIP-1559 en EIP-7702. Niet-beschermde legacy-transacties staan standaard uit. Welke functies precies beschikbaar zijn, kan per Cosmos EVM-chain verschillen.
Een extra belangrijk onderdeel zijn precompiles. Dat zijn vaste adressen waarop een smart contract een native functie kan aanroepen. In plaats van gewone EVM-bytecode voert zo'n precompile direct Go-code uit. Daardoor kan een Solidity-contract bijvoorbeeld functies van Cosmos SDK-modules gebruiken, als de chain die mogelijkheid heeft geactiveerd.
Voorbeeld: een smart contract kan via een precompile een native tokenactie uitvoeren of een IBC-transfer starten. Het contract hoeft die Cosmos-functionaliteit dan niet helemaal zelf opnieuw te bouwen.
Welke rol speelt de Ethereum Virtual Machine binnen Cosmos EVM?
De Ethereum Virtual Machine, of EVM, is binnen Cosmos EVM de omgeving die Ethereum-bytecode en Solidity-smart contracts uitvoert. Je kunt de EVM zien als de compatibiliteitslaag tussen Ethereum-apps en de Cosmos-infrastructuur eronder.
Daardoor kunnen ontwikkelaars veel bekende Ethereum-workflows blijven gebruiken. Denk aan MetaMask, Hardhat, Foundry, Remix, ethers.js en viem. Solidity-contracten die op Ethereum werken, kunnen in principe zonder aanpassing aan de contractcode worden gedeployed op een Cosmos EVM-chain.
Cosmos EVM biedt hiervoor onder meer Ethereum-compatibele JSON-RPC, transactietypen, adressen en accountfunctionaliteit. JSON-RPC is simpel gezegd de standaardmanier waarop een wallet of app technische verzoeken naar een blockchain stuurt. Je crypto wallet kan zo dus op een vertrouwde manier met een geschikte Cosmos EVM-chain communiceren.
Eén onderliggende sleutel kan twee adresweergaven hebben: een hexadecimaal Ethereum-adres en een Bech32 Cosmos-adres. Hexadecimaal is het bekende adresformaat dat begint met 0x. Bech32 is het leesbare Cosmos-formaat met een prefix van de betreffende chain. Het zijn twee vormen van dezelfde onderliggende sleutel.
Ook gebruikt een Cosmos EVM-chain twee soorten chain ID's: een Cosmos chain ID en een aparte numerieke EVM chain ID. Die helpen software om de juiste omgeving en transactieregels te herkennen.
De compatibiliteit is breed, maar niet letterlijk identiek aan Ethereum. Cosmos EVM ondersteunt EVM-opcodes, EIPs en ERC-interfaces tot en met de Prague-hardfork. Blob-transacties uit EIP-4844 en PREVRANDAO uit EIP-4399 worden niet ondersteund.
Hoe ondersteunt Cosmos EVM interoperabiliteit?
Cosmos EVM kan interoperabiliteit ondersteunen door IBC in de chain op te nemen. IBC is een protocol waarmee onafhankelijke blockchains gegevens, berichten en tokens naar elkaar kunnen sturen.
Dat betekent niet dat iedere Cosmos EVM-chain automatisch met elke andere blockchain verbonden is. Voor communicatie zijn onder meer IBC-ondersteuning, een verbinding, kanalen, relayers en een compatibele tegenpartij nodig. Cosmos EVM maakt ook niet uit zichzelf een directe verbinding met Ethereum mainnet.
Via precompiles kunnen EVM-contracten daarnaast functies uit andere Cosmos SDK-modules gebruiken. Denk aan staking, distributie, governance, bankfuncties en IBC-transfers. Welke mogelijkheden er zijn, hangt af van wat de builder van die chain heeft toegevoegd en ingeschakeld.
Hoe werkt communicatie met andere Cosmos-blockchains?
Communicatie met andere Cosmos-blockchains loopt via IBC-packets. Een packet is gewoon een pakketje met gegevens dat van de ene blockchain naar de andere moet.
De bronchain legt eerst vast dat zo'n packet bestaat. Daarna pakt een relayer het bericht op en levert het, samen met cryptografisch bewijs, af bij de andere blockchain. Een relayer vervoert dus gegevens, maar bewaart niet centraal jouw tokens.
De ontvangende blockchain gebruikt een IBC-light client om dat bewijs te controleren. Een light client houdt compacte informatie over de consensus-state van de andere blockchain bij. Zo kan hij controleren of de verzonden informatie echt op de bronchain staat.
Twee blockchains krijgen na het opzetten van een IBC-verbinding elk een koppeling naar de light client van de andere partij. Apps gebruiken vervolgens poorten en kanalen om packets te versturen. Een combinatie van portID en channelID vertelt waar een packet naartoe moet.
Kanalen kunnen ordered of unordered zijn. Bij ordered moeten packets in dezelfde volgorde aankomen. Bij unordered mag de ontvangstvolgorde verschillen.
Voor een Cosmos EVM-chain kunnen Solidity-contracten tokenverplaatsingen starten via de ICS-20-precompile. ICS-20 is de standaard binnen IBC voor het versturen van fungible tokens, dus onderling uitwisselbare tokens van dezelfde soort. Ontvangen IBC-assets kunnen via de ERC-20-module ook als dynamische ERC-20-precompiles beschikbaar komen voor EVM-contracten.
Welke rol speelt IBC binnen Cosmos EVM?
IBC is de protocol-laag waarmee een Cosmos EVM-chain berichten en tokens kan uitwisselen met andere IBC-compatibele blockchains. Voor Solidity-ontwikkelaars is de ICS-20-precompile hierbij een belangrijk hulpmiddel.
Een contract kan daarmee een cross-chain transfer starten en daarbij onder meer de bronpoort, het kanaal, de token-denominatie, het bedrag, de ontvanger en een timeout invullen. Een timeout is de uiterste tijd of blockhoogte waarbinnen een packet moet worden verwerkt.
De ICS-20-precompile heeft een vast adres: 0x0000000000000000000000000000000000000802. Dat adres werkt alleen als de betreffende chain deze precompile heeft geactiveerd.
Cosmos EVM voegt ook callbacks toe voor ICS-20-transfers. Een callback is een functie die automatisch kan worden aangeroepen wanneer een bepaalde stap is gebeurd:
- Op de doelchain kan
onRecvPacketdraaien zodra een packet is ontvangen. - Op de bronchain kan
onAcknowledgePacketreageren op een bevestiging. - Op de bronchain kan
onTimeoutPacketreageren als de transfer niet op tijd is afgerond.
Daardoor kan een smart contract na ontvangst van tokens extra logica uitvoeren, bijvoorbeeld een swap op een DEX of het toevoegen van liquiditeit. De tokenoverdracht en callback worden binnen de verwerking van dat packet samen uitgevoerd. Ze slagen dus samen of mislukken samen.
Er is wel een praktische beperking: voor een IBC-transfer moet de ontvanger momenteel een Bech32-adres gebruiken. Een hexadecimaal 0x-adres als ontvanger wordt hiervoor nog niet ondersteund. Het adres van de afzender wordt wel automatisch van hexadecimaal naar Bech32 omgezet.
Callbacks maken cross-chain apps krachtiger, maar ook ingewikkelder. Ontwikkelaars moeten goed omgaan met time-outs, acknowledgements, memo-data, gaslimieten en foutafhandeling.
Waarvoor kan Cosmos EVM worden gebruikt?
Cosmos EVM wordt vooral gebruikt om een Cosmos SDK-chain te bouwen of uit te breiden waarop bestaande Solidity-smart contracts en Ethereum-tools kunnen draaien. Dat is handig voor teams die Ethereum-compatibiliteit willen combineren met de vrijheid van een eigen L1.
Een builder kan zelf bepalen hoe die chain eruitziet. Bijvoorbeeld welke validators meedoen, hoe governance werkt, welke fees gelden, wie contracten mag deployen en welke Cosmos SDK-modules beschikbaar zijn.
Mogelijke toepassingen zijn onder meer:
- EVM-applicaties bouwen: bestaande Solidity-smart contracts kunnen op de chain draaien.
- Native Cosmos-functies gebruiken: smart contracts kunnen via precompiles staking, delegatie, governance en native tokeninteracties aanroepen.
- IBC-tokenflows uitvoeren: contracten kunnen tokens naar een andere IBC-compatibele blockchain sturen.
- Cross-chain logica automatiseren: callbacks kunnen reageren op ontvangst, bevestiging of een timeout van een transfer.
- ERC-20-achtige toegang bieden: native Cosmos-tokens en binnenkomende IBC-assets kunnen via de ERC-20-module bruikbaar worden voor EVM-contracten.
- Toegang beperken: een chain kan een permissioned EVM instellen, waarbij bepaalde adressen wel of niet contracten mogen deployen of aanroepen.
Die mogelijkheden zijn niet automatisch overal beschikbaar. Of een app bijvoorbeeld IBC, staking of governance vanuit een smart contract kan gebruiken, hangt af van de modules en precompiles die op die specifieke chain actief zijn.
Wat is het verschil tussen Cosmos EVM en andere EVM-netwerken?
Cosmos EVM verschilt van andere EVM-netwerken omdat het geen afzonderlijk netwerk is, maar een softwarestack voor zelfstandige Cosmos SDK-chains. Je vergelijkt het dus niet één-op-één met Ethereum, een specifieke EVM-L1 of een Layer 2.
Ethereum-compatibiliteit is wel een belangrijk onderdeel. Ontwikkelaars kunnen Ethereum-tools, JSON-RPC en Solidity-smart contracts gebruiken. Tegelijk draait de onderliggende infrastructuur anders: een Cosmos EVM-chain gebruikt CometBFT-consensus en een eigen validator-set.
Bij CometBFT kan finaliteit na één gecommit block optreden, meestal rond 1 à 2 seconden. Finaliteit betekent simpel gezegd dat een block na die bevestiging niet meer teruggedraaid hoort te worden. Hiervoor moet minstens twee derde van de stake een block committen.
Cosmos EVM is ontworpen voor een soevereine L1. Zo'n chain beheert dus zelf de validator-set, governance en fee-economie. Dat is anders dan bij rollups, die voor een deel van hun ontwerp en beveiliging leunen op een settlementlaag.
Ook de fee-economie kan afwijken van Ethereum. Cosmos EVM gebruikt EIP-1559, maar de base fee gaat naar validators en delegators in plaats van dat deze wordt verbrand. Een chain kan de base fee bovendien uitschakelen of een minimum-gasprijs instellen.
Daarnaast voegt Cosmos EVM mogelijkheden toe die je niet standaard op ieder EVM-netwerk aantreft: toegang tot Cosmos SDK-modules via precompiles en IBC-gebaseerde interoperabiliteit. Maar ook tussen twee Cosmos EVM-chains kunnen grote verschillen zitten. Elke chain kan eigen precompiles toevoegen en bepalen welke functies actief zijn.
Niet alle Ethereum- of rollup-specifieke onderdelen zijn aanwezig. Zo zijn blob-transacties uit EIP-4844 en PREVRANDAO uit EIP-4399 niet beschikbaar.
Wat zijn de voordelen en beperkingen van Cosmos EVM?
Cosmos EVM combineert bekende Ethereum-tools met de flexibiliteit van een zelfstandige Cosmos SDK-chain. Dat levert interessante voordelen op, maar je moet ook goed kijken naar de concrete chain waarop je bouwt of die je gebruikt.
De voordelen:
- Bekende EVM-omgeving: Solidity-smart contracts en veel Ethereum-tools kunnen worden gebruikt.
- Snelle finaliteit: CometBFT-chains kunnen snelle blocktimes en finaliteit na een gecommit block bieden.
- Toegang tot Cosmos-functies: precompiles kunnen smart contracts laten samenwerken met staking, governance, native bank-assets en IBC-transfers.
- Veel configuratievrijheid: builders kiezen zelf modules, actieve precompiles, feeparameters en toegangspolicies.
- Cross-chain mogelijkheden: IBC en callbacks maken complexere tokenflows tussen compatibele blockchains mogelijk.
De beperkingen:
- Geen uniforme ervaring: validator-sets, RPC-endpoints, IBC-kanalen, beschikbare tokens, precompiles en parameters verschillen per chain.
- Niet iedere EVM-functie bestaat: blob-transacties uit EIP-4844 en PREVRANDAO uit EIP-4399 ontbreken.
- IBC-adresbeperking: ICS-20-transfers vereisen momenteel een Bech32-ontvangersadres, niet een hexadecimaal adres.
- Extra techniek bij andere decimalen: een gastoken met 18 decimalen is de eenvoudigste en aanbevolen route. Een bestaande chain met een andere hoeveelheid decimalen heeft
x/precisebanknodig, wat de integratie ingewikkelder maakt. - Software is nog in ontwikkeling: v0.x-releases kunnen vóór een v1-versie breaking changes bevatten.
Ook belangrijk: een audit of EVM-compatibiliteit is geen automatische garantie dat elke implementatie veilig is. Een specifieke configuratie, smart contracts, IBC-kanalen en cross-chain integraties kunnen elk eigen risico's hebben.
Conclusie
Cosmos EVM is een flexibele bouwlaag voor ontwikkelaars die een eigen Cosmos SDK-chain willen combineren met de bekende Ethereum-omgeving. Het is dus geen aparte blockchain of token, maar software waarmee Solidity-smart contracts, Ethereum-tools en JSON-RPC op een zelfstandige Cosmos-chain kunnen werken.
De grote kracht zit in de combinatie: EVM-compatibiliteit aan de ene kant, en Cosmos SDK-modules, een eigen validator-set en IBC aan de andere kant. Daardoor kunnen smart contracts bijvoorbeeld native tokenfuncties of cross-chain transfers gebruiken.
Tegelijk is Cosmos EVM niet overal precies hetzelfde. De functies, fees, IBC-verbindingen, precompiles en technische instellingen verschillen per chain. Voor gebruikers en ontwikkelaars is het daarom belangrijk om altijd naar de concrete implementatie te kijken, niet alleen naar het label Cosmos EVM.