Штука в том, что если у тебя хоть немного сложный формат, то его представление в виде байткода для какой-нить стек-машины сильно упрощает спецификацию. Например, PDF/PostScript реально проще+мощнее, чем xml/html. Но если вовремя не остановиться, то оч легко мощность умножить на бесконечность, если у тебя добавляются динамические циклы или неограниченная рекурсия.
Короче, в моем ZkVM есть 32 инструкции и супер-плоский формат транзакции (4 поля и все), и штуки типа ковенантов и лайтнигов гораздо проще и прямее реализуются, чем в биткоине, где есть отдельно формат транзакции, отдельно скрипты на 70+ инструкций, и скрипты изолированы в отдельных входах, и все через жопу.
Разница с ыфириумом где тоже типа простой формат транзакции и все прописано в байткоде - в том, что (1) валидация транзакции полностью изолирована от глобального состояния, как в бтц, и (2) нет никакой динамической рекурсии и циклов, тоже как в бтц. Т.е. "VM" - по сути просто парсер. Но инструкции сделаны так, чтоб удобно было делать их композицию. Как базовая версия PDF, без джаваскрипта и прочих выкрутасов.