Was ist Cosmos EVM und wie funktioniert diese Technologie innerhalb des Cosmos-Ökosystems?

Was ist Cosmos EVM?
Cosmos EVM ist Open-Source-Software, mit der Entwickler eine Cosmos-SDK-Chain EVM-kompatibel machen können. Es ist also keine eigene Blockchain, kein Token und auch nicht dasselbe wie Cosmos Hub oder ATOM.
Einfach gesagt fügt Cosmos EVM einer eigenständigen Cosmos-Chain eine Umgebung hinzu, in der Ethereum-Apps laufen können. Ein Entwickler kann damit eine neue L1 aufbauen oder eine bestehende Cosmos-SDK-Chain um Unterstützung für Ethereum-Technologie erweitern.
Eine solche Chain legt die wichtigsten Spielregeln selbst fest. Dazu gehören etwa das eigene Validator-Set, Governance, Fees, aktive Module und Zugriffsregeln. Ein Validator ist ein Teilnehmer, der neue Blocks überprüft und dem Netzwerk hilft, sich zu einigen.
Cosmos EVM ist für Chains gebaut, die ihre eigenen Entscheidungen treffen wollen, aber gleichzeitig die bekannte Ethereum-Welt nutzen möchten. Das Repository enthält zum Beispiel evmd: eine Referenzimplementierung, um eine EVM-kompatible Chain aufzusetzen.
Die Software ist ein Fork von evmOS und steht unter der Open-Source-Lizenz Apache 2.0. Wichtig zu wissen: Cosmos EVM befindet sich noch in der v0.x-Phase. Das bedeutet, dass zukünftige Updates vor einer v1-Version noch größere technische Änderungen enthalten können.
Wichtigste Erkenntnisse
- Cosmos EVM ist Software, um eine Cosmos-SDK-Chain EVM-kompatibel zu machen.
- Es ist keine eigenständige Blockchain und auch kein Token.
- Jede Chain wählt unter anderem selbst Validatoren, Governance, Fees und Zugriffsregeln.
- Ethereum-Apps und Solidity-Smart-Contracts können dadurch auf einer Cosmos-Chain laufen.
- Cosmos EVM ist Open Source und befindet sich noch in der v0.x-Phase.
Wie funktioniert Cosmos EVM?
Cosmos EVM ermöglicht es einer Chain, sowohl normale Cosmos-Transaktionen als auch Ethereum-Transaktionen zu verarbeiten. Der Kern davon ist das x/vm-Modul, das die EVM-Ausführung, Gas, Fees und die Speicherung von Änderungen regelt.
Wie funktioniert das in der Praxis? Eine Ethereum-Transaktion wird zuerst als MsgEthereumTx verpackt. Dadurch passt die Transaktion in die Art und Weise, wie die Cosmos SDK Transaktionen verarbeitet. Danach holt das Modul die Ethereum-Transaktion aus dieser Verpackung und führt die EVM aus.
Wenn die Transaktion erfolgreich ist, werden die Änderungen im Cosmos-SDK-Store gespeichert. Schlägt die Ausführung fehl, kann die temporäre Änderung zurückgesetzt werden. Das ist wichtig: Eine fehlgeschlagene Transaktion darf keine halb ausgeführten Änderungen hinterlassen.
Unter der Haube hat Cosmos EVM grob drei Komponenten:
- CometBFT: regelt den Konsens, also wie Validatoren gemeinsam entscheiden, welcher neue Block gültig ist.
- ABCI: die technische Verbindung zwischen CometBFT und der Anwendung, die auf der Chain läuft.
- go-ethereum (
geth): liefert EVM-Funktionalität, etwa die Ausführung von Ethereum-Transaktionen.
Cosmos EVM unterstützt verschiedene Ethereum-Transaktionstypen, darunter Legacy/EIP-155, EIP-2930, EIP-1559 und EIP-7702. Nicht geschützte Legacy-Transaktionen sind standardmäßig deaktiviert. Welche Funktionen genau verfügbar sind, kann sich von Cosmos-EVM-Chain zu Cosmos-EVM-Chain unterscheiden.
Ein weiterer wichtiger Baustein sind Precompiles. Das sind feste Adressen, über die ein Smart Contract eine native Funktion aufrufen kann. Statt normalem EVM-Bytecode führt so ein Precompile direkt Go-Code aus. Dadurch kann ein Solidity-Contract zum Beispiel Funktionen von Cosmos-SDK-Modulen nutzen, wenn die Chain diese Möglichkeit aktiviert hat.
Beispiel: Ein Smart Contract kann über ein Precompile eine native Token-Aktion ausführen oder einen IBC-Transfer starten. Der Contract muss diese Cosmos-Funktionalität dann nicht komplett selbst neu aufbauen.
Welche Rolle spielt die Ethereum Virtual Machine innerhalb von Cosmos EVM?
Die Ethereum Virtual Machine, kurz EVM, ist innerhalb von Cosmos EVM die Umgebung, die Ethereum-Bytecode und Solidity-Smart-Contracts ausführt. Du kannst die EVM als die Kompatibilitätsschicht zwischen Ethereum-Apps und der darunterliegenden Cosmos-Infrastruktur sehen.
Dadurch können Entwickler viele bekannte Ethereum-Workflows weiter nutzen. Dazu gehören MetaMask, Hardhat, Foundry, Remix, ethers.js und viem. Solidity-Contracts, die auf Ethereum funktionieren, können grundsätzlich ohne Anpassung am Contract-Code auf einer Cosmos-EVM-Chain deployed werden.
Cosmos EVM bietet dafür unter anderem Ethereum-kompatibles JSON-RPC, Transaktionstypen, Adressen und Account-Funktionalität. JSON-RPC ist einfach gesagt der Standardweg, wie eine Wallet oder App technische Anfragen an eine Blockchain sendet. Deine Krypto Wallet kann so also auf vertraute Weise mit einer geeigneten Cosmos-EVM-Chain kommunizieren.
Ein zugrunde liegender Schlüssel kann zwei Adressdarstellungen haben: eine hexadezimale Ethereum-Adresse und eine Bech32-Cosmos-Adresse. Hexadezimal ist das bekannte Adressformat, das mit 0x beginnt. Bech32 ist das lesbare Cosmos-Format mit einem Prefix der jeweiligen Chain. Es sind zwei Formen desselben zugrunde liegenden Schlüssels.
Auch verwendet eine Cosmos-EVM-Chain zwei Arten von Chain-IDs: eine Cosmos-Chain-ID und eine separate numerische EVM-Chain-ID. Sie helfen der Software dabei, die richtige Umgebung und die passenden Transaktionsregeln zu erkennen.
Die Kompatibilität ist breit, aber nicht wortwörtlich identisch mit Ethereum. Cosmos EVM unterstützt EVM-OpCodes, EIPs und ERC-Interfaces bis einschließlich der Prague-Hardfork. Blob-Transaktionen aus EIP-4844 und PREVRANDAO aus EIP-4399 werden nicht unterstützt.
Wie unterstützt Cosmos EVM Interoperabilität?
Cosmos EVM kann Interoperabilität unterstützen, indem IBC in die Chain integriert wird. IBC ist ein Protokoll, mit dem unabhängige Blockchains Daten, Nachrichten und Tokens untereinander senden können.
Das bedeutet nicht, dass jede Cosmos-EVM-Chain automatisch mit jeder anderen Blockchain verbunden ist. Für die Kommunikation sind unter anderem IBC-Unterstützung, eine Verbindung, Kanäle, Relayer und eine kompatible Gegenpartei nötig. Cosmos EVM stellt auch nicht von sich aus eine direkte Verbindung zum Ethereum-Mainnet her.
Über Precompiles können EVM-Contracts außerdem Funktionen aus anderen Cosmos-SDK-Modulen nutzen. Dazu gehören Staking, Distribution, Governance, Bank-Funktionen und IBC-Transfers. Welche Möglichkeiten es gibt, hängt davon ab, was der Builder dieser Chain hinzugefügt und aktiviert hat.
Wie funktioniert die Kommunikation mit anderen Cosmos-Blockchains?
Die Kommunikation mit anderen Cosmos-Blockchains läuft über IBC-Packets. Ein Packet ist einfach ein Datenpaket, das von einer Blockchain zur anderen geschickt werden soll.
Die Quellchain legt zuerst fest, dass ein solches Packet existiert. Danach nimmt ein Relayer die Nachricht auf und liefert sie zusammen mit kryptografischem Beweis an die andere Blockchain aus. Ein Relayer transportiert also Daten, speichert deine Tokens aber nicht zentral.
Die empfangende Blockchain nutzt einen IBC-Light-Client, um diesen Beweis zu prüfen. Ein Light-Client hält kompakte Informationen über den Konsens-Status der anderen Blockchain vor. So kann er überprüfen, ob die gesendeten Informationen wirklich auf der Quellchain stehen.
Zwei Blockchains erhalten nach dem Aufbau einer IBC-Verbindung jeweils eine Verbindung zum Light-Client der anderen Seite. Apps nutzen anschließend Ports und Kanäle, um Packets zu senden. Eine Kombination aus portID und channelID sagt aus, wohin ein Packet gehen soll.
Kanäle können ordered oder unordered sein. Bei ordered müssen Packets in derselben Reihenfolge ankommen. Bei unordered darf die Reihenfolge der Ankunft abweichen.
Für eine Cosmos-EVM-Chain können Solidity-Contracts Tokenbewegungen über das ICS-20-Precompile starten. ICS-20 ist der Standard innerhalb von IBC für das Senden fungibler Tokens, also untereinander austauschbarer Tokens derselben Art. Empfangene IBC-Assets können über das ERC-20-Modul auch als dynamische ERC-20-Precompiles für EVM-Contracts verfügbar werden.
Welche Rolle spielt IBC innerhalb von Cosmos EVM?
IBC ist die Protokollschicht, über die eine Cosmos-EVM-Chain Nachrichten und Tokens mit anderen IBC-kompatiblen Blockchains austauschen kann. Für Solidity-Entwickler ist das ICS-20-Precompile dabei ein wichtiges Werkzeug.
Ein Contract kann damit einen Cross-Chain-Transfer starten und dabei unter anderem die Quellport, den Kanal, die Token-Denomination, den Betrag, den Empfänger und ein Timeout angeben. Ein Timeout ist der späteste Zeitpunkt oder die späteste Blockhöhe, bis zu der ein Packet verarbeitet werden muss.
Das ICS-20-Precompile hat eine feste Adresse: 0x0000000000000000000000000000000000000802. Diese Adresse funktioniert nur, wenn die betreffende Chain dieses Precompile aktiviert hat.
Cosmos EVM fügt außerdem Callbacks für ICS-20-Transfers hinzu. Ein Callback ist eine Funktion, die automatisch aufgerufen werden kann, wenn ein bestimmter Schritt passiert ist:
- Auf der Zielchain kann
onRecvPacketausgeführt werden, sobald ein Packet empfangen wurde. - Auf der Quellchain kann
onAcknowledgePacketauf eine Bestätigung reagieren. - Auf der Quellchain kann
onTimeoutPacketreagieren, wenn der Transfer nicht rechtzeitig abgeschlossen wurde.
Dadurch kann ein Smart Contract nach dem Empfang von Tokens zusätzliche Logik ausführen, zum Beispiel einen Swap auf einer DEX oder das Hinzufügen von Liquidität. Die Tokenübertragung und der Callback werden innerhalb der Verarbeitung dieses Packets gemeinsam ausgeführt. Sie sind also gemeinsam erfolgreich oder gemeinsam fehlgeschlagen.
Es gibt allerdings eine praktische Einschränkung: Für einen IBC-Transfer muss der Empfänger derzeit eine Bech32-Adresse verwenden. Eine hexadezimale 0x-Adresse als Empfänger wird dafür noch nicht unterstützt. Die Adresse des Absenders wird jedoch automatisch von hexadezimal nach Bech32 umgewandelt.
Callbacks machen Cross-Chain-Apps leistungsfähiger, aber auch komplexer. Entwickler müssen sorgfältig mit Timeouts, Acknowledgements, Memo-Daten, Gas-Limits und Fehlerbehandlung umgehen.
Wofür kann Cosmos EVM verwendet werden?
Cosmos EVM wird vor allem genutzt, um eine Cosmos-SDK-Chain aufzubauen oder zu erweitern, auf der bestehende Solidity-Smart-Contracts und Ethereum-Tools laufen können. Das ist praktisch für Teams, die Ethereum-Kompatibilität mit der Freiheit einer eigenen L1 kombinieren wollen.
Ein Builder kann selbst festlegen, wie diese Chain aussieht. Zum Beispiel, welche Validatoren teilnehmen, wie Governance funktioniert, welche Fees gelten, wer Contracts deployen darf und welche Cosmos-SDK-Module verfügbar sind.
Mögliche Anwendungen sind unter anderem:
- EVM-Anwendungen bauen: bestehende Solidity-Smart-Contracts können auf der Chain laufen.
- Native Cosmos-Funktionen nutzen: Smart Contracts können über Precompiles Staking, Delegation, Governance und native Token-Interaktionen aufrufen.
- IBC-Token-Flows ausführen: Contracts können Tokens an eine andere IBC-kompatible Blockchain senden.
- Cross-Chain-Logik automatisieren: Callbacks können auf Empfang, Bestätigung oder ein Timeout eines Transfers reagieren.
- ERC-20-ähnlichen Zugriff bieten: native Cosmos-Tokens und eingehende IBC-Assets können über das ERC-20-Modul für EVM-Contracts nutzbar werden.
- Zugriff einschränken: Eine Chain kann eine permissioned EVM einrichten, bei der bestimmte Adressen Contracts deployen oder aufrufen dürfen oder eben nicht.
Diese Möglichkeiten sind nicht automatisch überall verfügbar. Ob eine App zum Beispiel IBC, Staking oder Governance aus einem Smart Contract heraus nutzen kann, hängt von den Modulen und Precompiles ab, die auf der jeweiligen Chain aktiv sind.
Was ist der Unterschied zwischen Cosmos EVM und anderen EVM-Netzwerken?
Cosmos EVM unterscheidet sich von anderen EVM-Netzwerken, weil es kein eigenständiges Netzwerk ist, sondern ein Software-Stack für eigenständige Cosmos-SDK-Chains. Du vergleichst es also nicht eins zu eins mit Ethereum, einer bestimmten EVM-L1 oder einer Layer 2.
Ethereum-Kompatibilität ist zwar ein wichtiger Bestandteil. Entwickler können Ethereum-Tools, JSON-RPC und Solidity-Smart-Contracts verwenden. Gleichzeitig läuft die zugrunde liegende Infrastruktur anders: Eine Cosmos-EVM-Chain nutzt CometBFT-Konsens und ein eigenes Validator-Set.
Bei CometBFT kann Finalität nach einem gecommitteten Block eintreten, meist innerhalb von 1 bis 2 Sekunden. Finalität bedeutet einfach gesagt, dass ein Block nach dieser Bestätigung nicht mehr zurückgerollt werden sollte. Dafür müssen mindestens zwei Drittel des Stakes einen Block committen.
Cosmos EVM ist für eine souveräne L1 konzipiert. Eine solche Chain verwaltet also selbst das Validator-Set, Governance und Fee-Ökonomie. Das unterscheidet sich von Rollups, die für einen Teil ihres Designs und ihrer Sicherheit auf einer Settlement-Schicht aufbauen.
Auch die Fee-Ökonomie kann sich von Ethereum unterscheiden. Cosmos EVM verwendet EIP-1559, aber die Base Fee geht an Validatoren und Delegatoren, statt verbrannt zu werden. Eine Chain kann die Base Fee außerdem deaktivieren oder einen Mindest-Gaspreis festlegen.
Darüber hinaus bringt Cosmos EVM Möglichkeiten mit, die du nicht standardmäßig in jedem EVM-Netzwerk findest: Zugriff auf Cosmos-SDK-Module über Precompiles und IBC-basierte Interoperabilität. Aber auch zwischen zwei Cosmos-EVM-Chains können große Unterschiede bestehen. Jede Chain kann eigene Precompiles hinzufügen und festlegen, welche Funktionen aktiv sind.
Nicht alle Ethereum- oder Rollup-spezifischen Bestandteile sind vorhanden. So sind Blob-Transaktionen aus EIP-4844 und PREVRANDAO aus EIP-4399 nicht verfügbar.
Was sind die Vorteile und Einschränkungen von Cosmos EVM?
Cosmos EVM kombiniert bekannte Ethereum-Tools mit der Flexibilität einer eigenständigen Cosmos-SDK-Chain. Das bringt interessante Vorteile mit sich, aber du solltest auch die konkrete Chain genau betrachten, auf der du baust oder die du nutzt.
Die Vorteile:
- Vertraute EVM-Umgebung: Solidity-Smart-Contracts und viele Ethereum-Tools können verwendet werden.
- Schnelle Finalität: CometBFT-Chains können schnelle Blockzeiten und Finalität nach einem gecommitteten Block bieten.
- Zugriff auf Cosmos-Funktionen: Precompiles können Smart Contracts mit Staking, Governance, nativen Bank-Assets und IBC-Transfers zusammenarbeiten lassen.
- Viel Konfigurationsfreiheit: Builder wählen selbst Module, aktive Precompiles, Fee-Parameter und Zugriffsrichtlinien.
- Cross-Chain-Möglichkeiten: IBC und Callbacks ermöglichen komplexere Token-Flows zwischen kompatiblen Blockchains.
Die Einschränkungen:
- Keine einheitliche Erfahrung: Validator-Sets, RPC-Endpunkte, IBC-Kanäle, verfügbare Tokens, Precompiles und Parameter unterscheiden sich je nach Chain.
- Nicht jede EVM-Funktion ist vorhanden: Blob-Transaktionen aus EIP-4844 und PREVRANDAO aus EIP-4399 fehlen.
- IBC-Adressbeschränkung: ICS-20-Transfers erfordern derzeit eine Bech32-Empfängeradresse, keine hexadezimale Adresse.
- Zusätzliche Technik bei anderen Dezimalstellen: Ein Gastoken mit 18 Dezimalstellen ist der einfachste und empfohlene Weg. Eine bestehende Chain mit einer anderen Anzahl an Dezimalstellen benötigt
x/precisebank, was die Integration komplizierter macht. - Software ist noch in Entwicklung: v0.x-Releases können vor einer v1-Version Breaking Changes enthalten.
Auch wichtig: Ein Audit oder EVM-Kompatibilität ist keine automatische Garantie dafür, dass jede Implementierung sicher ist. Eine bestimmte Konfiguration, Smart Contracts, IBC-Kanäle und Cross-Chain-Integrationen können jeweils eigene Risiken haben.
Fazit
Cosmos EVM ist eine flexible Baulage für Entwickler, die eine eigene Cosmos-SDK-Chain mit der bekannten Ethereum-Umgebung kombinieren wollen. Es ist also keine separate Blockchain oder kein Token, sondern Software, mit der Solidity-Smart-Contracts, Ethereum-Tools und JSON-RPC auf einer eigenständigen Cosmos-Chain funktionieren können.
Die große Stärke liegt in der Kombination: EVM-Kompatibilität auf der einen Seite und Cosmos-SDK-Module, ein eigenes Validator-Set und IBC auf der anderen. Dadurch können Smart Contracts zum Beispiel native Token-Funktionen oder Cross-Chain-Transfers nutzen.
Gleichzeitig ist Cosmos EVM nicht überall exakt gleich. Die Funktionen, Fees, IBC-Verbindungen, Precompiles und technischen Einstellungen unterscheiden sich je nach Chain. Für Nutzer und Entwickler ist es deshalb wichtig, immer auf die konkrete Implementierung zu schauen und nicht nur auf das Label Cosmos EVM.