﻿---
title: "Ethereum Virtual Machine (EVM)"
description: "Fork-sensitiver Leitfaden zu EVM-Transaktionen, Message Calls, Bytecode, Stack, Memory, Storage, Gas, REVERT, DELEGATECALL, Precompiles, Receipts und Zustandsabgleich."
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Ethereum Virtual Machine (EVM)

> Nur zu Bildungszwecken; stellt keine Anlageberatung oder Anlageempfehlung dar. Anlagen können zu Verlusten führen.

<a id="answer"></a>

## Direkte Antwort

Die EVM ist die Zustandsübergangsmaschine der Ausführungsschicht, die Bytecode nach den Regeln eines bestimmten Forks interpretiert. Bei gleichem gültigem Vorzustand, gleicher Transaktion oder Message, Blockumgebung und Spezifikation müssen konforme Clients denselben Folgezustand oder Fehler berechnen. Die EVM ordnet keine Transaktionen, liefert keine Finalität und macht EVM-kompatible Chains nicht ebenso sicher wie Ethereum.

Eine extern signierte Transaktion ist ein Protokollobjekt oberster Ebene. Vertragsaktivität besteht aus verschachtelten Message Calls und Call Frames, nicht aus eigenständigen Transaktionen. Jeder Frame hat Code, Program Counter, 256-Bit-Stack, Memory, Calldata, Returndata, Gas und Kontext; persistenter Storage gehört zum Konto, transienter Storage gilt transaktionsweit.

<a id="mechanism"></a>

## Funktionsweise

1. Chain und `chainId`, Netzwerk, Block und Hash, kanonischen oder finalisierten Status, Fork, Client, Revision, Vorzustand, Typ, signierte Bytes, Hash und Receipt festlegen.
2. Envelope dekodieren und Vorabgültigkeit von Ausführung trennen. Signatur, Absender, Nonce, Ziel oder Erstellung, Value, Calldata, Gaslimit, Gebühren, Access List und Typparameter prüfen. Eine Vorabablehnung ist kein inkludierter Revert.
3. Top-Level-Message und Call Tree erstellen. `CALL`, `STATICCALL`, `DELEGATECALL`, Erstellung und Precompiles sowie Caller, Kontext- und Codeadresse, `msg.sender`, `msg.value`, Value, Daten, Gas und Ergebnis erfassen. „Interne Transaktion“ ist eine Trace-Ansicht.
4. Program Counter, Stack, Memory, Daten, Logs sowie persistenten und transienten Storage verfolgen. `CALL` nutzt den Callee-Kontext; `DELEGATECALL` führt Zielcode im Caller-Kontext aus und erhält Sender und Value; `STATICCALL` verbietet Zustandsänderung.
5. Fork-Gasregeln für Intrinsic Gas, Opcodes, Memory, Cold/Warm Access, Calls, Stipends, Precompiles und Refunds anwenden. Gebühr getrennt vom Value berechnen. Eine Schätzung ist keine Garantie.
6. Ergebnisse nach Scope behandeln. `RETURN` commitet nur, wenn Vorfahren committen. `REVERT` setzt Frame und Nachfahren zurück, liefert Daten und kann Gas zurückgeben; Exceptional Halt ist anders. Eltern können Fehler abfangen, daher kann Top-Level-Status `1` sein. Ein inkludierter Fehler verbraucht Nonce und Gas.
7. Status, Gas, Logs, Erstellungsadresse und Rückgabe mit Salden, Nonces, Code, Storage, Token-Ledgern, Traces und State Root abgleichen. Bei Bedarf re-exekutieren und Proxies, Layouts, Precompiles, Compiler und Forks getrennt von Finalität prüfen.

<a id="example"></a>

## Durchgerechnete Beispiele

- **Top-Level-Revert und Gebühr.** Eine Typ-2-Transaktion hat Limit `80,000`, verbraucht `52,000`, Base Fee `20 gwei`, maximale Priority Fee `3 gwei` und Max Fee `40 gwei`. Effektiv gilt `min(40, 20 + 3) = 23 gwei`; bezahlt werden `52,000 * 23 gwei = 0.001196 ETH`, davon `52,000 * 20 gwei = 0.001040 ETH` verbrannt und `52,000 * 3 gwei = 0.000156 ETH` Priority Fee. Die ungenutzten `28,000 gas` werden nicht berechnet. Bei Revert rollen Storage, Value und Logs zurück, Nonce und Gebühr bleiben.
- **Abgefangener Kindfehler.** A beginnt mit `A.x = 5`. B schreibt `B.y = 9`, emittiert ein Log und führt `REVERT` aus; Schreiben und Log rollen zurück. A sieht `success = false`, schreibt `A.x = 7` und endet normal. Receipt-Status ist `1`, final gilt `A.x = 7`, B behält den Vorwert.
- **DELEGATECALL-Kontext.** Proxy hat `slot0 = 5`, Implementierung `slot0 = 99`; Code addiert `7`. Durch `DELEGATECALL` wird Proxy `slot0 = 12`, Implementierung bleibt `slot0 = 99`; Adresse und Storage des Proxy gelten, Sender und Value bleiben erhalten.
- **Fork-bezogenes SELFDESTRUCT.** Unter EIP-6780 führt ein bestehender Vertrag mit `2 ETH` `SELFDESTRUCT` zu B aus. B erhält `2 ETH`, der Saldo wird null, Konto, Code und Storage werden aber nicht gelöscht. Löschung bleibt nur bei Erstellung und Selbstzerstörung in derselben Transaktion.

