Розробка системи сповіщень для dApp через Push Protocol

Розробка системи сповіщень для dApp через Push Protocol Email-сповіщення в DeFi не працюють — у користувача немає email, тільки адреса гаманця. Телеграм-боти вимагають окремої підписки і не прив'язані до on-chain ідентичності. Push Protocol (раніше EPNS) — децентралізований протокол сповіщень, пр

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

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

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1450
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1308
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1003
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1269
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1009

Розробка системи сповіщень для dApp через Push Protocol

Email-сповіщення в DeFi не працюють — у користувача немає email, тільки адреса гаманця. Телеграм-боти вимагають окремої підписки і не прив'язані до on-chain ідентичності. Push Protocol (раніше EPNS) — децентралізований протокол сповіщень, прив'язаних до адреси гаманця. Він дозволяє dApp надсилати on-chain та off-chain сповіщення підписникам без використання email або Telegram. Протокол безкоштовний для відправки, створення каналу вимагає стейкінгу токенів PUSH (мінімум 50 токенів на Ethereum або Polygon). Завдяки gasless opt-in підписка для користувача не потребує газу, що критично для onboarding. Наша команда з 10+ річним досвідом у Web3 інтегрувала Push Protocol у 50+ проєктів, заощаджуючи клієнтам до 70% витрат на інфраструктуру сповіщень і збільшуючи залученість користувачів на 25%. Зв'яжіться з нами для безкоштовної оцінки вашого проєкту.

Push Protocol: визначення та принцип роботи

Push Protocol — це messaging layer для Web3, де сповіщення прив'язані до гаманця. Він використовує стандарт EIP-712 для gasless opt-in і надсилає сповіщення через свій SDK. Детальніше про протокол можна дізнатися на GitHub або в офіційній документації.

Чому Push Protocol кращий за традиційні канали?

Порівняння з email та Telegram показує незаперечні переваги:

Критерій Email Telegram Push Protocol
Прив'язка до гаманця Ні Ні Так, on-chain
Децентралізація Ні Ні Так (IPFS)
Вартість розсилки Залежить від сервісу Безкоштовно Безкоштовно
Gasless підписка - - Так (EIP-712)
real-time сповіщення Ні Так Так
Інтеграція в dApp Ні Через бота SDK / WebSocket

Push Protocol дає прямий зв'язок з користувачем без посередників, гарантуючи доставку on-chain подій.

Реалізація gasless opt-in

Gasless opt-in дозволяє користувачеві підписатися на канал без відправки on-chain транзакції, використовуючи підпис EIP-712. Це знижує бар'єр входу і підвищує конверсію підписок на 40%. Push SDK надає методи для перевірки підписки та підписки без газу. Рекомендується використовувати gasless opt-in, щоб не вимагати від користувача оплати газу.

Як впровадити Push-сповіщення в dApp?

  1. Створення каналу. Через app.push.org стейкаємо токени PUSH (на Ethereum або Polygon). Вказуємо ім'я, опис, іконку. Налаштовуємо канал під ваш бренд.

  2. Відправка сповіщень. Використовуємо @pushprotocol/restapi з бекенду. Приклад targeted-сповіщення:

import * as PushAPI from '@pushprotocol/restapi' import { ethers } from 'ethers' const CHANNEL_PRIVATE_KEY = process.env.PUSH_CHANNEL_PRIVATE_KEY! const signer = new ethers.Wallet(CHANNEL_PRIVATE_KEY) async function sendNotification( recipientAddress: string, title: string, body: string, cta?: string ) { await PushAPI.payloads.sendNotification({ signer, type: 3, identityType: 2, notification: { title, body }, payload: { title, body, cta: cta ?? '', img: '', }, recipients: `eip155:1:${recipientAddress}`, channel: `eip155:1:${CHANNEL_ADDRESS}`, env: 'prod', }) } 
  1. On-chain listener для real-time тригерів. Підписуємося на події ліквідації, свопів, голосувань:
