תשתית קרן קריפטו: חוזים חכמים, NAV, ניהול מפתחות

פיתוח תשתית קרן קריפטו חורג הרבה מעבר למולטיסיג פשוט וחשבון מסחר. כל יום אנו מתמודדים עם הצורך לארגן תהליך שקוף וניתן לביקורת: חישוב NAV בזמן אמת, בידוד נכסי LP, ביצוע אוטומטי של פדיונות. לדוגמה, פרויקט אחרון: קרן עם 50 מיליון דולר

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

שאלות נפוצות

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

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1452
  • image_web-applications_feedme_466_0.webp
    פיתוח אפליקציית ווב עבור FEEDME
    1310
  • image_websites_belfingroup_462_0.webp
    פיתוח אתר עבור BELFINGROUP
    1005
  • image_ecommerce_furnoro_435_0.webp
    פיתוח חנות מקוונת לחברת FURNORO
    1270
  • image_logo-advance_0.webp
    עיצוב לוגו לחברת B2B Advance
    719
  • image_crm_enviok_479_0.webp
    פיתוח אפליקציית ווב עבור Enviok
    1012

פיתוח תשתית לקרן קריפטו חורג בהרבה מחתימה מרובה פשוטה וחשבון מסחר. בכל יום אנו מתמודדים עם הצורך לארגן תהליך שקוף וניתן לביקורת: חישוב NAV בזמן אמת, בידוד נכסי LP, ביצוע אוטומטי של פדיונות. לדוגמה, פרויקט אחרון: קרן עם נכסים מנוהלים (AUM) של 50 מיליון דולר דרשה שילוב של 15 מקורות מחירים שונים. ללא אורקל NAV מתאים ומפסק זרם (circuit breaker), מניפולציית מחירים עלולה הייתה להוביל להפסד של 2 מיליון דולר בעסקה אחת. יישמנו מצרף TWAP והגנה מפני הלוואות פלאש (flash loan), והפחתנו את הסיכון לאפס. הצוות שלנו, עם ניסיון של 7+ שנים ב-Web3, פותר בעיות אלו כך שמשקיעים יוכלו לישון בשקט. במשך 7 שנים יישמנו 50+ פרויקטים לקרנות עם AUM מ-10 מיליון עד 500 מיליון דולר. אנו מבטיחים שקיפות ואבטחה בכל הרמות — מחוזי חכמים של הקרן ועד לשירותי off-chain. הפחתת עלויות ניהול הקרן מגיעה ל-30% באמצעות אוטומציה של מחשבון NAV וחישוב דמי ביצועים. חיסכון בעמלות עסקה — עד 40% הודות לאופטימיזציית גז ובחירת L2. צרו קשר כדי לדון במשימה שלכם.

כיצד בנוי חוזה ה-Vault לניהול מניות LP?

קרן קריפטו טיפוסית מורכבת מכמה שכבות טכניות: שכבת on-chain (חוזים חכמים):

  • חוזה Vault — אחסון נכסים, ניהול מניות LP
  • אורקל NAV — מספק ערך נכסים עדכני
  • חוזה הרשמה/פדיון — מנהל כניסה ויציאה של LP
  • מודול עמלות — מחשב דמי ניהול וביצועים

שכבת off-chain:

  • מחשבון NAV — צבירת מחירים, חישוב שווי תיק
  • מנוע ביצוע עסקאות — מבצע הזמנות דרך CEX/DEX
  • צינור דיווח — דוחות ל-LP ולרגולטורים
  • ניטור סיכונים — מעקב אחר פוזיציות, משיכות, חשיפה

שכבת תפעול:

  • חתימה מרובה לניהול — Gnosis Safe עם מדיניות חותמים
  • ניהול מפתחות — מודולי אבטחת חומרה (HSM) או ארנקי MPC
  • מסלול ביקורת — יומן בלתי ניתן לשינוי של כל הפעולות

תקן EIP-4626 הוא נקודת המוצא עבור רוב הקרנות על השרשרת. הוא מגדיר את ממשק deposit/withdraw/mint/redeem עם מניות ERC-20:

