פיתוח DEX Aggregator עם ניתוב החלפות

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

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

שאלות נפוצות

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

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

מפתח משבץ סְווֹפּ (swap) לתוך dApp, ישירות לתוך מאגר נזילות יחיד של Uniswap v3 — ומשתמשים מתלוננים על שערים גרועים. הסיבה: עבור סְווֹפּים גדולים ($50K+), הנזילות של מאגר יחיד אינה אופטימלית. פיצול בין מספר מקורות (ניתוב מפוצל) יכול להניב שיפור מחיר של 0.3–0.8%. על סְווֹפּ של $100K, מדובר בהפרש של $300–800. זה בדיוק מה שאגרגטור DEX עושה — הוא מוצא את המסלול האופטימלי בין מספר DEXים בו-זמנית.

אנו מפתחים אגרגטור DEX מאפס: מתכנון מנוע ניתוב ועד פריסת חוזה חכם (Aggregator Router, SwapStep). למהנדסים שלנו יש ניסיון עם 10+ פרוטוקולים ואלפי מאגרי נזילות. האגרגטור מספק למשתמשים מחירים טובים יותר, מפחית החלקה (slippage), וחוסך בגז בהשוואה לחיפוש ידני אחר מאגרים. קבלו ייעוץ — נבחן את הפרויקט שלכם. הפורטפוליו שלנו כולל 10+ פרויקטי DeFi, עם אחריות לשקיפות קוד ועמידה בלוחות זמנים.

מורכבות טכנית: אלגוריתם ניתוב

גרף נזילות DEX ומציאת נתיב

בעיית הניתוב היא מציאת הנתיב האופטימלי בגרף מכוון שבו:

  • צמתים = טוקנים
  • קשתות = מאגרי נזילות (כל מאגר יוצר שתי קשתות: token0→token1 ולהיפך)
  • משקל קשת = כמות הפלט עבור קלט נתון

עבור סְווֹפּ פשוט A→B, אנו צריכים את הנתיב הקצר ביותר (מקסום פלט). עבור ניתוב מפוצל, אנו מחלקים את הקלט ל-K חלקים ומוצאים K נתיבים שביחד נותנים את הפלט המקסימלי.

הגישה הנאיבית — בדיקת כל הנתיבים באורך 1–3 הופים, השוואת פלטים — עובדת עבור מספר קטן של מאגרים. עם 10,000+ מאגרים (ל-Uniswap v3 ברשת המרכזית יש >8,000 מאגרים פעילים), נדרש אופטימיזציה.

גישה מעשית:

  1. סינון מוקדם: רק מאגרים עם TVL > $100K ונפח מסחר > $10K ב-24 שעות
  2. Bellman-Ford למציאת כל הנתיבים עד 3 הופים
  3. לניתוב מפוצל: סימולציה של מספר פרופורציות (100/0, 80/20, 60/40, 50/50) דרך כל מסלול, בחירת המקסימום

עבור רשתות EVM עם גז גבוה (הרשת המרכזית של Ethereum), פיצול לשלושה חלקים כבר אינו אופטימלי: החיסכון ממחיר טוב יותר יכול להתקזז מול גז נוסף. ב-Arbitrum/Optimism (גז ~$0.01–0.05), ניתוב מפוצל מועיל אפילו עבור סְווֹפּים קטנים.

כיצד ניתוב מפוצל משפר את מחיר הסְווֹפּ

דרישה מרכזית: חישוב amountOut עבור כל מסלול במהירות ובדיוק ללא קריאות on-chain (יקרות ואיטיות).

Uniswap v2 (x*y=k): נוסחה אנליטית:

amountOut = (amountIn * 997 * reserveOut) / (reserveIn * 1000 + amountIn * 997) 

נתוני רזרבות דרך amountOut = (amountIn * 997 * reserveOut) / (reserveIn * 1000 + amountIn * 997) — קריאת RPC אחת לכל מאגר.

