Программа

В экосистеме Solana «умные контракты» называются программами. Каждая программа - это учетная запись на цепочке, хранящая исполняемую логику, организованную в определенные функции, называемые инструкциями.

Дополнительные темы, связанные с программами Solana, см. на страницах раздела «Развертывание программ» этой документации.

Ключевые точки #

  • Программы - это учетные записи в цепочке, содержащие исполняемый код. Этот код организован в отдельные функции, называемые инструкциями.

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

  • Программы могут быть обновлены органом обновления.
    Программа становится неизменяемой, если полномочия обновления установлены на ноль.

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

Написание программ Solana #

Программы Solana преимущественно пишутся на языке программирования Rust, при этом существует два общих подхода к разработке:

  • Anchor: Фреймворк, предназначенный для разработки программ Solana. Он обеспечивает более быстрый и простой способ написания программ, используя макросы языка Rust для значительного уменьшения кодового кода. Новичкам рекомендуется начинать с фреймворка Anchor.

  • Native Rust: Этот подход предполагает написание программ Solana на Rust без использования каких-либо фреймворков. Он обеспечивает большую гибкость, но сопровождается повышенной сложностью.

Обновление программ Solana #

Программы на цепочке могут быть непосредственно изменены учетной записью, обозначенной как «полномочия обновления», которая обычно является учетной записью, первоначально развернувшей программу.

Если полномочия на обновление отозваны и установлены на None, программа становится неизменяемой и больше не может быть обновлена.

Верифицируемые программы #

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

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

  • Поиск верифицированных программ: Чтобы быстро проверить наличие верифицированных программ, пользователи могут найти адрес программы в SolanaFM Explorer и перейти на вкладку «Verification». Пример верифицированной программы можно посмотреть здесь.

  • Инструменты верификации: Solana Verifiable Build CLI от Ellipsis Labs позволяет пользователям независимо проверять программы на цепочке по опубликованному исходному коду.

  • Поддержка верифицируемых сборок в Anchor: Anchor обеспечивает встроенную поддержку верифицируемых сборок. Подробности можно найти в документации по Anchor.

Пакетный фильтр Беркли (BPF) #

Solana использует инфраструктуру компилятора LLVM для компиляции программ в файлы исполняемого и связываемого формата (ELF). Эти файлы содержат модифицированную версию байткода Berkeley Packet Filter (eBPF) для программ Solana, известную как «Solana Bytecode Format» (sBPF).

Использование LLVM позволяет Solana потенциально поддерживать любой язык программирования, который может компилироваться в BPF-бэкенд LLVM. Это значительно повышает гибкость Solana как платформы для разработки.