פיתוח מערכת נדירות NFT — פתרון מלא

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

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

שאלות נפוצות

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

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1375
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1349
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    794
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1087
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1032
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1129

מדוע מערכת הרייריטי של NFT נשברת כבר בהנפקה הראשונה

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

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

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

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

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

מה נותנת מודל נדירות מחושב של הקולקציה

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

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

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

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

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

גישות לחישוב נדירות: השוואת וריאנטים

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

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

וריאנט מתי מתאים מגבלות
לפי משקלי מאפיינים 5–15 מאפיינים, יש ערכים "אגדיים" מובהקים המשקלים מכוילים ידנית; נדירות של זוג מאפיינים אינה נראית
לפי דירוגים סידוריים צריך מספר אחד לכל טוקן למיון ולתצוגות הדירוג אינו מסביר ממה נצברה הנדירות; בסכומים שווים ייתכן תיקו
לפי צירופי מאפיינים הערך נוצר מהצירוף, ולא מערך בודד היקף החישוב מחדש גדל יחד עם מספר המאפיינים
חישוב מחוץ לרשת את המטא-דאטה מכינים לפני ההנפקה, נדרשים תיקונים וביקורות לעיתים קרובות התוצאה אינה נבדקת בבלוקצ'יין — האמון נשען על הייצוא
חישוב ברשת הבלוקצ'יין נדרשת בדיקוּת ציבורית של הדירוג לכל טוקן ההנפקה יקרה יותר, חישוב מחדש אחרי יצירת הטוקן בלתי אפשרי

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

איך אנחנו מטמיעים חישוב נדירות: שלבי העבודה

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

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

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

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

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

  5. השוואה לציפיות. מציגים את התפלגות הנדירות ואת נקודות הפער מול הכוונה, מכיילים את הנוסחה עד להתאמה.

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

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

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

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

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

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

מקרה בוחן: בנייה מחדש של קולקציית רייריטי בת 10,000 פריטים

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

הרכיבו מחדש את ההפקה כמודל מחושב. השכבות קיבלו משקלים, לקולקציה הוגדרה התפלגות יעד של רמות נדירות, ובבלוק נפרד תוארו כללי אי-התאימות של מאפיינים.

ציון הרייריטי של כל פריט מחושב מההסתברויות של כל המאפיינים שלו, ולא מסדר ההופעה ברשימה, ולכן התוצאה מתלכדת עם התוכנית בלי כיוונון ידני.

מה השתנה

  • סטיית הרמות הנדירות מהתוכנית: היה פי כמה — הפך לעד 0.1 נקודות אחוז.
  • שיעור מערכי המאפיינים הכפולים: היה כ-6% — הפך ל-0.
  • השוואה ידנית של המנה: היה כ-20 שעות — הפך לכמה דקות של קריאת דוח.
  • בנייה מחדש של הקולקציה עם משקלים חדשים: במקום שבוע של תיקונים — ריצה אחת.

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

במה נבדלת נדירות סטטית מנדירות דינמית

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

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

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

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

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

שאלות טכניות נפוצות על חישוב נדירות

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

להלן ספקות שמעלים לפני ההתחלה.

איך חישוב הנדירות מוגן מפני החלפה?

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

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

מה יקרה אם נשנה משקלים לפריטים שכבר הונפקו?

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

האם החישוב יעמוד בהנפקה המונית?

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

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

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

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

שלחו את מה שיש: נבנה את סכימת הנתונים, נתעד בנפרד את ההנחות ונחזור עם הערכת לוחות זמנים ותוכנית עבודה. את סדר השלבים נתאם לפני ההתחלה, כדי שההיקף לא ישתנה תוך כדי.