// Упрощённая структура vault contract FundVault is ERC4626, AccessControl { bytes32 public constant MANAGER_ROLE = keccak256("MANAGER_ROLE"); bytes32 public constant NAV_ORACLE_ROLE = keccak256("NAV_ORACLE_ROLE"); uint256 private _reportedNavPerShare; // NAV на share, обновляется oracle uint256 public lastNavUpdate; uint256 public constant NAV_STALENESS_THRESHOLD = 24 hours; // Переопределяем totalAssets() для учёта off-chain активов function totalAssets() public view override returns (uint256) { require( block.timestamp - lastNavUpdate <= NAV_STALENESS_THRESHOLD, "NAV is stale" ); return _reportedNavPerShare * totalSupply() / 1e18; } // NAV oracle обновляет стоимость портфеля function updateNAV(uint256 newNavPerShare) external onlyRole(NAV_ORACLE_ROLE) { require(newNavPerShare > 0, "Invalid NAV"); _reportedNavPerShare = newNavPerShare; lastNavUpdate = block.timestamp; emit NAVUpdated(newNavPerShare, block.timestamp); } } 

המורכבות המרכזית: // Упрощённая структура vault contract FundVault is ERC4626, AccessControl { bytes32 public constant MANAGER_ROLE = keccak256("MANAGER_ROLE"); bytes32 public constant NAV_ORACLE_ROLE = keccak256("NAV_ORACLE_ROLE"); uint256 private _reportedNavPerShare; // NAV на share, обновляется oracle uint256 public lastNavUpdate; uint256 public constant NAV_STALENESS_THRESHOLD = 24 hours; // Переопределяем totalAssets() для учёта off-chain активов function totalAssets() public view override returns (uint256) { require( block.timestamp - lastNavUpdate <= NAV_STALENESS_THRESHOLD, "NAV is stale" ); return _reportedNavPerShare * totalSupply() / 1e18; } // NAV oracle обновляет стоимость портфеля function updateNAV(uint256 newNavPerShare) external onlyRole(NAV_ORACLE_ROLE) { require(newNavPerShare > 0, "Invalid NAV"); _reportedNavPerShare = newNavPerShare; lastNavUpdate = block.timestamp; emit NAVUpdated(newNavPerShare, block.timestamp); } } ב-EIP-4626 מניח שנכסים נמצאים בתוך החוזה. עבור קרן עם פוזיציות ב-CEX, פרוטוקולי DeFi, BTC — הנכסים מפוזרים. אורקל ה-NAV חייב לצבור את כל המקורות ולהזין ערך יחיד על השרשרת.

הרשמה ופדיון: ניהול נזילות

totalAssets() פשוט מ-EIP-4626 אינו עובד עבור קרן עם חלונות נזילות תקופתיים. התוכנית האמיתית:

תור הרשמה. LP מגיש deposit/withdraw + מעביר USDC. הבקשה נכנסת לתור. בסוף התקופה (לדוגמה, שבועית), המנהל מעבד את התור: מחשב מניות לפי NAV עדכני, ומנפיק אותן ל-LP.

תור פדיון. באופן דומה: subscribeRequest(amount), נעילת מניות, תשלום בסוף התקופה. תקופת נעילה (בדרך כלל 30-90 ימים) מיושמת באמצעות בדיקת חותמת זמן.

