EVMC
Ethereum-Client-VM-Connector-API
Der EVMC ist die Low-Level-ABI zwischen Ethereum Virtual Machines (EVMs) und Ethereum-Clients. Auf der EVM-Seite werden klassisches EVM1 und ewasm unterstützt. Auf der Client-Seite definiert es die Schnittstelle für EVM-Implementierungen, um auf die Ethereum-Umgebung und den Ethereum-Status zuzugreifen.
Verwendung
Dokumentation
Bitte schauen Sie sich die Dokumentation an.
Sprachunterstützung
Sprache | Unterstützte Versionen | Unterstützte Compiler | Funktionsunterstützung |
---|
C | C99, C11 | GCC 8+, clang 9+, MSVC 2017+ | Host- und VM-seitig |
C++ | C++17 | GCC 8+, clang 9+, MSVC 2017+ | Host- und VM-seitig |
Go (Bindungen) | 1.11+ (mit Modulen) | | Nur Hostseite |
Rost (Bindungen) ¹ | Ausgabe 2018 | 1.47.0 und neuer | Nur VM-seitig |
Java (Bindungen) ² | 11 | | Nur Hostseite |
- ↑ Die Rust-Unterstützung ist begrenzt und noch nicht vollständig, aber größtenteils bereits funktionsfähig. In dieser Phase sind bahnbrechende Änderungen möglich.
- ↑ Die Java-Unterstützung ist in Arbeit und die Schnittstelle bleibt im Wandel. In dieser Phase sind bahnbrechende Änderungen möglich.
Testwerkzeuge
- evmc run (tools/evmc) – führt Bytecode in jeder EVMC-kompatiblen VM-Implementierung aus.
- evmc-vmtester (tools/vmtester) – kann jede EVM-Implementierung auf Kompatibilität mit EVMC testen.
Verwandte Projekte
EVMs
- Aleth-Dolmetscher
- Daytona
- eip1962-evmc (Vorkompilierung im EIP-2003-Stil)
- evmjit
- evmone
- Hera
- Hera.rs
- ssvm-evmc
Kunden
- Aleth
- core-geth (in Bearbeitung)
- Erigon (mit Seidenraupe)
- evmc-js
- go-ethereum (in Bearbeitung)
- nim-evmc
- phant (in Bearbeitung)
- pyevm (in Bearbeitung)
- Pyethereum (verlassen)
- rust-ssvm (Rust-Hostseite)
- Seidenraupe
- Solidität (für Integrationstests)
Betreuer
- Alex Beregszaszi @axic
- Paweł Bylica @chfast
Siehe auch die Liste der EVMC-Autoren.
Mitwirken
Sprechen Sie mit uns im EVMC Gitter-Chat.
Lizenz
Lizenziert unter der Apache-Lizenz, Version 2.0.
Intern
Neue Veröffentlichung erstellen
- Aktualisieren Sie CHANGELOG.md, geben Sie das Veröffentlichungsdatum ein und aktualisieren Sie den Veröffentlichungslink.
-
git add CHANGELOG.md
. - Neue Veröffentlichung markieren:
bumpversion --allow-dirty prerel
. - Bereiten Sie CHANGELOG für die nächste Veröffentlichung vor: Fügen Sie den unveröffentlichten Abschnitt und den Link hinzu.
-
git add CHANGELOG.md
. - Starten Sie eine neue Release-Serie:
bumpversion --allow-dirty --no-tag minor
.