На практиці ми часто стикаємося з ситуацією: команда витрачає тижні на розробку, а при деплої на 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 більше кількох кілобайт деплоїться в кілька етапів через буферний акаунт:
- Створюється 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.
Покрокова інструкція розгортання
- Підготовка: повне тестове покриття на localnet та devnet, аудит безпеки (Neodyme, Trail of Bits), перевірка PDA на колізії, integer overflow з
overflow-checks = true. - Збірка:
anchor build. - Деплой:
anchor deploy --provider.cluster mainnet-beta(автоматичне створення buffer account). - Налаштування upgrade authority: передача на multisig або фіналізація через
--final. - Завантаження IDL:
anchor idl init. - Верифікація:
solana-verify. - Моніторинг: через Helius webhooks або Shyft на критичні інструкції.
Що входить у роботу
- Конфігурація Anchor під ваш проект.
- Деплой програми в mainnet/devnet з налаштуванням buffer.
- Передача upgrade authority на multisig або фіналізація.
- Завантаження IDL on-chain.
- Верифікація коду через solana-verify.
- Документація щодо структури акаунтів та інструкцій.
- Підтримка протягом 14 днів після деплою.
Ми виконали деплой для 50+ проектів і гарантуємо, що ваш контракт працюватиме без сюрпризів. Зв'яжіться з нами для оцінки вашого проекту — наші інженери з 5+ років досвіду в блокчейні відповість протягом дня. Отримайте консультацію щодо вашого проекту вже сьогодні.







