Деплой смарт-контрактов в Solana mainnet: настройка, аудит, верификация

На практике мы часто сталкиваемся с ситуацией: команда тратит недели на разработку, а при деплое на mainnet обнаруживает, что не учтена rent-exemption или upgrade authority завязан на один ключ. Однажды клиент пришёл с готовой программой на 150 КБ — при деплое выяснилось, что `solana rent` показывае

Направления блокчейн-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

На практике мы часто сталкиваемся с ситуацией: команда тратит недели на разработку, а при деплое на mainnet обнаруживает, что не учтена rent-exemption или upgrade authority завязан на один ключ. Однажды клиент пришёл с готовой программой на 150 КБ — при деплое выяснилось, что solana rent показывает 1.2 SOL, а в кошельке всего 0.5 SOL. Пришлось срочно докупать токены и переписывать скрипты. Solana — не EVM: здесь каждая транзакция и аккаунт требуют планирования. Мы выполняем деплой под ключ, от настройки Anchor до финальной верификации, и знаем все подводные камни.

Инструментарий: Anchor Framework vs нативный Rust

Критерий Anchor Framework Нативный Rust без Anchor
Время на разработку MVP 2-3 недели 6-8 недель (в 3x дольше)
Безопасность по умолчанию Встроенные проверки signer, realloc Всё вручную, риск ошибок
IDL (интерфейс) Генерируется автоматически Нет, нужно писать вручную
Поддержка upgrade authority Встроенная Ручная настройка

Anchor — стандартный фреймворк для Solana-разработки. Если пишете на нативном Rust без Anchor, умножайте время разработки на 3 и добавляйте ручную десериализацию инструкций. Anchor берёт на себя большинство boilerplate и генерирует IDL (Interface Definition Language) — аналог ABI для EVM.

# Сборка anchor build # Деплой в mainnet-beta anchor deploy --provider.cluster mainnet-beta \ --provider.wallet ~/.config/solana/deployer-keypair.json 

Стоимость деплоя: rent-exemption

В Solana хранение данных в аккаунте стоит SOL в виде rent. Чтобы аккаунт не был удалён, нужно держать на нём минимальный баланс (rent-exemption). Размер program account пропорционален размеру bytecode. Это важно планировать: при бюджете на деплой нужно учитывать не только transaction fees (~0.00025 SOL), но и rent-exemption за хранение самого program account.

Размер program Rent-exemption (SOL) Дополнительные комиссии
50 КБ ~0.3 SOL 0.00078 SOL за загрузку
200 КБ ~1.4 SOL 0.0013 SOL за загрузку
500 КБ ~3.8 SOL 0.0025 SOL за загрузку
# Оценка стоимости до деплоя solana rent <bytes> # Пример: program 200KB ≈ 1.4 SOL rent-exemption 

Buffer account и двухэтапный деплой

Solana ограничивает размер одной транзакции. Program больше нескольких килобайт деплоится в несколько этапов через буферный аккаунт:

  1. Создаётся buffer account.
  2. Bytecode загружается частями через solana program write-buffer.
  3. Program деплоится из buffer'а атомарно.

Anchor делает это автоматически. При ручном деплое через CLI:

solana program deploy \ --program-id target/deploy/my_program-keypair.json \ --buffer /path/to/buffer-keypair.json \ target/deploy/my_program.so 

Почему upgrade authority — главный риск?

По умолчанию Anchor создаёт upgradeable program с upgrade authority равным deployer keypair. Это правильно для разработки, но не для production. В production мы передаём authority на multisig (Squads Protocol — стандартный multisig на Solana). Любое обновление program требует M-of-N подписей. Это критично для mainnet — одиночный ключ как upgrade authority — это single point of failure. Один из наших клиентов потерял $10k из-за утечки deployer keypair, когда злоумышленник обновил program на вредоносную версию. После этого мы внедрили multisig для всех проектов.

Immutable program — если логика финальная и обновления не планируются. Это необратимо: после --final program нельзя обновить или закрыть.

Как мы находим коллизии PDA?

Program Derived Addresses (PDA) — уникальные адреса, производные от program ID и seeds. Коллизия возникает, когда два разных data account генерируют одинаковый PDA. Мы проверяем на коллизии через findProgramAddress в тестах, а также используем bump seeds (от 255 до 0) для исключения конфликтов. В одном проекте мы обнаружили коллизию в 3 своих seeds — это могло привести к краже средств. Аудит security-фирмы (Neodyme) подтвердил нашу находку.

Верификация и IDL

После деплоя загружаем IDL on-chain — это позволяет другим разработчикам и инструментам (Explorer, Anchor clients) автоматически знать интерфейс программы.

anchor idl init --filepath target/idl/my_program.json <PROGRAM_ID> \ --provider.cluster mainnet-beta 

Верификация исходного кода — через solana-verify (OtterSec). Публикует доказательство, что on-chain bytecode соответствует конкретному Git commit.

Чеклист перед mainnet-деплоем

  • Полное тестовое покрытие на localnet и devnet.
  • Аудит (OtterSec, Neodyme, Trail of Bits — специализируются на Solana).
  • Program derived addresses (PDA) проверены на коллизии.
  • Проверка integer overflow (overflow-checks = true в Cargo.toml).
  • Upgrade authority передан на multisig.
  • Достаточно SOL на deployer wallet с учётом rent-exemption.
  • Мониторинг через Helius webhooks или Shyft на критичные инструкции.

Что входит в работу

  • Конфигурация Anchor под ваш проект. Деплой программы в mainnet/devnet с настройкой buffer. Передача upgrade authority на multisig или финализация. Загрузка IDL on-chain. Верификация кода через solana-verify. Документация по структуре аккаунтов и инструкциям. Поддержка в течение 14 дней после деплоя.

Мы выполнили деплой для 50+ проектов и гарантируем, что ваш контракт будет работать без сюрпризов. Свяжитесь с нами для оценки вашего проекта — наши инженеры с 5+ лет опыта в блокчейне ответят в течение дня. Получите консультацию по вашему проекту уже сегодня.