Підключаємо фронтенд до Solana: гаманці, транзакції, @solana/web3.js

Розробники, які переходять з EVM на [Solana](https://docs.solana.com/), часто втрачають дні на інтеграцію фронтенду — різні бібліотеки, модель акаунтів, гаманці. Ми за 2–3 дні налаштовуємо повну зв'язку: @solana/web3.js, @solana/wallet-adapter, читання даних, робота з SPL токенами, відправка транзак

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

Часті запитання

Останні роботи

  • 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

Розробники, які переходять з EVM на Solana, часто втрачають дні на інтеграцію фронтенду — різні бібліотеки, модель акаунтів, гаманці. Ми за 2–3 дні налаштовуємо повну зв'язку: @solana/web3.js, @solana/wallet-adapter, читання даних, робота з SPL токенами, відправка транзакцій. Без зайвих абстракцій, з обробкою всіх edge-cases. Ключова проблема — неправильний вибір commitment level: використовуєте 'confirmed' замість 'finalized' — і користувач бачить непідтверджену транзакцію. Друга — TokenAccountNotFoundError, якщо гаманець ніколи не тримав SPL токен. Третя — публічний RPC з лімітом 100 rps, який не витримує навантаження. У цьому матеріалі розберемо, як правильно виконати інтеграцію Solana фронтенду.

Проблеми, які вирішуємо

Серед типових складнощів при інтеграції Solana фронтенду:

  • Нерозуміння commitment levels (processed vs confirmed vs finalized) — вибір неправильного рівня призводить до відображення непідтверджених даних або зависання UI.
  • Ігнорування TokenAccountNotFoundError — якщо користувач ніколи не тримав токен, запит падає з винятком, а не повертає 0.
  • Використання публічного RPC для production — жорсткі rate limits блокують запити вже при кількох сотнях користувачів.
  • Неправильна десеріалізація даних — Solana використовує Borsh замість ABI, без нього не прочитати стан акаунта.

Кейс: інтеграція Solana фронтенду для DeFi-платформи

Побудували інтеграцію за 2 дні: налаштували Wallet Adapter з трьома гаманцями (Phantom, Solflare, Backpack), реалізували відображення балансів нативного SOL та 5 SPL токенів, додали відправку транзакцій стейкінгу з обробкою помилок (blockhash expired, simulation failed). Використовували Tenderly для симуляції транзакцій перед відправкою. Важливий момент: десеріалізація даних стейкінг-акаунту через Borsh — без цього не прочитати стан. Для порівняння, на EVM аналогічна інтеграція зайняла б у два рази більше часу — 4–5 днів. Solana дає швидкість розробки, але потребує розуміння моделі акаунтів та PDAs.

Як вибрати RPC для Solana?

Публічний clusterApiUrl('mainnet-beta') має ліміт ~100 rps на IP. Для навіть середнього навантаження цього недостатньо. Ми рекомендуємо Helius (Enhanced API, webhook'и) або QuickNode. Вони дозволяють масштабуватися та отримувати парсинг транзакцій "з коробки". Helius швидший за публічний RPC у 100 разів за лімітами та надає транзакційні вебхуки, що економить час на розробку. Використання платного RPC знижує загальну вартість володіння, оскільки запобігає простоям через ліміти.

Провайдер Ліміти (rps) Webhook Парсинг логів
Public clusterApiUrl ~100 Ні Ні
Helius до 10 000 Так Так
QuickNode до 25 000 Так Так

Що таке commitment level і який обрати?

Commitment level визначає, коли транзакція вважається підтвердженою. processed — ~0.5 с, але може відкотитися. confirmed — ~2 с, ~66% stake. finalized — ~10 с, незворотньо. Для UI балансів використовуйте confirmed, для фінансових операцій — finalized.

Commitment Час Надійність Застосування
Processed ~0.5 с Низька UI, нефінансові операції
Confirmed ~2 с Середня Баланси, історія
Finalized ~10 с Висока Перекази, стейкінг

Покрокова інструкція відправки транзакції

  1. Підключіть гаманець через useWallet.
  2. Отримайте connection через useConnection.
  3. Створіть Transaction і додайте інструкції.
  4. Встановіть blockhash через connection.getRecentBlockhash().
  5. Встановіть feePayer як публічний ключ гаманця.
  6. Викличте sendTransaction і дочекайтеся підтвердження через connection.confirmTransaction.

Процес роботи

Аналітика → проектування архітектури → реалізація (налаштування провайдерів, логіка читання/запису) → тестування на devnet → деплой на mainnet. На кожному етапі — code review та навантажувальне тестування.

Строки та що входить

Строки: від 2 до 5 днів залежно від складності (кількість токенів, типи транзакцій, наявність кастомних інструкцій).

Чек-лист типових помилок при інтеграції:

  • Необроблений TokenAccountNotFoundError
  • Неправильний commitment level
  • Використання публічного RPC
  • Відсутність обробки blockhash expired
  • Недесеріалізація Borsh-даних

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

  • Документація по інтеграції (опис стеку, ендпоїнти).
  • Вихідний код з коментарями та доступ до репозиторію.
  • Навчання команди (1 година).
  • Підтримка протягом тижня після деплою.

Наш досвід та гарантії

Ми розробляємо на Solana понад 5 років, сертифіковані розробники Solana Foundation. Гарантуємо працездатність інтеграції: якщо після деплою виникнуть баги, виправляємо безкоштовно протягом 2 тижнів. Замовте інтеграцію Solana фронтенду — отримайте консультацію та оцінку проєкту за один день. Якщо вам потрібна допомога з інтеграцією, зв'яжіться з нами.