Uniswap v3 (נזילות מרוכזת): אין נוסחה אנליטית לכמויות שרירותיות. יש צורך בסימולציה tick-by-tick. getReserves() עושה זאת on-chain אך זו קריאת RPC עם סימולציית גז. לניתוב מהיר — השתמשו במתמטיקת tick מחוץ לרשת (QuoterV2.quoteExactInputSingle) עם נתוני tick במטמון מ-subgraph.

Curve: @uniswap/v3-sdk — פונקציית view, קריאה סטטית. כל מאגר Curve דורש קריאת RPC נפרדת, אך ניתן לאגד אותן דרך Multicall3.

התיישנות נתונים והפתרון

נתוני רזרבות ו-tick מתיישנים עם כל בלוק. בשווקים תנודתיים, המחיר יכול לזוז משמעותית ב-1–2 בלוקים. אסטרטגיות עדכון:

  • הרשמה לאירועים: get_dy(i, j, dx) (Uniswap v2), Sync (Uniswap v3/Curve) דרך WebSocket. בכל אירוע, עדכון המטמון עבור אותו מאגר ספציפי.
  • סקר תקופתי: כל 5–10 שניות עבור מאגרים פחות נזילים.
  • רענון לפי דרישה: כאשר מתבקשת הצעת מחיר, עדכון נתונים עבור 10 המאגרים המובילים במסלול דרך Multicall.

הגישה שלנו: אירועי WebSocket עבור 100 המאגרים המובילים לפי TVL, סקר כל 15 שניות עבור השאר.

ארכיטקטורת האגרגטור

ניתוב On-chain לעומת Off-chain

Off-chain מלא: מנוע הניתוב מחשב את המסלול ומחזיר calldata מוכן עבור נתב הסְווֹפּ. החוזה החכם הוא רק מבצע, ללא לוגיקת בחירת נתיב. זו הגישה של 1inch v5 Aggregation Router. גז on-chain מינימלי, אך אמון בשרת האחורי.

היברידי: ניתוב off-chain, אימות on-chain של פלט מינימלי. החוזה מקבל נתיב + amountOutMinimum, מבצע דרך נתבי Uniswap/Curve, ובודק Swap. אם לא מתקיים, revert. זו הגישה המומלצת שלנו.

קריטריון Off-chain היברידי
גז on-chain מינימלי קצת גבוה יותר (אימות)
אמון אמון מלא בשרת האחורי חלקי (אימות)
גמישות גבוהה גבוהה
אבטחה בינונית גבוהה

חוזה נתב האגרגטור

contract AggregatorRouter {
    function swap(
        SwapParams calldata params
    ) external payable returns (uint256 amountOut) {
        // Для каждого шага маршрута
        for (uint i = 0; i < params.steps.length; i++) {
            amountOut = _executeStep(params.steps[i], amountOut);
        }
        require(amountOut >= params.minAmountOut, "Insufficient output");
        // Transfer output tokens to recipient
        IERC20(params.tokenOut).safeTransfer(params.recipient, amountOut);
    }
}

