Деплой програм на Solana mainnet: повний гайд від Anchor до верифікації

На практиці ми часто стикаємося з ситуацією: команда витрачає тижні на розробку, а при деплої на 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 тижнів (Anchor в 3 рази швидше)
Безпека за замовчуванням Вбудовані перевірки 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. Наприклад, деплой програми у 200 КБ коштує близько 1.4 SOL (≈ $200 за поточним курсом).

Розмір 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.

Покрокова інструкція розгортання

  1. Підготовка: повне тестове покриття на localnet та devnet, аудит безпеки (Neodyme, Trail of Bits), перевірка PDA на колізії, integer overflow з overflow-checks = true.
  2. Збірка: anchor build.
  3. Деплой: anchor deploy --provider.cluster mainnet-beta (автоматичне створення buffer account).
  4. Налаштування upgrade authority: передача на multisig або фіналізація через --final.
  5. Завантаження IDL: anchor idl init.
  6. Верифікація: solana-verify.
  7. Моніторинг: через Helius webhooks або Shyft на критичні інструкції.

Що входить у роботу

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

Ми виконали деплой для 50+ проектів і гарантуємо, що ваш контракт працюватиме без сюрпризів. Зв'яжіться з нами для оцінки вашого проекту — наші інженери з 5+ років досвіду в блокчейні відповість протягом дня. Отримайте консультацію щодо вашого проекту вже сьогодні.

ДжерелоДокументація Solana: rent-exemption та upgrade authority. https://docs.solana.com