Главное преимущество двойной модели исполнения Dusk заключается не в совместимости с EVM. Это архитектурный выбор.

@Dusk разделяет расчёты и выполнение: DuskVM запускает контракты Rust/WASM напрямую на Dusk L1, а DuskEVM предоставляет исполнимость, совместимую с EVM, с расчётами и доступностью данных через DuskDS.

Более глубокое последствие в том, что разработчики могут выбирать, где должна находиться логика приложения, а не вынуждать каждый тип нагрузки вписываться в одну модель исполнения.

Если контракту нужен прямой доступ к L1 к моделям транзакций Dusk, возможности приватности или нулевого знания, то нативным путём будет DuskVM. Если приоритет — Solidity, существующие кошельки и инструменты экосистемы Ethereum, то DuskEVM снижает порог миграции. Dusk явно представляет два пути как выбор, зависящий от требований приложения.

Но эта гибкость поднимает архитектурный вопрос, который я нахожу интереснее вопроса совместимости:

Где должен жить инвариант?

На мой взгляд, правила, привязанные только к одной среде исполнения, могут оставаться локальными в этой среде. Правила, охватывающие разные пути исполнения, или зависящие от расчётов, требуют явного определения владельца и границ координации.

Эта разница важна, потому что слои Dusk не взаимозаменяемы. DuskDS обеспечивает консенсус, финализацию, расчёты и доступность данных, тогда как DuskVM и DuskEVM предоставляют разные среды исполнения.

Мост делает границу конкретной. В задокументированном сценарии вывода средств DuskEVM Testnet вывод инициируется в DuskEVM, затем доказывается и финализируется на Dusk L1. Рабочий процесс, таким образом, пересекает уровни исполнения, а не ведёт себя как единая монолитная операция.

Мой вывод: модульность не просто уменьшает сложность. Она позволяет разработчикам решать, где должна жить эта сложность.

Для финансовых приложений это может быть существенным архитектурным преимуществом: держать логику, специфичную для конкретной среды исполнения, локальной, а правила, действующие между слоями, — как явные архитектурные ограничения.

Какие правила должны оставаться внутри среды исполнения, а какие достаточно важны, чтобы обеспечиваться на уровне всей архитектуры?

$DUSK #dusk