<a id="risks"></a>

## Risiken

- Gegen falsche Chain, Block, Fork, Client oder Vorzustand re-exekutieren.
- Nicht kanonischen oder reorganisierten Zustand als final behandeln.
- Vorabablehnung mit inkludiertem Revert verwechseln.
- Übereinstimmung ausstehender Simulation mit Inklusion annehmen.
- Top-Level-Revert, Exceptional Halt oder Out-of-Gas übersehen.
- Abgefangenen Kindfehler übersehen.
- Kontext, Codeadresse, Caller, Sender oder Value falsch lesen.
- Proxy durch Layoutfehler bei `DELEGATECALL` beschädigen.
- Reentrancy oder unsichere externe Kontrollübertragung zulassen.
- Ungeprüften Returndata, Flags oder Fehlern vertrauen.
- Logs oder Traces als maßgeblichen Zustand behandeln.
- Access-, Memory- oder weitergeleitetes Gas falsch berechnen.
- Refunds, Caps, Stipends oder `63/64`-Regel falsch anwenden.
- Falsche Precompile-Adresse, Eingabe, Kosten oder Forkregeln nutzen.
- Persistent Storage, Memory und Transient Storage verwechseln.
- Zustandsänderung in `STATICCALL` erwarten.
- Alte Löschannahmen für `SELFDESTRUCT` anwenden.
- Implementierungs-, Admin- oder Compilerdrift übersehen.
- Abweichende oder veraltete Clientregeln ausführen.
- Konsens-, Bridge-, Token- oder Governance-Sicherheit aus EVM-Kompatibilität ableiten.

<a id="misconceptions"></a>

## Häufige Irrtümer

- Solidity-Quellcode wird direkt onchain ausgeführt.
- Ein inkludierter Revert kostet nichts und ändert die Nonce nicht.
- Receipt-Status `1` beweist den Erfolg aller internen Calls.
- Event oder Trace ist der maßgebliche Zustand.
- EVM-Kompatibilität garantiert identische Opcodes, Gas, Precompiles, Konsens und Sicherheit.

<a id="related"></a>

## Verwandte Themen

- [Kontobasiertes Modell](/de/crypto/account-based-model/)
- [Gasgebühren](/de/crypto/gas-fee/)
- [Smart Contract](/de/crypto/smart-contract/)

<a id="sources"></a>

## Quellen

- [Ethereum Virtual Machine (EVM)](https://ethereum.org/developers/docs/evm/) - Ethereum.org (abgerufen: 2026-08-12)
- [Ethereum Yellow Paper: a formal specification of Ethereum, a programmable blockchain](https://ethereum.github.io/yellowpaper/paper.pdf) - Ethereum Foundation (abgerufen: 2026-08-12)
- [Ethereum Execution Layer Specification](https://ethereum.github.io/execution-specs/) - Ethereum Execution Specs (abgerufen: 2026-08-12)
- [Introduction to Smart Contracts](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html) - Solidity Documentation (abgerufen: 2026-08-12)
- [EIP-7: DELEGATECALL](https://eips.ethereum.org/EIPS/eip-7) - Ethereum Improvement Proposals (abgerufen: 2026-08-12)
- [EIP-140: REVERT instruction](https://eips.ethereum.org/EIPS/eip-140) - Ethereum Improvement Proposals (abgerufen: 2026-08-12)
- [EIP-2929: Gas cost increases for state access opcodes](https://eips.ethereum.org/EIPS/eip-2929) - Ethereum Improvement Proposals (abgerufen: 2026-08-12)
- [EIP-6780: SELFDESTRUCT only in same transaction](https://eips.ethereum.org/EIPS/eip-6780) - Ethereum Improvement Proposals (abgerufen: 2026-08-12)

Source: https://wiki.fcontext.com/de/crypto/evm/index.mdx