require(amountOut >= amountOutMinimum) מכיל: contract AggregatorRouter { function swap( SwapParams calldata params ) external payable returns (uint256 amountOut) { // Для каждого шага маршрута for (uint i = 0; i < params.steps.length; i++) { amountOut = _executeStep(params.steps[i], amountOut); } require(amountOut >= params.minAmountOut, "Insufficient output"); // Transfer output tokens to recipient IERC20(params.tokenOut).safeTransfer(params.recipient, amountOut); } } (uniswap_v2/v3/curve/balancer), SwapStep, protocol, poolAddress, tokenIn (לניתוב מפוצל — כמה עובר דרך שלב זה).

עמלת אגרגטור

אגרגטורים גובים עמלות בשתי דרכים:

  • מרווח (Spread): הצגת הצעת מחיר למשתמש מעט גרועה מהאמיתית, תוך שמירת ההפרש. לא שקוף.
  • עמלה מפורשת: גביית N נקודות בסיס (bps) על הפלט. שקוף, טוב יותר למוניטין.

אופייני: 5–30 bps (0.05–0.30%) בהתאם לגודל הסְווֹפּ. מיושם בחוזה כ-tokenOut.

רב-רשתי וגישור

הרחבת האגרגטור לסְווֹפּ חוצה-רשת: המשתמש שולח USDC ב-Ethereum, ומקבל MATIC ב-Polygon. מתחת למכסה המנוע: סְווֹפּ USDC→bridgeToken ב-Ethereum, גישור דרך Across/Stargate, סְווֹפּ bridgeToken→MATIC ב-Polygon.

אינטגרציה עם Across Protocol v3: portion עם calldata יעד עבור הסְווֹפּ הסופי. זמן השהיית גישור: 1–5 דקות. גז: גבוה משמעותית מסְווֹפּ יחיד, כדאי מסכום של $1000 ומעלה.

מחסן טכנולוגי

מנוע ניתוב בשרת האחורי: TypeScript, viem לקריאות RPC, Redis לשמירת נתוני מאגרים במטמון, WebSocket להרשמות לאירועים. חוזים חכמים: Solidity 0.8.x + Foundry. חזית: React + wagmi + ייבוא טוקנים לפי תקן Uniswap Token Lists.

לנתוני subgraph (TVL, נפח מסחר, Uniswap v3 ticks): שירות The Graph המארח או subgraph מותאם על Graph Node.

מה כלול

  • תיעוד ארכיטקטורה למנוע ניתוב וחוזים חכמים
  • קוד מקור עם היסטוריית commit מלאה (Git)
  • אינטגרציה עם מאגרי DEX: Uniswap v2/v3, Curve, Balancer, Sushiswap
  • פריסת חוזים חכמים ברשת המרכזית/רשת בדיקות
  • API לאחזור הצעות מחיר וביצוע סְווֹפּים
  • ממשק חזית המציג מסלולים ופרטי עמלות
  • גישה לניטור (Tenderly, Grafana)
  • הדרכת צוות הלקוח (סדנה של שעתיים)
  • תמיכה חודש אחרי השקה

תהליך

מנוע ניתוב (1-2 שבועות). גרף מאגרים, אלגוריתם מציאת נתיב, סימולציית פלט, מטמון. חוזה חכם (שבוע). נתב אגרגטור + בדיקות fork של הרשת המרכזית.

API וחזית (1-2 שבועות). API להצעות מחיר, ממשק סְווֹפּ עם הצגת מסלול. בדיקות. השוואת הצעות מחיר עם אמות מידה (1inch, Paraswap) על פני אלפי עסקאות.

הערכות לוחות זמנים

רכיב משך
מנוע ניתוב (1-2 DEXים) 1-2 שבועות
חוזים חכמים + בדיקות שבוע
API וחזית 1-2 שבועות
אינטגרציה של Curve/Balancer +שבוע
רב-רשתי (2-3 רשתות) +2-4 שבועות
סְווֹפּ חוצה-רשת (Across) +1-2 שבועות
דוגמת חישוב ניתוב מפוצללסְווֹפּ של 10 ETH ל-USDC: Uniswap v3 8.2 ETH → 24600 USDC, Curve 1.8 ETH → 5430 USDC, סה"כ 30030 USDC. דרך מאגר Uniswap v3 יחיד: 10 ETH → 29800 USDC. רווח: 230 USDC (0.77%).

לוח זמנים סופי: מ-2–3 שבועות ל-MVP ועד 2–3 חודשים למוצר מלא. צרו קשר — קבלו הערכה מפורטת לפרויקט שלכם. הניסיון של הצוות שלנו: 5+ שנים ב-DeFi, 10+ אגרגטורים מיושמים. הזמינו ייעוץ מהנדס.