На практике мы часто сталкиваемся с ситуацией: команда тратит недели на разработку, а при деплое на 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 больше нескольких килобайт деплоится в несколько этапов через буферный аккаунт:
- Создаётся buffer account.
- Bytecode загружается частями через
solana program write-buffer. - 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+ лет опыта в блокчейне ответят в течение дня. Получите консультацию по вашему проекту уже сегодня.