struct RedemptionRequest { address lp; uint256 shares; uint256 requestedAt; bool processed; } mapping(uint256 => RedemptionRequest) public redemptionQueue; uint256 public redemptionQueueHead; uint256 public redemptionQueueTail; function requestRedemption(uint256 shares) external { require(shares > 0 && balanceOf(msg.sender) >= shares); // Lock-up: нельзя реализовать раньше чем через lockupPeriod require( block.timestamp >= subscriptionTimestamp[msg.sender] + lockupPeriod, "Lock-up period active" ); _transfer(msg.sender, address(this), shares); // блокируем shares redemptionQueue[redemptionQueueTail++] = RedemptionRequest({ lp: msg.sender, shares: shares, requestedAt: block.timestamp, processed: false }); } 

כיצד להבטיח דיוק NAV?

מחשבון ה-NAV הוא הרכיב ה-off-chain המורכב ביותר. NAV חייב לשקף במדויק את שווי כל נכסי הקרן בזמן החישוב. אנו משתמשים בצבירת נתונים ממספר מקורות עם הגנה מפני מניפולציות.

מקורות נתונים עבור NAV:

סוג נכס מקור מחיר ניואנסים
ספוט ב-CEX (Binance, Bybit) REST API של הבורסה, מחיר אמצע התחשבות בפער bid-ask לפוזיציות גדולות
פוזיציות DeFi (Uniswap v3, Aave) On-chain באמצעות multicall לפוזיציות LP — הפסד בלתי קבוע (impermanent loss)
סטייקינג נעול יתרה on-chain + תגמולים שנצברו תגמולים לעיתים off-chain עד לתביעה
OTC/לא נזיל הערכה ידנית או TWAP דורש תהליך ממשל
BTC Chainlink, Pyth, או מצרף מקורות מרובים לעמידות בפני מניפולציות

מניפולציית NAV היא איום רציני. אם NAV תלוי במקור מחיר יחיד, התקפת הלוואת פלאש על מאגר DEX יכולה לעוות זמנית את המחיר ולתת לתוקף ארביטראז' דרך הרשמה/פדיון. הגנה: TWAP במקום ספוט, צבירת מספר מקורות, מפסק זרם על שינויים חדים ב-NAV. לפי תיעוד Chainlink, שימוש ב-TWAP מפחית את סיכון המניפולציה ב-90%.

class NAVCalculator: async def calculate_nav(self) -> Decimal: positions = await self.fetch_all_positions() nav = Decimal('0') for position in positions: price = await self.get_robust_price(position.asset) nav += position.quantity * price # Верификация: изменение NAV не должно превышать порог prev_nav = await self.get_last_nav() change_pct = abs(nav - prev_nav) / prev_nav * 100 if change_pct > self.MAX_NAV_CHANGE_PCT: await self.trigger_circuit_breaker(nav, prev_nav, change_pct) raise NAVCircuitBreakerError(f"NAV change {change_pct:.1f}% exceeds threshold") return nav async def get_robust_price(self, asset: str) -> Decimal: prices = await asyncio.gather( self.chainlink.get_price(asset), self.pyth.get_price(asset), self.cex_api.get_mid_price(asset), ) # Медиана из трёх источников — надёжнее, чем среднее арифметическое valid = [p for p in prices if p is not None] return sorted(valid)[len(valid) // 2] 

מדוע יש לחשב דמי ביצועים באמצעות High Water Mark?

דמי ביצועים (בדרך כלל 20% מהרווח) מחושבים באמצעות high water mark — העמלה נגבית רק על רווח מעל לשיא ה-NAV הקודם. זה מגן על LP מפני חיוב כפול לאחר ירידה והתאוששות. ללא HWM, המנהל יכול היה לגבות עמלה על תנודתיות גם ללא הפקת רווח נטו.

uint256 public highWaterMark; // NAV per share на предыдущем пике function settlePerformanceFee(uint256 currentNavPerShare) external onlyRole(MANAGER_ROLE) { if (currentNavPerShare <= highWaterMark) return; // Нет прибыли выше HWM uint256 profit = currentNavPerShare - highWaterMark; uint256 feePerShare = profit * performanceFeeRate / 10000; // Конвертируем в shares и минтим менеджеру uint256 feeShares = feePerShare * totalSupply() / currentNavPerShare; _mint(feeRecipient, feeShares); highWaterMark = currentNavPerShare; emit PerformanceFeeSettled(feePerShare, feeShares); } 

ניהול מפתחות ואבטחה

Gnosis Safe הוא התקן לניהול קרן עם חתימה מרובה. מדיניות סף: 3 מתוך 5 לפעולות גדולות (משיכה > 1 מיליון דולר), 2 מתוך 3 לפעולות יומיומיות.

ארנקי MPC (Fireblocks, Copper, Liminal) — חלופה לחתימה מרובה עבור קרנות מוסדיות. המפתח אף פעם לא מורכב במלואו, מה שמגן מפני פשרה של משתתף יחיד. ארנקי MPC מעבדים עסקאות פי 3 מהר יותר מאשר חתימה מרובה בשל אי-צורך באיסוף כל החתימות על השרשרת. חשוב יותר: MPC מאפשר שילוב זרימות אישור — כל עסקה עוברת בדיקת ציות לפני החתימה.

HSM (מודול אבטחת חומרה) — לאבטחה מקסימלית של ארנקים חמים במנוע המסחר. AWS CloudHSM או HSM פיזי (Thales, Utimaco).

עקרונות בידוד:

