שילוב Push Protocol להתראות dApp
התראות דוא"ל ב-DeFi לא עובדות — למשתמשים אין דוא"ל, רק כתובת ארנק. בוטים של טלגרם דורשים הרשמה נפרדת ואינם מקושרים לזהות on-chain. Push Protocol (לשעבר EPNS) הוא פרוטוקול הודעות מבוזר המקושר לכתובות ארנק. הוא מאפשר ל-dApps לשלוח התראות on-chain ו-off-chain למנויים ללא דוא"ל או טלגרם. הפרוטוקול חינמי לשליחה; יצירת ערוץ דורשת החזקת מטבעות PUSH (מינימום 50 מטבעות ב-Ethereum או Polygon, כיום כ-$25–$50). בזכות הצטרפות ללא גז (מנוי מבוסס חתימה), המנוי למשתמשים אינו דורש גז, דבר קריטי לאימוץ. הצוות שלנו עם ניסיון של 10+ שנים ב-Web3 שילב את Push ביותר מ-50 פרויקטים, וחסך ללקוחות עד 70% על תשתית התראות (שמתורגם ל-$500–$2,000 לחודש בהתאם להיקף) והגדיל את מעורבות המשתמשים ב-25%. צרו קשר להערכה חינמית של הפרויקט שלכם.
הגדרה ועקרון פעולה
Push Protocol הוא שכבת הודעות ל-Web3, שבה התראות מקושרות לארנק. הוא משתמש בתקן EIP-712 להצטרפות ללא גז ושולח הודעות דרך ה-SDK שלו. ניתן למצוא מידע נוסף על הפרוטוקול ב-GitHub או בתיעוד הרשמי.
למה Push עדיף על ערוצים מסורתיים
השוואה לדוא"ל וטלגרם מראה יתרונות שאין להכחיש:
| קריטריון | דוא"ל | טלגרם | Push Protocol |
|---|---|---|---|
| קישור לארנק | לא | לא | כן, on-chain |
| ביזור | לא | לא | כן (IPFS) |
| עלות שליחה | תלוי בשירות | חינם | חינם |
| מנוי ללא גז | - | - | כן (EIP-712) |
| התראות בזמן אמת | לא | כן | כן |
| שילוב dApp | לא | דרך בוט | SDK / WebSocket |
Push מספק תקשורת ישירה עם המשתמש ללא מתווכים, ומבטיח מסירת אירועי on-chain עם זמן השהיה של פחות משתי שניות.
יישום הצטרפות ללא גז
הצטרפות ללא גז (מנוי מבוסס חתימה) מאפשרת למשתמשים להירשם ללא שליחת עסקת on-chain, באמצעות חתימת EIP-712. זה מוריד את חסם הכניסה ומגדיל את המרת המנויים ב-40%. ה-SDK של Push מספק שיטות לבדיקת מנוי ומנוי מבוסס חתימה. אנו ממליצים להשתמש בהצטרפות ללא גז כדי להימנע מדרישת תשלום גז מהמשתמש.
איך ליישם התראות Push ב-dApp?
-
יצירת ערוץ. דרך app.push.org, החזיקו מטבעות PUSH (ב-Ethereum או Polygon). ציינו שם, תיאור, אייקון. הגדירו את הערוץ למותג שלכם.
-
שליחת התראות. השתמשו ב-
@pushprotocol/restapiמהשרת. דוגמה להתראה ממוקדת:
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',
})
} - מאזין on-chain לטריגרים בזמן אמת. הירשמו לאירועי פירוק, החלפה, הצבעה:
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`
)
}
}
}) - הצגה בפרונטאנד. השתמשו ב-React hooks כדי לשלוף התראות ועדכונים בזמן אמת דרך WebSocket:
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])
} בדיקת מנוי והצטרפות ללא גז
לפני שליחה, בדקו אם המשתמש מנוי:
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()
)
}להצטרפות ללא גז, השתמשו ב-SDK לחתימה מואצלת — מנוי ללא גז (מנוי מבוסס חתימה). המשתמש חותם על הודעה, ואנו שולחים את החתימה ל-Push Protocol.
טעויות נפוצות: ודאו שהחותם הוא בעל הערוץ, השתמשו ב-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', }) } לבדיקות. לזמן אמת, השתמשו ב-WebSocket; מינימום פולסינג הוא 10–30 שניות.
מה כוללת עבודת השילוב?
אנו מספקים פתרון מלא:
- ביקורת על הארכיטקטורה הנוכחית והגדרת הבעיה
- יצירה והגדרה של ערוץ Push
- פיתוח שירות שליחת התראות בשרת (TypeScript/Node.js)
- שילוב מאזיני on-chain לחוזים החכמים שלכם (EVM, Solana)
- פיתוח רכיב התראות בפרונטאנד (React/Next.js)
- תיעוד תפעולי
- תמיכה טכנית לחודש אחד
- אופטימיזציית ביצועים: מעל 100,000 התראות שנשלחות חודשית עם זמן תגובה מתחת לשתי שניות
טריגרים אופייניים להתראות DeFi
| אירוע | סוג התראה | זמן השהיה |
|---|---|---|
| סיכון פירוק (health < 1.2) | ממוקדת, דחיפות HIGH | זמן אמת |
| פוזיציה פורקה | ממוקדת | זמן אמת |
| קציר תשואה זמין | ממוקדת | שעתי |
| הצעת ממשל נוצרה | שידור רחב | אירוע on-chain |
| מועד הצבעה בעוד 24 שעות | שידור רחב | מתוזמן |
| תנועת מחיר גדולה (>10%) | שידור רחב | אורקל מחיר |
לוח זמנים ועלות
שילוב Push אורך בין 5 ל-10 ימי עסקים בהתאם למורכבות הטריגרים והפרונטאנד. האינטגרציה הבסיסית שלנו במחיר קבוע מתחילה ב-$3,000, עם חיסכון בתשתית עד $2,000 לחודש. העלות מחושבת באופן אישי לאחר ביקורת על ה-dApp שלכם. הזמינו פיתוח — נבחר את הפתרון האופטימלי.
קבלו ייעוץ חינמי לפרויקט שלכם, ונעזור להעריך את ההיקף ולוח הזמנים הנדרשים. השלמנו יותר מ-50 שילובים, והפחתנו את זמן הפיתוח ב-40% בממוצע.