import { createPublicClient, http, parseAbiItem } from 'viem' const client = createPublicClient({ chain: mainnet, transport: http(RPC_URL) }) client.watchContractEvent({ address: LENDING_PROTOCOL_ADDRESS, abi: lendingAbi, eventName: 'LiquidationCall', onLogs: async (logs) => { for (const log of logs) { const { user, collateralAsset, debtToCover } = log.args await sendNotification( user, 'Позиция ликвидирована', `Ликвидировано ${formatUnits(debtToCover, 18)} USDC. Проверьте ваши позиции.`, `https://app.protocol.xyz/positions` ) } } }) 
  1. Відображення у фронтенді. Використовуємо React-хуки для отримання сповіщень та WebSocket для real-time:
import * as PushAPI from '@pushprotocol/restapi' import { createSocketConnection, EVENTS } from '@pushprotocol/socket' import { useAccount } from 'wagmi' import { useQuery, useQueryClient } from '@tanstack/react-query' import { useEffect } from 'react' // Хук для получения уведомлений (polling 30s) export function useNotifications() { const { address } = useAccount() return useQuery({ queryKey: ['push-notifications', address], queryFn: async () => { const feeds = await PushAPI.user.getFeeds({ user: `eip155:1:${address}`, limit: 20, env: 'prod', }) return feeds }, enabled: !!address, refetchInterval: 30_000, }) } // Хук для real-time socket export function usePushSocket(address: string | undefined) { const queryClient = useQueryClient() useEffect(() => { if (!address) return const socket = createSocketConnection({ user: `eip155:1:${address}`, env: 'prod', socketOptions: { autoConnect: true } }) socket.on(EVENTS.USER_FEEDS, (feedItem: any) => { queryClient.invalidateQueries({ queryKey: ['push-notifications', address] }) // Показываем toast уведомление }) return () => socket?.disconnect() }, [address]) } 

Перевірка підписки та gasless opt-in

Перед відправкою перевіряємо, чи підписаний користувач:

async function isSubscribed(userAddress: string): Promise<boolean> { const subscriptions = await PushAPI.user.getSubscriptions({ user: `eip155:1:${userAddress}`, env: 'prod', }) return subscriptions.some( (sub: any) => sub.channel.toLowerCase() === CHANNEL_ADDRESS.toLowerCase() ) } 

Для gasless opt-in використовуємо delegated signing SDK — підписка без газу, що критично для onboarding. Користувач підписує повідомлення, а ми відправляємо підпис у Push Protocol.

Типові помилки: перевірте, що сінгер — власник каналу, використовуйте env: 'staging' для тестів. Для real-time використовуйте WebSocket, polling мінімальний — 10–30 секунд.

Що входить у роботу з інтеграції?

Ми надаємо під ключ:

  • Аудит поточної архітектури та постановка задачі
  • Створення та налаштування каналу Push Protocol
  • Розробка бекенд-сервісу відправки сповіщень (TypeScript/Node.js)
  • Інтеграція on-chain listener під ваші смарт-контракти (EVM, Solana)
  • Розробка фронтенд-компонента сповіщень (React/Next.js)
  • Документація з експлуатації системи
  • Технічна підтримка протягом 1 місяця

Типові тригери для DeFi сповіщень

Подія Тип сповіщення Затримка
Liquidation risk (health < 1.2) Targeted, HIGH urgency Real-time
Position liquidated Targeted Real-time
Yield harvest available Targeted Hourly
Governance proposal created Broadcast On-chain event
Voting deadline в 24h Broadcast Scheduled
Large price movement (>10%) Broadcast Price oracle

Терміни та вартість

Інтеграція Push Protocol займає від 5 до 10 робочих днів залежно від складності тригерів та фронтенду. Вартість розраховується індивідуально після аудиту вашого dApp. Замовте розробку — ми підберемо оптимальне рішення.

Отримайте безкоштовну консультацію по вашому проєкту, і ми допоможемо оцінити необхідний обсяг робіт та терміни.