  • אחסון קר (חתימה מרובה על התקנים מנותקים) — נכסים לטווח ארוך, >70% מה-AUM
  • אחסון חם (MPC/HSM) — הון חוזר למסחר
  • ארנק חם — מינימום לעמלות גז ופעולות קטנות

דיווח וביקורתיות

LP מצפים: דוחות NAV חודשיים, יומני עסקאות, חישובי עמלות. רגולטורים בחלק מהמדינות דורשים הערכת NAV עצמאית וביקורת שנתית.

כל הפעולות הקריטיות נכתבות ליומן אירועים בלתי ניתן לשינוי:

  • כל שינוי NAV עם מקורות נתונים וחישוב
  • כל עסקה עם מחיר ביצוע, עמלה, צד שכנגד
  • כל הרשמה/פדיון עם NAV בזמן העיבוד

אחסון: PostgreSQL לגישה תפעולית + Arweave/IPFS לארכיון בלתי ניתן לשינוי + גיבובי on-chain של דוחות מרכזיים לאימות.

מה כלול בעבודה: תיעוד, גישה, הדרכה, תמיכה

בהזמנת פיתוח תשתית קרן קריפטו, תקבלו:

  • תיעוד טכני מלא: ארכיטקטורה, ממשקי חוזים חכמים, API של שירותי off-chain.
  • גישה לקוד המקור במאגר פרטי עם רישיון שימוש.
  • הדרכת צוות: 2-3 מפגשים על עבודה עם חוזה ה-Vault, מחשבון NAV וארנק חתימה מרובה.
  • תמיכה במהלך הפריסה ו-3 החודשים הראשונים של הפעילות (כלול בעלות).
  • ביקורת חוזים חכמים על ידי צוות חיצוני (Ledger, ConsenSys Diligence, או דומה).

כיצד ליישם את התשתית ב-7-10 שבועות?

תהליך הפיתוח מורכב מחמישה שלבים:

  1. עיצוב (שבוע 1): זיהוי סוגי נכסים, חלונות הרשמה/פדיון, מבנה עמלות, דרישות דיווח רגולטוריות, מודל איומים.
  2. חוזים חכמים (2-3 שבועות): Vault, אורקל NAV, מודול עמלות. בדיקות על Foundry (בדיקות fuzz, בדיקות invariant). אימות פורמלי של invariant מרכזיים.
  3. תשתית off-chain (2-3 שבועות): מחשבון NAV, מנוע ביצוע עסקאות, צינור דיווח.
  4. אינטגרציה ובדיקות (שבוע 1): בדיקות end-to-end על testnet, בדיקות עומס לאורקל NAV.
  5. ביקורת ופריסה (שבוע 1): ביקורת חוזים חכמים חיצונית, פריסה הדרגתית עם מגבלות.

גרסה מינימלית בת-קיימא (vault + NAV + חתימה מרובה ללא אוטומציה) — 3-4 שבועות.

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

רכיב טכנולוגיה
חוזה Vault Solidity, EIP-4626, OpenZeppelin
ביצוע עסקאות Python, ccxt (CEX), viem (DEX)
מחשבון NAV Python, async, Chainlink/Pyth
ניהול מפתחות Fireblocks MPC או Gnosis Safe
מסד נתונים PostgreSQL + TimescaleDB
ניטור Prometheus + Grafana + PagerDuty
דיווח Python + מחולל PDF של LaTeX

צרו קשר כדי לתכנן את התשתית שלכם — המהנדסים שלנו יכינו פתרון מותאם לצרכים שלכם. קבלו ייעוץ ליישום קרן בכל רמת מורכבות.