ЭВМК
API коннектора Ethereum Client-VM
EVMC — это ABI низкого уровня между виртуальными машинами Ethereum (EVM) и клиентами Ethereum. Что касается EVM, он поддерживает классические EVM1 и ewasm. На стороне клиента он определяет интерфейс для реализаций EVM для доступа к среде и состоянию Ethereum.
Использование
Документация
Пожалуйста, ознакомьтесь с документацией.
Поддержка языков
Язык | Поддерживаемые версии | Поддерживаемые компиляторы | Поддержка функций |
---|
С | С99, С11 | GCC 8+, clang 9+, MSVC 2017+ | На стороне хоста и виртуальной машины |
С++ | С++17 | GCC 8+, clang 9+, MSVC 2017+ | На стороне хоста и виртуальной машины |
Иди (привязки) | 1.11+ (с модулями) | | Только на стороне хоста |
Ржавчина (крепления) ¹ | издание 2018 года | 1.47.0 и новее | Только на стороне виртуальной машины |
Java (привязки) ² | 11 | | Только на стороне хоста |
- ↑ Поддержка Rust ограничена и еще не завершена, но в основном он уже функционален. На этом этапе возможны кардинальные изменения.
- ↑ Поддержка Java находится в разработке, а интерфейс продолжает меняться. На этом этапе возможны кардинальные изменения.
Инструменты тестирования
- evmc run (tools/evmc) — выполняет байт-код в любой реализации виртуальной машины, совместимой с EVMC.
- evmc-vmtester (tools/vmtester) — может протестировать любую реализацию EVM на совместимость с EVMC.
Связанные проекты
EVM
- алет-интерпретатор
- Дайтона
- eip1962-evmc (прекомпиляция в стиле EIP-2003)
- евмджит
- эвмоне
- Гера
- Гера.рс
- ssvm-evmc
Клиенты
- Алет
- ядро-геты (в разработке)
- эригон (с тутовым шелкопрядом)
- evmc-js
- go-ethereum (в разработке)
- ним-евмк
- фантазия (в процессе)
- пьевм (в разработке)
- пиетериум (заброшенный)
- ржавчина-ssvm (сторона хоста Rust)
- тутовый шелкопряд
- Solidity (для интеграционного тестирования)
Мейнтейнеры
- Алекс Берегсаси @axic
- Павел Былица @chfast
См. также список авторов EVMC.
Содействие
Поговорите с нами в чате EVMC Gitter.
Лицензия
Лицензия Apache, версия 2.0.
Внутренний
Делаем новый релиз
- Обновите CHANGELOG.md, поставьте дату выпуска, обновите ссылку на релиз.
-
git add CHANGELOG.md
. - Тег нового выпуска:
bumpversion --allow-dirty prerel
. - Подготовьте CHANGELOG к следующему выпуску: добавьте неизданный раздел и ссылку.
-
git add CHANGELOG.md
. - Начать новую серию выпусков:
bumpversion --allow-dirty --no-tag minor
.