פיתוח פרוטוקול הלוואות NFT: ארכיטקטורה, אורקלים ופירוק נכסים

השקת הלוואות מגובות NFT היא אתגר הנדסי מורכב: נכסים לא נזילים דורשים מנגנוני הערכה מיוחדים והגנה מפני פירוקים מדורגים. אנחנו בונים פרוטוקולי הלוואות NFT מאפס ומתאימים פתרונות קיימים לפרויקט שלכם. הצוות שלנו מספק פתרון מלא — מהארכיטקטורה וחוזים חכמים ועד לפריסה ותמיכה מתמשכת.

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

שאלות נפוצות

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

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

ארכיטקטורה של פרוטוקולי הלוואות NFT

לעתים קרובות אנו שומעים את הבקשה: "אנחנו רוצים שמשתמשים יוכלו לקחת הלוואות נגד JPEGs." מאחורי המשפט הזה עומדת אחת מהקטגוריות הכבדות ביותר מבחינה הנדסית של פרוטוקולי DeFi. הערכת שווי של בטחונות NFT אינה קריאה ל-latestPrice() באורקל של Chainlink. NFTs אינם נזילים: שני טוקנים מאותו אוסף יכולים להיות שונים במחיר פי 50. גישות סטנדרטיות של בטחונות עודפים מ-Aave או Compound אינן ישימות ללא התאמה עמוקה. שקלו מקרה אמיתי: במאי 2022, פרוטוקול BendDAO חווה פירוקים מדורגים עקב ירידה חדה במחיר הרצפה של BAYC — הבריכה הייתה על סף חדלות פירעון. לכן אנו מפתחים מערכת רב-רמות של הערכה והגנה. אם אתם שוקלים להשיק הלוואות NFT, קבלו ייעוץ — נעריך את הפרויקט שלכם תוך 1–2 ימים.

שני מודלים של הלוואות NFT

הפרוטוקולים מחולקים לעמית-לעמית (P2P) ובריכה-לעמית (P2Pool). בחירת הארכיטקטורה קובעת הכל — ממודל האורקל ועד למנגנון הפירוק.

הלוואות P2P (NFTfi, Arcade, Gondi): הלווה מציג NFT כבטחון, המלווה מציע הצעה. חוזה חכם מחזיק את ה-NFT בנאמנות; במקרה של חדלות פירעון, המלווה מקבל את הטוקן ישירות. אין סיכון בריכה, אורקל אופציונלי. הבעיה — מהירות התאמה נמוכה: הלווה ממתין להצעות במשך שעות.

