פיתוח מאגרי נזילות מרוכזים: תובנות מפתח
צוות משיק DEX ונתקל בחוסר היעילות של מאגרים קלאסיים: עם x·y=k, 80% מהון ה-LP אינו מנוצל. מעבר לנזילות מרוכזת הוא הדרך היחידה למשוך LPs מקצועיים, אך היישום קשה בסדרי גודל. בנינו מאגרים כאלה עבור מספר פרוטוקולים—מארכיטקטורה ועד פריסה ברשת הראשית. להלן הפרטים הטכניים שכל מהנדס נתקל בהם וכיצד אנו פותרים אותם. עם ניסיון של למעלה מ-5 שנים ב-DeFi, אנו מבטיחים פתרונות חזקים.
כיצד מאגרי נזילות מרוכזים פותרים יעילות הון
נוסחת המוצר הקבוע הקלאסית (x·y=k) משתמשת רק ב-5–20% מהנזילות בטווח המחירים האמיתי. ה-80% האחרים הם הון קפוא. נזילות מרוכזת מאפשרת ל-LPs לבחור טווח מחירים צר, ומגבירה את יעילות ההון פי 20–40 עבור פיזור של ±10%. ארכיטקטונית, זה מושג על ידי פיצול העקומה למקטעים—ticks—כל אחד עם נוסחה מקומית משלו. גישה זו יעילה בהרבה מבחינת הון מאשר מאגרי מוצר קבוע קלאסיים: LPs מרוויחים פי 20–40 יותר עמלות ליחידת הון מושקע באותה תנודתיות.
מדוע נזילות מרוכזת דורשת מתמטיקה מורכבת
חישובי Tick וחשבון נקודה קבועה Q64.96
Uniswap V3 מאחסן מחירים כ-sqrtPriceX96—השורש הריבועי של המחיר ב-Q64.96. הכפלת שני מספרי Q64.96 נותנת Q128.192, הנכנסת ב-uint256. כל סטייה גורמת לגלישה או לאובדן דיוק. הפונקציה TickMath.getSqrtRatioAtTick(int24 tick) ממירה אינדקס tick ל-sqrtPrice באמצעות טבלת קבועים מחושבים מראש עם הזזות סיביות. יישום נאיבי ללא שחזור מדויק של קבועים אלה צובר שגיאות ב-ticks גבוליים (MIN_TICK = -887272, MAX_TICK = 887272).
מקרה מעשי: במהלך בדיקות fuzz עם Foundry באמצעות פרמטרים int24, תפסנו פער של 1 wei ב-ticks קיצוניים—זה גרם ל-underflow של uint256 בעת שריפת נזילות. ברשת הראשית, זה היה נועל משיכות LP, ועולה ל-LPs 200,000 דולר בעמלות. ביקורת קוד יכולה למנוע הפסדים כאלה.
צבירת עמלות באמצעות מצברים גלובליים
מנגנון גביית העמלות משתמש במצברים גלובליים feeGrowthGlobal0X128 ו-feeGrowthGlobal1X128, בתוספת ערכים לכל tick feeGrowthOutside. הנוסחה לחישוב עמלות בתוך טווח: feeGrowthInside = feeGrowthGlobal - feeGrowthBelow(tickLower) - feeGrowthAbove(tickUpper). שגיאת off-by-one ב-currentTick >= tickLower לעומת currentTick > tickLower נותנת עמלות שגויות ב-ticks גבוליים. זו שגיאה שקטה—LPs מקבלים מעט פחות או יותר עמלות, הפרוטוקול צובר חוב או עודף. ביקורת חיצונית בעלות 30,000–50,000 דולר מונעת הפסדים של מאות אלפי דולרים.
Reentrancy באמצעות קריאה חוזרת של swap
פונקציית ה-swap משתמשת בתבנית קריאה חוזרת: חוזה המאגר שולח תחילה אסימונים, ואז קורא ל-uniswapV3SwapCallback על msg.sender. ברגע הקריאה החוזרת, מצב המאגר כבר שונה אך העסקה לא הושלמה. הגנה: דגל נעילה באחסון, כמו slot0.unlocked ב-Uniswap V3.
כיצד אנו בונים מאגרי נזילות מרוכזים
אנו מפתחים על בסיס Uniswap V3 Core כהתייחסות, אך איננו עושים fork ישיר—רישיון BSL 1.1 הגביל בעבר שימוש מסחרי (כעת פג, אך מבקרי קוד עדיין שואלים). אנו משתמשים בארכיטקטורת ה-hooks של Uniswap V4 להרחבות אם נדרשת לוגיקת עמלות מותאמת או הזמנות טווח. מחסן טכנולוגי: Foundry לכל הפיתוח והבדיקות, Hardhat לסקריפטי פריסה עם hardhat-deploy. ספריות מתמטיקה—הועתקו מ-@uniswap/v3-core/contracts/libraries: FullMath, TickMath, SqrtPriceMath, LiquidityMath. בדיקות כוללות fuzzing מבוסס מאפיינים עם בדיקות invariant ב-Foundry:
- Invariant 1: סך הנזילות בטווחים פעילים תמיד >= virtualReserves
- Invariant 2: לאחר כל swap עם אפס החלקה, sqrtPrice נשאר בטווח שצוין
- Invariant 3: עמלות שנגבו אינן עולות על feeGrowth * liquidity המצטבר
שימוש ב-Foundry ל-fuzzing נותן פי 10 יותר תרחישים אקראיים מאשר בדיקות Hardhat: 100k+ וריאציות פרמטרים של swaps ונזילות בשעה.
אופטימיזציה של Tick bitmap
מציאת ה-tick הבא מאותחל במהלך פעולות cross-tick היא נתיב חם. Uniswap V3 משתמש ב-bitmap: 256 ticks ארוזים ב-uint256 אחד. חיפוש הביט הבא מוגדר דרך BitMath.mostSignificantBit הוא O(1) במקום O(n) על כל ה-ticks. יישום bitmap עבור tickSpacing > 1 דורש מיפוי מ-tickIndex ל-bitPosition: compressed = tick / tickSpacing, wordPos = compressed >> 8, bitPos = uint8(compressed). שגיאה בהזזות נותנת חיפוש tick שגוי ומדלגת על לוגיקת cross-tick במהלך swaps על פני טווחים מרובים.
מה כלול בעבודה
המאגר עצמו הוא רק הליבה. עבור מוצר מלא, אתה מקבל:
- ארכיטקטורת חוזים חכמים (מאגר ליבה, מנהל עמדות, נתב, quoter)
- סקריפטי פריסה עם multisig (Gnosis Safe)
- כיסוי בדיקות מקיף (fuzz + fork tests) ובדיקות invariant
- תיעוד טכני והפניות API
- תמיכה לאחר פריסה למשך 3 חודשים
- הדרכה לצוות שלך על אינטראקציה עם החוזה
בנוסף, אתה מקבל NonfungiblePositionManager (או מקבילה) לניהול עמדות LP כ-NFTs (ERC-721), SwapRouter לאגרגציית מסלולים, וחוזה quoter לסימולציית swap מחוץ לרשת ללא גז. אינטגרציה עם Chainlink Price Feeds כבדיקת שפיות: אם מחיר המאגר חורג מהאורקל ביותר מ-X%, מפסק חשמלי עוצר swaps. זה מגן מפני מניפולציית אורקל באמצעות flash loans—וקטור ששימש בהתקפות על פרוטוקולים הבנויים על מחירי AMM.
חזית: אנו משתמשים ב-Uniswap SDK v3 + wagmi + viem. ה-SDK מפשט את חישובי ה-tick ומציאת מסלולים, אך עבור מאגרים מותאמים יש להרחיב אותו—חבר מפעלי מאגרים מותאמים ודרוס computePoolAddress.
תהליך
- אנליטיקה (3-5 ימים). הגדר פרמטרים: שכבות עמלה (0.01% / 0.05% / 0.3% / 1%), tickSpacing, צורך ב-hooks מותאמים (בסגנון V4), פריסה רב-רשתית (Ethereum + Arbitrum + Optimism אופייני). קבע אם המאגר צריך להיות ניתן לשדרוג או בלתי ניתן לשינוי עם פונקציות ניהול רק בפריפריה.
- עיצוב (5-7 ימים). פריסת אחסון, ממשקים, ספריות מתמטיקה. אימות פורמלי של invariants על נייר לפני קוד.
- פיתוח (4-8 שבועות). מאגר ליבה → ספריות מתמטיקה → מנהל עמדות → נתב → quoter. הסדר חשוב: כל שכבה נבדקת באופן עצמאי.
- ביקורת. נזילות מרוכזת היא אחת ממחלקות החוזים המורכבות ביותר ב-DeFi. ביקורת חיצונית היא חובה לכל TVL. ביקורת פנימית באמצעות Slither + Echidna תופסת בעיות נמוכות/בינוניות לפני שליחה החוצה. אנו משתפים פעולה עם חברות ביקורת מוסמכות.
- פריסה. Foundry forge script + Gnosis Safe multisig. פריסה ל-Sepolia/Arbitrum Goerli, בדיקת עומס, ואז רשת ראשית.
ציר זמן שלבים
| שלב | משך |
|---|---|
| אנליטיקה | 3–5 ימים |
| עיצוב | 5–7 ימים |
| פיתוח | 4–8 שבועות |
| ביקורת פנימית | 1–2 שבועות |
| ביקורת חיצונית | 3–6 שבועות |
| פריסה | שבוע אחד |
ציר זמן ועלות
עם ניסיון של למעלה מ-5 שנים בפיתוח DeFi ו-10+ פרויקטים מוצלחים, אנו מספקים בזמן. MVP עם שכבת עמלה אחת ופריפריה בסיסית: 6–8 שבועות. DEX מלא עם שכבות מרובות, hooks מותאמים ואגרגטור מסלולים: 2–3 חודשים. ביקורת חיצונית מוסיפה 3–6 שבועות. העלות מחושבת באופן אישי לאחר אנליטיקה. עבור פרויקט טיפוסי, החיסכון בעמלות LP ממניעת ביקורת מסתכם בעשרות אלפי דולרים—underflow בודד שהוחמץ ב-tick גבולי יכול לעלות 200,000 דולר. צור קשר להערכת פרויקט.
הזמן פיתוח מאגרי נזילות מרוכזים
רשימת בדיקה קצרה: הגדר שכבות עמלה, tickSpacing, מספר נכסים, צורך ב-hooks. צור קשר לייעוץ—ננתח את הדרישות שלך ונציע ארכיטקטורה אופטימלית. הצוות המוסמך שלנו סיפק למעלה מ-10 פרויקטים של מאגרי נזילות מרוכזים ל-DeFi. קבל ייעוץ מובטח היום.







