Виртуальная машина Solana (SVM) — это среда исполнения, которая обрабатывает программы  Solana и применяет изменения их состояния в сети. Программы компилируются в формат байт-кода Solana (sBPF) и выполняются в изолированной среде исполнения. В транзакциях указываются вызываемые программы и счета, которые каждая инструкция может читать или записывать, — это даёт среде исполнения сведения, необходимые для загрузки состояния и планирования совместимых задач.

Виртуальная машина Solana отделяет исполняемый код программ от изменяемых данных счетов и использует вычислительные единицы для учёта расхода ресурсов. Такая модель лежит в основе параллельной среды исполнения Sealevel в Solana: транзакции, не запрашивающие конфликтующие записываемые счета, могут обрабатываться одновременно. SVM — это слой исполнения, а не механизм консенсуса Solana, не клиент валидатора и не часы Proof of History.

Что такое виртуальная машина Solana?

Виртуальная машина Solana (SVM) — это среда исполнения, в которой работают программы  смарт-контрактов и обрабатываются инструкции транзакций в сети Solana. В отличие от систем, где смарт-контракт хранит собственное состояние, Solana разделяет код программы и счета данных. В транзакциях указывается, какие программы и счета будут использоваться, что позволяет сети обрабатывать независимые транзакции параллельно.

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

Как работает виртуальная машина Solana?

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

1. Загрузка необходимых счетов: SVM определяет плательщика комиссии, подписантов, записываемые счета и программы, которые нужны транзакции.

2. Выполнение инструкций: Инструкции выполняются по порядку через соответствующие программы Solana, которые при необходимости могут вызывать и другие программы.

3. Применение разрешений и лимитов: Во время исполнения среда проверяет принадлежность счетов, права подписантов, доступ на запись и лимиты вычислительных единиц.

4. Проверка результата: После исполнения SVM проверяет, что балансы и данные счетов соответствуют правилам протокола Solana.

5. Фиксация транзакции: Если все инструкции выполнены успешно, изменения состояния записываются вместе. Если хотя бы одна из них не выполнена, транзакция не обновляет состояние приложения частично.

Поскольку транзакции объявляют, к каким счетам они обращаются, Solana может параллельно выполнять транзакции с разными счетами, что помогает сети поддерживать более высокую пропускную способность.

Каковы основные преимущества и варианты применения SVM?

SVM рассчитана на приложения, которым нужно предсказуемое исполнение программ и которые выигрывают от явного указания доступа к счетам. Её производительность зависит как от устройства среды исполнения, так и от того, конкурируют ли транзакции за одно и то же записываемое состояние.

1. Объявленный доступ к счетам обеспечивает параллельное планирование. Транзакции перечисляют нужные им счета до исполнения, что позволяет планировщику запускать неконфликтующие транзакции на разных ядрах процессора, защищая общее записываемое состояние.

2. Программы и состояние остаются раздельными. Одна программа без собственного состояния может работать с множеством счетов данных: это позволяет переиспользовать логику приложения, а разработчикам — организовывать состояние с учётом параллелизма, а не дублировать код.

3. Атомарные транзакции могут объединять несколько инструкций. Транзакция может последовательно вызывать несколько программ и либо фиксирует все успешные изменения состояния вместе, либо отклоняет всю транзакцию, если одна из инструкций не выполнена.

4. Вычислительные единицы делают расход ресурсов явным. Среда исполнения измеряет работу программ и позволяет транзакциям запрашивать подходящий бюджет, что помогает валидаторам ограничивать исполнение, а пользователям — выражать приоритет через механизмы комиссий сети.

Какие есть примеры программ и сетей SVM?

Технология SVM встречается как в приложениях Solana, так и в сетях, которые заимствуют совместимое с Solana исполнение. Эти примеры различаются по расчётам и инфраструктуре, поэтому поддержка SVM сама по себе не делает их одной и той же сетью.

• Нативные программы Solana. Программа System создаёт счета, а программы голосования, стейкинга, вычислительного бюджета и таблиц поиска адресов дают ключевые функции, напрямую поддерживаемые средой исполнения Solana.

• Прикладные программы Solana. DEX, кредитные рынки, NFT-платформы и игры развёртывают программы sBPF, которые работают со счетами пользователей, рынков, хранилищ, выпуска токенов и позиций, передаваемыми с каждой инструкцией.

• Исполнение Eclipse. Eclipse использует среду исполнения на основе SVM, но проводит расчёты через инфраструктуру, связанную с  Ethereum, что показывает, как эта среда может встраиваться в другой модульный стек  блокчейна.

• Локальные инструменты тестирования SVM. Такие инструменты, как LiteSVM, воспроизводят поведение среды исполнения для разработки и тестов, не требуя отправлять каждый тестовый случай в действующий кластер валидаторов.

Каковы ограничения и риски SVM?

Модель производительности SVM накладывает конкретные ограничения на проектирование. Разработчикам нужно точно указывать счета, снижать ненужную конкуренцию и соблюдать лимиты среды исполнения, а пользователи по-прежнему сталкиваются с обычными рисками смарт-контрактов и транзакций.

1. Общие записываемые счета могут ограничивать параллелизм. Транзакции, которым нужен один и тот же записываемый счёт, не могут безопасно выполняться вместе, поэтому популярный счёт глобального состояния может стать узким местом приложения даже при параллельной среде исполнения.

2. Программы требуют знаний о разработке под Solana. Разработчикам нужно разбираться в компиляции sBPF, принадлежности счетов, производных адресах программ, вызовах между программами, вычислительных бюджетах и требованиях к счетам, связанных с арендой.

3. Лимиты вычислений и счетов могут отклонять сложные вызовы. Транзакция может завершиться ошибкой, если превышает вычислительный бюджет, ссылается на слишком много ресурсов, недопустимо увеличивает данные счёта или достигает ограничений по глубине вызовов и лимитов среды исполнения.

4. Совместимость с SVM не равна безопасности Solana. Отдельная сеть на базе SVM может использовать других валидаторов, мосты, секвенсоры, иные механизмы доступности данных или управления обновлениями, что создаёт допущения о доверии, не связанные с исполняемым байт-кодом.

Чем SVM отличается от EVM?

SVM отличается от EVM прежде всего моделью счетов, байт-кодом и подходом к параллелизму. Транзакции Solana объявляют доступ к счетам до исполнения, а программы работают с отдельными счетами состояния, что позволяет Sealevel планировать неконфликтующие задачи параллельно. Контракты Ethereum обычно хранят код и данные по одному адресу, а традиционное  исполнение EVM следует упорядоченной последовательности транзакций. Обе среды требуют детерминированных результатов на всех валидирующих узлах, но их инструменты разработчика, измерение комиссий, структура состояния и стандарты совместимости различаются.

Связанные понятия

1. Что такое смарт-контракт?

2. Что такое газ?

3. Что такое валидатор?

4. Что такое блокчейн?

Дополнительное чтение

1. Какие проекты на базе виртуальной машины Solana (SVM) входят в число ведущих в 2025 году?

2. Что такое Eclipse (ES) — первый уровень 2 на Ethereum на базе SVM?

3. Что такое Solscan и как пользоваться обозревателем блокчейна Solana?

4. Solana против Ethereum: сравнительный анализ