EVMC
API do conector Ethereum Client-VM
O EVMC é a ABI de baixo nível entre Máquinas Virtuais Ethereum (EVMs) e Clientes Ethereum. No lado EVM, ele suporta EVM1 clássico e ewasm. No lado do cliente define a interface para implementações EVM para acessar o ambiente e estado Ethereum.
Uso
Documentação
Por favor, visite a documentação.
Suporte a idiomas
Linguagem | Versões suportadas | Compiladores Suportados | Suporte a recursos |
---|
C | C99, C11 | GCC 8+, clang 9+, MSVC 2017+ | Lado do host e da VM |
C++ | C++17 | GCC 8+, clang 9+, MSVC 2017+ | Lado do host e da VM |
Vá (ligações) | 1.11+ (com módulos) | | Apenas do lado do host |
Ferrugem (ligações) ¹ | Edição 2018 | 1.47.0 e mais recente | Apenas no lado da VM |
Java (ligações) ² | 11 | | Apenas do lado do host |
- ↑ O suporte ao Rust é limitado e ainda não está completo, mas já está praticamente funcional. Mudanças significativas são possíveis nesta fase.
- ↑ O suporte Java está em andamento e a interface permanece em fluxo. Mudanças significativas são possíveis nesta fase.
Ferramentas de teste
- evmc run (tools/evmc) — executa bytecode em qualquer implementação de VM compatível com EVMC.
- evmc-vmtester (tools/vmtester) — pode testar qualquer implementação de EVM quanto à compatibilidade com EVMC.
Projetos relacionados
EVMs
- alet-intérprete
- Daytona
- eip1962-evmc (pré-compilação estilo EIP-2003)
- evmjit
- evmone
- Hera
- Hera.rs
- ssvm-evmc
Clientes
- aleth
- core-geth (em andamento)
- erigon (com bicho-da-seda)
- evmc-js
- go-ethereum (em andamento)
- nim-evmc
- fantasma (em andamento)
- pyevm (em andamento)
- piethereum (abandonado)
- ferrugem-ssvm (lado do host Rust)
- bicho-da-seda
- Solidez (para testes de integração)
Mantenedores
- Alex Beregszaszi @axic
- Paweł Bylica @chfast
Veja também a lista de Autores EVMC.
Contribuindo
Fale conosco no chat do EVMC Gitter.
Licença
Licenciado sob a Licença Apache, Versão 2.0.
Interno
Fazendo novo lançamento
- Atualize CHANGELOG.md, coloque a data de lançamento, atualize o link de lançamento.
-
git add CHANGELOG.md
. - Marque o novo lançamento:
bumpversion --allow-dirty prerel
. - Prepare o CHANGELOG para o próximo lançamento: adicione seção e link não lançados.
-
git add CHANGELOG.md
. - Inicie uma nova série de lançamentos:
bumpversion --allow-dirty --no-tag minor
.