שילוב Superfluid: הטמעת תשלומי סטרימינג ב-dApp

תשלומי סטרימינג משנים את פני המנויים והסילוקים ב-DeFi: יתרות מתעדכנות בזמן אמת, ומשתמשים אינם נדרשים לבצע עשרות עסקאות. אנו משלבים את Superfluid ב-dApp שלך—מסטרימים בסיסיים ועד תרחישים מורכבים עם בקרת גישה וניטור. הצוות שלנו מספק את הפרויקט במפתח מלא, תוך הבטחת פעילות אמינה ותמיכה שוטפת.

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1481
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1336
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1034
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1293
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    738
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1032

תארו לעצמכם: ה-dApp שלכם מקבל מנויים, וכל שנייה היתרה של המשתמש משתנה ללא עסקאות נוספות. Superfluid מאפשר זאת, ופותח רמת UX חדשה לשירותי DeFi, מענקים וזרמי שכר. אנו משלבים באופן מקצועי תשלומי סטרימינג באפליקציה שלכם — ממשפך פשוט ועד מערכת מורכבת עם ACL וניטור פירוק נזילות. בואו נפרק איך זה עובד מתחת למכסה המנוע ולמה Superfluid מפחית את מספר העסקאות פי 1000 בהשוואה למנויים מסורתיים. בניסיון שלנו, היה פרויקט שבו האינטגרציה קיצצה את עלויות הגז ב-40% בהשוואה לגישת עסקאות מתוזמנות.

למה תשלומי סטרימינג עדיפים על הגישה המסורתית?

הגישה המסורתית לתשלומים תקופתיים ב-Web3 — approve + transferFrom בלוח זמנים, או תשלום מראש למספר תקופות. שתי האפשרויות דורשות או השתתפות פעילה של המשתמש או אמון בחוזה להחזיק סכומים גדולים מראש. Superfluid פותר זאת אחרת: כסף זורם בכל שנייה, היתרה מתעדכנת בזמן אמת ללא עסקאות נפרדות. עבור dApps של מנויים, סטרימינג שכר או חלוקת מענקים — זה הבדל משמעותי ב-UX.

היבט גישה מסורתית Superfluid
תדירות עסקאות כל תשלום = עסקה אחת עסקה אחת לפתיחה/סגירת סטרים
נעילת כספים סכום מלא לתקופה רק מאגר כושר פירעון (4 שעות)
גמישות דורש שינויים בחוזה התאמה מיידית של flowRate
סיכונים גלישת allowance, עליות גז פירוק נזילות אם אין מספיק כספים

Superfluid מפחית את מספר העסקאות פי 1000 בהשוואה למנויים מסורתיים, ואת עלויות הגז פי 3-5 ליחידת זמן.

איך Superfluid מעדכן יתרה ללא עסקאות?

Super Tokens וזמן אמת

Superfluid לא עובד עם ERC-20 רגיל. אתם צריכים Super Token — שכבת-על על ERC-20 דרך הפונקציה upgrade(). משתמש מפקיד 100 USDC → מקבל 100 USDCx (Super Token). USDCx הוא ERC-20 שיכול לסטרים.

balanceOf(address account) ב-Super Token מחזיר את הערך האמיתי תוך התחשבות בכל הסטרימים הפעילים: staticBalance + netFlowRate * (block.timestamp - lastUpdated). זו פונקציית view שמסתכלת לעתיד ולעבר בו-זמנית. אין רשומות on-chain בכל שנייה — רק עדכונים כשסטרים נפתח/נסגר/משתנה.

תוצאה מעשית: היתרה משתנה כל שנייה ללא עסקאות. זה אומר ש-transfer(recipient, amount) עם סכום של "יתרה מלאה" מסוכן: בין החישוב שלכם לביצוע העסקה, עבר זמן, והיתרה בפועל ירדה.

CFAv1 (הסכם זרימה קבועה)

הכלי המרכזי הוא IConstantFlowAgreementV1. פתיחת סטרים:

ISuperfluid(host).callAgreement(
    cfa,
    abi.encodeWithSelector(
        cfa.createFlow.selector,
        token, // USDCx
        receiver, // адрес получателя
        flowRate, // wei per second (int96)
        new bytes(0) // userData
    ),
    "0x"
);