הלוואות P2Pool (BendDAO, Pine Protocol, JPEG'd): בריכת נזילות, הלוואה מיידית בריבית, מחיר ה-NFT נקבע על ידי אורקל. P2Pool עולה על P2P במהירות הנפקת ההלוואה פי מאות: שניות לעומת שעות. עם זאת, המורכבות ההנדסית גדלה פי כמה — קוד ה-P2Pool גדול פי 5–10.

מאפיין P2P P2Pool
מהירות הנפקה שעות–ימים שניות
נדרש אורקל לא כן
סיכוני בריכה אין דורש ניהול
חוויית משתמש ללווה נמוכה גבוהה

למה P2Pool מורכב יותר מ-P2P

P2Pool דורש הערכת שווי של בטחונות לא נזילים. רוב הפרוטוקולים המוקדמים השתמשו במחיר הרצפה של האוסף כמדד. BendDAO הראה שזהו סיכון קריטי: ירידה חדה במחיר הרצפה של BAYC ו-CryptoPunks הובילה לפירוקים מדורגים, כשהבריכה על סף חדלות פירעון. הבעיה אינה רק תנודתיות. מחיר הרצפה ניתן למניפולציה: מספיק לרשום כמה טוקנים במחיר נמוך ב-OpenSea כדי שעדכון ה-Chainlink NFT Floor Price Feed יגיב בעדכון הבא. ההתקפה זולה יחסית לרווח הפוטנציאלי — לפי הערכותינו, מניפולציה יכולה לעלות $2,000, בעוד שנזק לבריכה יכול להיות $500,000. מודל האורקל שלנו מפחית את ההסתברות להתקפה כזו פי 5.

איך להעריך NFT לא נזיל

אנו משתמשים באורקל רב-רמות עם מקורות מרובים וממוצע זמן:

  • TWAP ממכירות on-chain — אורקל משלנו שמתעד אירועי Transfer+Sale ב-Blur, OpenSea Seaport, LooksRare דרך The Graph. הוא מחשב ממוצע משוקלל על פני N המכירות האחרונות עם פונקציית דעיכה. מיושם ב-Solidity באמצעות ring buffer לצבירת נקודות מחיר.
  • Chainlink NFT Floor Price Feeds — מקור משני, לא ראשי. עדכון כל כמה שעות איטי מדי לתגובה לתנועות שוק חדות.
  • תמחור מותאם תכונות — עבור אוספים עם נדירות תכונות בולטת. טוקן עם ציון נדירות תכונות באחוזון העליון של 1% שווה משמעותית יותר ממחיר הרצפה. מיושם באמצעות עץ מרקל off-chain עם מחיר חתום מאורקל מהימן, והוכחה מאומתת on-chain.

המחיר הסופי לחישוב LTV הוא min(TWAP, ChainlinkFloor) * haircut. Haircut (בדרך כלל 0.6–0.7) הוא הנחה שמרנית ללחץ פירוק. לפי החישובים שלנו, חיסכון בפירוקים הודות למודל זה יכול להגיע ל-$10,000 על בריכה של $500k.

מנגנון פירוק NFT

פירוק בטחונות NFT שונה מהותית מפירוק ERC-20. לא ניתן למכור טוקן חלקית. מכירה מיידית במחיר שוק אינה מובטחת — רישום ומציאת קונה לוקח זמן.

הפתרון — מכירה פומבית הולנדית בפירוק: החוזה מתחיל מכירה פומבית מהערך המוערך עם ירידת מחיר הדרגתית. המפרק קורא ל-liquidate(), מפקיד את סכום החוב, ומקבל את ה-NFT. אם אף אחד לא נכנס במהלך תקופת המכירה (בדרך כלל 24–48 שעות), הפרוטוקול רושם חוב אבוד.

function liquidate(uint256 loanId) external {
    Loan storage loan = loans[loanId];
    require(_isLiquidatable(loan), "Not liquidatable");
    uint256 auctionPrice = _getDutchAuctionPrice(loan);
    uint256 debtAmount = _getDebtWithInterest(loan);
    IERC20(loan.borrowToken).transferFrom(msg.sender, address(pool), debtAmount);
    IERC721(loan.nftContract).transferFrom(address(this), msg.sender, loan.tokenId);
    emit Liquidated(loanId, msg.sender, auctionPrice, debtAmount);
}

אלגוריתם פירוק מפורט: מחיר המכירה הפומבית הראשוני הוא הערך המוערך של הבטחון; כל בלוק המחיר יורד ב-1% מההתחלה. אם לא נמצא מפרק תוך 3000 בלוקים (~12 שעות), הפרוטוקול מוחק את החוב.

סף הפירוק (health factor < 1) מחושב תוך התחשבות בריבית שנצברה. הריבית משתנה, דרך עקומת ניצול (מודל kink).

מודל הריבית

לבריכות NFT יש דינמיקת ניצול שונה מבריכות הלוואות סטנדרטיות. נזילות שוק ה-NFT אינה אחידה: בשוק שורי, הביקוש להלוואות גבוה, הניצול עולה במהירות ל-80%+. כדי להגן על המפקידים, יש צורך במודל kink אגרסיבי עם עליית ריבית חדה מעל נקודת ה-kink (ניצול של 70–80%).

פרמטר ערך
ריבית בסיס 2–5% APR
שיפוע עד kink 10–20% APR
נקודת kink 75% ניצול
שיפוע אחרי kink 100–200% APR

העלייה החדה אחרי kink מתמרצת כלכלית לווה להחזיר או למחזר, ומחזירה את הבריכה לטווח בריא.

הגנה מפני התקפות

Flash loan ו-reentrancy בהקשר של הלוואות NFT. ל-ERC-721 אין hook של function liquidate(uint256 loanId) external { Loan storage loan = loans[loanId]; require(_isLiquidatable(loan), "Not liquidatable"); uint256 auctionPrice = _getDutchAuctionPrice(loan); uint256 debtAmount = _getDebtWithInterest(loan); IERC20(loan.borrowToken).transferFrom(msg.sender, address(pool), debtAmount); IERC721(loan.nftContract).transferFrom(address(this), msg.sender, loan.tokenId); emit Liquidated(loanId, msg.sender, auctionPrice, debtAmount); } , אבל ל-ERC-1155 יש onERC1155Received. אם הפרוטוקול מקבל ERC-1155 כבטחון — וקטור reentrancy הוא אמיתי. הגנה: nonReentrant על כל הפונקציות שמשנות מצב + עדכון אחסון לפני קריאות חיצוניות.

וקטור עדין יותר: flash loan + מניפולציה של מחיר הרצפה דרך רישום/הסרת רישום המוני ב-Blur בבלוק אחד. תוקף לוקח flash loan → מבצע מניפולציה על הרצפה → לוקח הלוואה בהערכה מנופחת → מחזיר flash loan → הרצפה חוזרת. TWAP עם חלון מספיק (מינימום 30 דקות) הופך התקפה זו ללא רווחית.

מחסנית וכלי פיתוח

החוזים כתובים ב-Solidity 0.8.24; אנו בודקים ב-Foundry עם fork tests על ה-Ethereum mainnet. Fork test מאפשר אינטראקציה אמיתית עם Seaport, Blur Exchange, ו-Chainlink price feeds בסביבת בדיקה.

עבור ה-subgraph של The Graph אנו משתמשים ב-AssemblyScript, מתעדים אירועי Transfer ו-OrderFulfilled כדי לבנות היסטוריית מחירים. רכיב האורקל off-chain — שירות Node.js עם Redis לשמירה במטמון וחתימת מחירים דרך נתונים מובנים של EIP-712.

יכולת שדרוג: UUPS (EIP-1822) עם timelock דרך OpenZeppelin TimelockController. עבור פרוטוקול עם TVL > $1M, חשוב שלכל שדרוג יהיה עיכוב של לפחות 48 שעות — זה נותן למשתמשים זמן לצאת אם מתגלה בעיה.

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

אנו מיישמים הלוואות NFT מאפס: מחזור פיתוח ופריסה מלא.

  • ארכיטקטורת חוזים ומפרט invariants
  • חוזים חכמים בקוד פתוח (Solidity)
  • מערכת אורקל (TWAP, Chainlink, מחיר תכונות)
  • ערכת בדיקות מלאה: יחידה, fuzz, fork tests עם נתונים אמיתיים
  • ביקורת פנימית (Slither, Mythril, סקירה ידנית)
  • תיעוד פריסה וניטור
  • קוד מקור וגישה ל-repository
  • הכשרת צוות על תפעול הפרוטוקול

יש לנו 8 שנות ניסיון בפיתוח DeFi ומעל 30 פרויקטים מיושמים בתחום ההלוואות הקריפטו. הזמינו פיתוח פרוטוקול — נציע את הפתרון האופטימלי.

תהליך העבודה

  1. ניתוח (2–3 ימים). קביעת סוג הפרוטוקול (P2P לעומת P2Pool), אוספים יעד, מקורות נזילות. ניתוח נתוני מחיר רצפה היסטוריים לבחירת פרמטרי TWAP.
  2. עיצוב (3–5 ימים). פריסת אחסון חוזים, תוכנית אורקל, מודל פירוק, פרמטרי סיכון. מפרט פורמלי של invariants של המערכת לבדיקות מבוססות מאפיינים.
  3. פיתוח (3–6 שבועות). חוזי ליבה, מערכת אורקל, בדיקות (יחידה + fuzz + fork). כיסוי >95%, בדיקות מאפיינים דרך Echidna עבור invariants.
  4. ביקורת פנימית (שבוע). Slither, Mythril, סקירה ידנית. אימות נתיבי פירוק עם fork tests באמצעות נתונים אמיתיים מהתרסקויות NFT בעבר.
  5. פריסה וניטור. Gnosis Safe multisig לפונקציות ניהול, Tenderly להתראות על עסקאות חריגות, The Graph לניתוח פרוטוקול.

לוחות זמנים משוערים

פרוטוקול P2P בסיסי — 4–6 שבועות. P2Pool עם אורקל מותאם אישית ופירוק במכירה פומבית הולנדית — 8–12 שבועות. ביקורת חיצונית (אנו ממליצים על Trail of Bits, Spearbit, או תחרות Code4rena) מוסיפה 2–6 שבועות והיא קריטית לפני פריסה ל-mainnet. עלות הפיתוח מחושבת באופן אישי לפי מורכבות ופונקציונליות נדרשת. עוד על מכירה פומבית הולנדית.

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