Вступ

Satellite Connect — проєкт підключення гаманців Етапу 2 TUWA: headless-сховище підключень гаманців EVM і Solana, яке не залежить від фреймворку. Воно тримає підключені гаманці й активний гаманець поза вашими компонентами, після перезавантаження сторінки знову підключає останній гаманець, відстежує зміни акаунта й мережі, зроблені в гаманці, і відключає гаманець, коли сесія Sign-In With X йому більше не відповідає. Без UI-компонентів і без хостингових сервісів.
🏛️ Місце Satellite Connect у TUWA
TUWA побудовано етапами. Кожен етап спирається на попередні:
| Етап | Проєкти | Роль |
|---|---|---|
| 1 — Базова автентифікація та примітиви | SIWX , Orbit Utils | Автентифікація CAIP-122 і мультичейн-примітиви |
| 2 — Стан та підключення | Satellite Connect, Pulsar | Машина станів підключення гаманців і відстеження транзакцій |
| 3 — Бекенд та синхронізація | Quasar Cloud або Quasar Community на власному сервері | Індексація транзакцій і синхронізація між пристроями |
| 4 — Інтерфейс користувача | Nova UI Kit | Дизайн-система та компоненти React |
Satellite Connect побудовано на Orbit Utils (назви конекторів, помічники для localStorage, клієнти мереж, пошук імен ENS і SNS). Nova Connect показує його стан у модальних вікнах підключення, Pulsar читає збережене ним останнє підключення, а його спостерігачі узгоджують гаманець із сесією SIWX; усе це необов’язково. Колишній пакет @tuwaio/satellite-siwe-next-auth застарів, його замінює SIWX .
🧭 Принципи
- Підключення — це стан, а не логіка компонентів: гаманці живуть в одному сховищі поза вашими компонентами, тому кожен компонент читає те саме активне підключення, а підключення зберігається під час навігації та після перезавантаження сторінки.
- Headless і без прив’язки до фреймворку: сховище — це vanilla-сховище Zustand без UI. Прив’язки до React винесено в окремий пакет, а модальні вікна підключення — у Nova Connect.
- Одне сховище, багато мереж: логіка мереж живе в адаптерах, що реалізують один спільний інтерфейс. Гаманці EVM і Solana можна підключити одночасно, і один із них буде активним.
- Лише сучасні Web3-бібліотеки:
@wagmi/coreіviemдля EVM, Wallet Standard і@solana/kitдля Solana. Жоднихethers.js,web3.js,@solana/web3.jsчиgill. - Некастодіальність, без хостингових сервісів: гаманці підключаються напряму через конектори wagmi та Wallet Standard. Немає ні Wallet-as-a-Service, ні власного бекенду Satellite Connect.
- Прозорі побічні ефекти: сторінки пакетів перелічують, що зберігається в
localStorageі до яких хостів надсилаються запити.
🔄 Як працює підключення
connect({ connectorType, chainId })
│ adapter.connect → the wallet asks the user to connect
│ connections + activeConnection → the store holds the new connection
│ adapter.checkIsContractAddress → isContractAddress (EVM smart accounts)
│ callbackAfterConnected(connection) → your code (optional)
│ orbit-core:lastConnectedConnector → saved to localStorage (read by auto-connect and Pulsar)
▼
chain watchers (EVM: wagmi events, Solana: Wallet Standard wallets)
│ account or network changed in the wallet → updateActiveConnection
│ wallet disconnected, SIWX sign-in rejected,
│ or wallet no longer matches the SIWX session → disconnect
▼
disconnect(connectorType?)
│ adapter.disconnect → the wallet disconnects
│ other wallets still connected → the first one becomes active and is saved
│ no wallet left → the saved connection is removedПісля перезавантаження initializeAutoConnect читає збережене підключення й відновлює цей гаманець без запиту до користувача, крім гаманців, яким потрібна його дія (як-от WalletConnect). Гаманець, який більше не встановлено або який більше не авторизує сайт, пропускається без помилки. initializeAutoConnect ніколи не відключає гаманці, яких ця сторінка не тримає, тож перезавантаження не відключає гаманець в інших вкладках.
🧩 Пакети
| Пакет | Рівень | Що надає | Peer-залежності |
|---|---|---|---|
@tuwaio/satellite-core | L3 | Сховище підключень, інтерфейс адаптера, автопідключення, тип стану SIWX | @tuwaio/orbit-core ≥ 0.4, zustand 5.x, immer 11.x |
@tuwaio/satellite-evm | L4 | EVM-адаптер і спостерігач, перевірка контрактних акаунтів, помічники конфігурації wagmi | @tuwaio/satellite-core ≥ 0.7, @tuwaio/orbit-core ≥ 0.5, @tuwaio/orbit-evm ≥ 0.3, @wagmi/core 3.x, viem 2.x |
@tuwaio/satellite-solana | L4 | Solana-адаптер і спостерігач, підписувач повідомлень | @tuwaio/satellite-core ≥ 0.7, @tuwaio/orbit-core ≥ 0.5, @tuwaio/orbit-solana ≥ 0.4, @solana/kit ≥ 8.2, @wallet-standard/base, features, ui, ui-registry |
@tuwaio/satellite-react | L4 | Провайдер, хук сховища, компоненти-спостерігачі для EVM і Solana | @tuwaio/satellite-core ≥ 0.7, react ≥ 19.2.3, zustand 5.x; для /evm і /solana: @tuwaio/satellite-evm або @tuwaio/satellite-solana та їхні бібліотеки |
Кожна сторінка пакета показує README пакета, а за ним — довідник усіх експортів, згенерований із вихідного коду TypeScript. Мережевим пакетам L4 також потрібні peer-залежності @tuwaio/satellite-core і пакетів Orbit, які вони використовують (для Solana — пакети @wallet-standard з @tuwaio/orbit-solana); команди нижче встановлюють їх.
💾 Встановлення
Встановіть основний пакет і ті пакети L4, які потрібні вашому застосунку:
# L3 core
pnpm add @tuwaio/satellite-core @tuwaio/orbit-core zustand immer
# L4 EVM
pnpm add @tuwaio/satellite-evm @tuwaio/orbit-evm @wagmi/core viem
# L4 Solana
pnpm add @tuwaio/satellite-solana @tuwaio/orbit-solana @solana/kit @wallet-standard/base @wallet-standard/features @wallet-standard/ui @wallet-standard/ui-registry @wallet-standard/app @wallet-standard/ui-core
# L4 React (add @wallet-standard/react and react-dom for @tuwaio/satellite-react/solana)
pnpm add @tuwaio/satellite-react react📚 Що далі
- Перегляньте розділ Пакети: там приклади використання та повний довідник кожного пакета. Для React-застосунку почніть із
@tuwaio/satellite-react. - Прочитайте посібник «Мультичейн-автентифікація з SIWX» про вхід через SIWX в EVM і Solana та про те, як спостерігачі підключень узгоджують гаманець із сесією.
- Використовуйте готові модальні вікна підключення та акаунта з Nova Connect (Storybook).
- Створіть full-stack застосунок із Nova Connect, SIWX, Pulsar і Quasar: дивіться посібник «Full-Stack React застосунок» .
- Більше посібників екосистеми — на docs.tuwa.io/guides , а вихідний код — на GitHub .