ISuperfluid(host).callAgreement( cfa, abi.encodeWithSelector( cfa.createFlow.selector, token, // USDCx receiver, // адрес получателя flowRate, // wei per second (int96) new bytes(0) // userData ), "0x" ); הוא flowRate, לא int96. ערך שלילי אומר סטרים נכנס. לחישוב flowRate: uint256 — כמות wei של USDCx בשנייה.

ניואנס חשוב: monthlyAmount * 1e18 / (30 * 24 * 3600) מוגבל לכ-39.6 * 10^27 wei/שנייה. לרוב מקרי השימוש זה בטוח, אבל כשעובדים עם טוקנים עם עשרונים לא סטנדרטיים, בדקו גלישה.

פירוק נזילות ומאגר כושר פירעון

Superfluid מגן על מקבלי התשלומים ממצב שבו לשולח נגמרים הכספים דרך מנגנון פירוק נזילות. בפתיחת סטרים, השולח מפקיד מאגר כושר פירעון — בדרך כלל 4 שעות של סטרים. אם היתרה יורדת לאפס אבל הסטרים לא נסגר, כל אחד יכול לקרוא לפירוק נזילות דרך int96, ולקבל חלק מהמאגר כפרס.

זה משנה את דרישות ה-UX: באינטגרציה ל-dApp, צריך להזהיר את המשתמש על היתרה המינימלית הנדרשת. אם למשתמש יש USDCx ל-3 שעות של סטרים, הוא לא יכול לפתוח סטרים חדש (מאגר = 4 שעות). זו סיבה נפוצה לשגיאות deleteFlow מבלבלות.

אילו סיכונים עולים באינטגרציה של תשלומי סטרימינג?

הסיכונים המרכזיים הם חישוב שגוי של המאגר, הזנחת פירוקי נזילות, וחוסר ניטור אירועים. לדוגמה, dApp מנויים ללא ניטור INSUFFICIENT_BALANCE מפירוקי נזילות — משתמשים המשיכו לקבל תוכן אחרי שהמנוי נגמר כי הפרונטאנד לא ידע שהסטרים פורק. פתרון: מאזין אירועים + בדיקת סטטוס דרך FlowDeleted. סיכון נוסף: שגיאה בחישוב flowRate בגלל הבדלים בעשרונים: ל-USDC יש 6, ל-USDCx יש 18. אנחנו תמיד בודקים חוזים על fork של mainnet לפני פריסה.

איך להבטיח פעולה יציבה של Superfluid?

Superfluid SDK

import { Framework } from "@superfluid-finance/sdk-core";
import { ethers } from "ethers";

const sf = await Framework.create({
  chainId: 137, // Polygon
  provider,
});

const usdcx = await sf.loadSuperToken("USDCx");

const createFlowOperation = usdcx.createFlow({
  sender: userAddress,
  receiver: recipientAddress,
  flowRate: "385802469135802", // ~1000 USDC/month
});

const tx = await createFlowOperation.exec(signer);

ה-SDK מפשט את קריאות cfa.getFlow(). לקוד פרודקשן — השתמשו ב-import { Framework } from "@superfluid-finance/sdk-core"; import { ethers } from "ethers"; const sf = await Framework.create({ chainId: 137, // Polygon provider, }); const usdcx = await sf.loadSuperToken("USDCx"); const createFlowOperation = usdcx.createFlow({ sender: userAddress, receiver: recipientAddress, flowRate: "385802469135802", // ~1000 USDC/month }); const tx = await createFlowOperation.exec(signer); כדי לשלב מספר פעולות בעסקה אחת: callAgreement בגז אחד.

טיפול באירועי פרוטוקול

אירועים מרכזיים לניטור:

  • batchCall — סטרים חדש
  • upgrade + createFlow — שינוי קצב
  • FlowCreated(token, sender, receiver, flowRate, totalSenderFlowRate, totalReceiverFlowRate) — סגירת סטרים (כולל פירוקי נזילות)

לעדכוני פרונטאנד בזמן אמת: מנוי WebSocket דרך wagmi FlowUpdated(...) או מנוי The Graph (אם subgraph של Superfluid פרוס לרשת שלכם). ל-Superfluid יש subgraph רשמי ב-mainnet, Polygon, Optimism, Arbitrum, BNB Chain.

מקרה אמיתי: dApp מנויים ללא ניטור FlowDeleted(...) מפירוקי נזילות — משתמשים המשיכו לקבל תוכן אחרי שהמנוי נגמר כי הפרונטאנד לא ידע שהסטרים פורק. פתרון: מאזין אירועים + בדיקת סטטוס דרך watchContractEvent.

עבודה עם userData

FlowDeleted מקבל cfa.getFlow() — נתונים שרירותיים שנפלטים באירוע. אנחנו משתמשים בזה עבור:

  • קישור סטרים למזהה מנוי
  • העברת קוד הפניה
  • זיהוי תוכנית תעריף
bytes memory userData = abi.encode(subscriptionId, planId); 

בצד מאזין האירועים — פענוח:

const [subscriptionId, planId] = ethers.utils.defaultAbiCoder.decode(
  ["uint256", "uint256"],
  event.userData
);

ACL (רשימת בקרת גישה) לאוטומציה

אם אתם צריכים שחוזה חכם ינהל סטרימים בשם המשתמש (לדוגמה, עדכון אוטומטי של flowRate בשינוי תוכנית), השתמשו ב-ACL של Superfluid:

// Пользователь даёт разрешение контракту
cfa.authorizeFlowOperatorWithFullControl(token, operatorContract, "0x");

זה מקביל ל-createFlow של ERC-20, אבל לניהול סטרימים. המפעיל יכול ליצור, לשנות ולסגור סטרימים בשם המשתמש במסגרת ההרשאות שניתנו.

רשתות וטוקנים נתמכים

רשת USDCx ETHx נזילות מקומית
Ethereum mainnet כן כן נמוכה (גז יקר)
Polygon כן כן גבוהה
Optimism כן כן בינונית
Arbitrum One כן כן בינונית
BNB Chain כן בינונית

לטוקנים מותאמים אישית: פרסו Pure Super Token (ללא wrapper, super token מקורי) דרך SuperTokenFactory. משמש למטבעות פנים-אפליקטיביים שבהם אין צורך ב-ERC-20 בסיסי.

מה כלול בעבודה

אנחנו מספקים מחזור אינטגרציה מלא:

  • ניתוח מקרי שימוש ובחירת רשת
  • פיתוח חוזה חכם (במידת הצורך)
  • אינטגרציית Superfluid SDK בפרונטאנד
  • הגדרת מאזיני אירועים וניטור פירוקי נזילות
  • בדיקות על testnet ובדיקות fork (Foundry)
  • תיעוד API לפרונטאנד והוראות פריסה
  • העברת קוד מקור וגישה
  • אחריות לפעולה יציבה למשך 30 יום לאחר המסירה

תהליך העבודה

אנליטיקה (0.5-1 יום). קביעת מקרה שימוש: מנויים, שכר, מענקים, סטרימינג תגמולים. בחירת רשת. האם צריך ACL לניהול סטרימים אוטומטי.

פיתוח (2-4 ימים). חוזה חכם (אם צריך לוגיקה מותאמת) + אינטגרציית SDK בפרונטאנד + מאזיני אירועים + ניטור פירוקי נזילות.

בדיקות. ל-Superfluid יש testnets: Sepolia, Mumbai (הוצא משימוש). בדיקות fork עם מצב mainnet דרך Foundry ללוגיקה עסקית מורכבת.

הערכות זמן

אינטגרציה בסיסית (יצירה/ניהול סטרימים בפרונטאנד) ללא חוזה חכם מותאם — 2-3 ימים. מערכת מנויים מלאה עם חוזה מותאם, ACL וניטור פירוקי נזילות — 4-7 ימים.

העלות מחושבת באופן אישי לאחר ניתוח הלוגיקה העסקית. אנחנו מעריכים את הפרויקט שלכם ביום עסקים אחד — צרו קשר לייעוץ. למהנדסים שלנו יש 5+ שנות ניסיון בפיתוח web והם סיפקו 30+ פרויקטי Web3.

Superfluid SDK