Вступ

Pulsar — проєкт відстеження транзакцій Етапу 2 TUWA: headless-модуль, незалежний від фреймворку, що супроводжує транзакції EVM і Solana від запиту в гаманці до фінального статусу. Він тримає транзакції у сховищі поза вашими компонентами, зберігає їх у localStorage, відновлює відстеження після перезавантаження сторінки та розпізнає пришвидшення й скасування EVM-транзакцій, зроблені в гаманці. Без UI-компонентів і без обов’язкового бекенду.
🏛️ Місце Pulsar у TUWA
TUWA побудовано етапами. Кожен етап спирається на попередні:
| Етап | Проєкти | Роль |
|---|---|---|
| 1 — Базова автентифікація та примітиви | SIWX , Orbit Utils | Автентифікація CAIP-122 і мультичейн-примітиви |
| 2 — Стан та підключення | Satellite Connect , Pulsar | Машина станів підключення гаманців і відстеження транзакцій |
| 3 — Бекенд та синхронізація | Quasar Cloud або Quasar Community на власному сервері | Індексація транзакцій і синхронізація між пристроями |
| 4 — Інтерфейс користувача | Nova UI Kit | Дизайн-система та компоненти React |
Pulsar побудовано на Orbit Utils (помічники для мереж, клієнти RPC і бандлерів). Nova Transactions показує його стан у модальних вікнах і спливаючих сповіщеннях, а Quasar може індексувати його транзакції та синхронізувати їх між пристроями; обидва необов’язкові. Адаптери читають підключення гаманця, яке зберігає Satellite Connect, але Pulsar можна використовувати з будь-яким налаштуванням wagmi чи Wallet Standard.
🧭 Принципи
- Транзакції — це стан, а не логіка компонентів: транзакція живе у сховищі, а не в
useStateкнопки. Вона зберігається під час навігації, після розмонтування компонентів і після перезавантаження, а кожен компонент читає той самий статус. - Headless і без прив’язки до фреймворку: сховище — це vanilla-сховище Zustand без UI. Прив’язки до React винесено в окремий пакет, а UI — у Nova Transactions.
- Одне сховище, багато мереж: логіка мереж живе в адаптерах, що реалізують один спільний інтерфейс. EVM-адаптер відстежує стандартні транзакції, UserOperations ERC-4337, батчі викликів EIP-5792 і мультипідписні транзакції Safe; Solana-адаптер відстежує підписи.
- Лише сучасні Web3-бібліотеки:
viemі@wagmi/coreдля EVM,@solana/kitі Wallet Standard для Solana. Жоднихethers.js,web3.js,@solana/web3.jsчиgill. - Local-first, бекенд необов’язковий: відстеження працює в браузері через ваші RPC-ендпоінти. Віддалена синхронізація — це необов’язковий колбек, який ніколи не блокує транзакцію.
- Прозорі побічні ефекти: сторінки пакетів перелічують, що зберігається в
localStorage, до яких хостів надсилаються запити і коли трекери припиняють спроби.
🔄 Як відстежується транзакція
executeTxAction({ actionFunction, params })
│ validate title, description and payload
│ initialTx = { isInitializing: true } → UI shows the signing state
│ adapter.checkChainForTx → EVM: the wallet is asked to switch networks
│ beforeTxProcess() → your preflight check (optional)
│ actionFunction() → the wallet signs; returns a hash, userOpHash, safeTxHash or signature
│ adapter.checkTransactionsTracker → picks the tracker
│ addTxToPool → onRemoteCreate (optional), saved to localStorage
▼
tracker (background) → updateTxParams(...) until pending: false
status: Success | Failed | ReplacedПісля перезавантаження initializeTransactionsPool запускає трекери всіх транзакцій, що досі перебувають у стані pending.
🧩 Пакети
| Пакет | Рівень | Що надає | Peer-залежності |
|---|---|---|---|
@tuwaio/pulsar-core | L3 | Сховище транзакцій зі збереженням, інтерфейс адаптера, валідація метаданих, хуки віддаленої синхронізації, селектори, подія «транзакцію завершено» | @tuwaio/orbit-core ≥ 0.3, zustand 5.x, immer 11.x, dayjs 1.x |
@tuwaio/pulsar-evm | L4 | EVM-адаптер; трекери стандартних транзакцій, ERC-4337, EIP-5792 і Safe; пришвидшення, скасування; точка входу /safe без wagmi | @tuwaio/pulsar-core ≥ 0.10, viem 2.x; для основної точки входу також @tuwaio/orbit-evm ≥ 0.3, @wagmi/core 3.x |
@tuwaio/pulsar-solana | L4 | Solana-адаптер, трекер підписів, signAndSendSolanaTx | @tuwaio/pulsar-core ≥ 0.8, @tuwaio/orbit-solana ≥ 0.3, @solana/kit ≥ 8.2 |
@tuwaio/pulsar-react | L4 | Хуки useInitializeTransactionsPool і useTxFinished | react ≥ 19.2.3 |
Кожна сторінка пакета показує README пакета, а за ним — довідник усіх експортів, згенерований із вихідного коду TypeScript. Мережевим пакетам L4 також потрібні peer-залежності @tuwaio/pulsar-core і пакетів Orbit, які вони використовують (для Solana — пакети @wallet-standard з @tuwaio/orbit-solana); команди нижче встановлюють їх.
💾 Встановлення
Встановіть основний пакет і ті пакети L4, які потрібні вашому застосунку:
# L3 core
pnpm add @tuwaio/pulsar-core @tuwaio/orbit-core zustand immer dayjs
# L4 EVM
pnpm add @tuwaio/pulsar-evm @tuwaio/orbit-evm @wagmi/core viem
# L4 Solana
pnpm add @tuwaio/pulsar-solana @tuwaio/orbit-solana @solana/kit @wallet-standard/app @wallet-standard/ui-core @wallet-standard/ui-registry
# L4 React
pnpm add @tuwaio/pulsar-react react📚 Що далі
- Пройдіть посібник «Відстеження транзакцій у React» , щоб крок за кроком додати Pulsar до React-застосунку з гаманцем EVM або Solana.
- Почніть із готового застосунку: Стартові шаблони .
- Відстежуйте транзакції без сховища, у власному стані чи на сервері: Автономні трекери EVM і Автономні трекери Solana.
- Перегляньте розділ Пакети: там повний довідник кожного пакета.
- Прочитайте «Чому стан Web3-транзакцій зламаний» про збої стану транзакцій, прив’язаного до компонентів, з урахуванням яких створено Pulsar, і посібник з ERC-4337 про смарт-акаунти з Orbit EVM і двофазне відстеження UserOperation у Pulsar.
- Синхронізуйте транзакції між пристроями з Quasar: дивіться посібник «Синхронізація транзакцій із Quasar» .
- Вихідний код — на GitHub .