איך נבנה מחיר ייחוס
ה-API של CantonCap מחשב מחדש את מחיר הייחוס של כל נכס בערך פעם בדקה, בכל מטבע שהוא מפרסם. הקלטים הם המחירים שזירות Canton ציבוריות מצטטות עבור הנכס: הטיקר של כל שוק, או מצב המאגר שלו כאשר השוק אינו מפרסם טיקר. מחיר שמצוטט בנכס אחר, כמו מטבע יציב או Canton Coin, מומר דרך מחיר הייחוס של אותו נכס, כך שאף מטבע יציב אינו מונח כשווה בדיוק לדולר אחד.
מחיר ייחוס נבנה רק מתצפיות עדכניות, נזילות מספיק כדי להיות משמעותיות, ושניתן להגיע מהן למטבע המבוקש. מצב המאגר בזירה, רמות ניתנות לביצוע בספר הפקודות ועסקאות שסולקו בזירה יכולים כל אחד לשמש רכיב ישיר. מחירי ייחוס חיצוניים המתויגים במטבע יכולים להמיר תצפיות אלה למטבע יעד, אך בדרך כלל אינם הופכים בעצמם לרכיבי מחיר עצמאיים.
ציטוט נספר רק בתוך הגבולות שהמפעיל קובע: מספיק נזילות מאחוריו, מרחק מעמיתיו שאינו חורג ממה שסף החריגים מתיר, מרווח והשפעת מחיר בגבולות המותר, תקרה לשיעור שבו זירה אחת יכולה להזיז את התוצאה, מגבלה על מספר שלבי ההמרה, וגיל מרבי. הציטוטים שעוברים משוקללים לנתון אחד. כל נכס מחושב בנפרד, כך שכשל באחד לעולם אינו מעכב נכס אחר.
מחיר ה-USD של Canton Coin הוא החציון של שלושה מחירי ייחוס בלתי תלויים מבורסות מרכזיות, Bybit CC/USDT, OKX CC/USDT ו-Kraken CC/USD, כאשר רגלי ה-USDT מומרות לפי שער USDT/USD של Kraken כמספר עשרוני מדויק. הוא מתפרסם כנתון מצרפי מתויג אחד הנושא את שלושת מקורותיו, והוא משמש גם כצלע המרה וגם כרכיב ישיר.
הבסיס לצד כל מחיר
כל דף נכס מציג מה הזירות מצטטות: המחיר האחרון של כל זירה עבור הנכס, הפער בין הנמוך לגבוה, והחציון שלהם. נעשה שימוש רק בשווקים שבהם הנכס הוא נכס הבסיס של הצמד, בנכס הציטוט האחד שיש לו הכי הרבה שווקים, כי מחירים בנכסי ציטוט שונים אינם יכולים לחלוק ציר אחד.
כאשר מספר הזירות זוגי, החציון הוא הנמוך מבין שני הציטוטים האמצעיים ולא הממוצע שלהם, כך שהוא תמיד מחיר שזירה אכן ציטטה. הבסיס הוא בדיקה ציבורית של מחיר הייחוס, לא החישוב עצמו, שהמשקלים וההחרגות שלו הם רשומות מנהליות.
מקורות המחיר
- מאגר AMMvenue_pool
- נגזר מיתרות מאגר און-צ׳יין בזירה ב-Canton.
- ספר פקודותvenue_book
- נגזר מרמות ניתנות לביצוע בספר הפקודות של זירה ב-Canton.
- עסקה בזירהvenue_trade
- נלקח מעסקאות שסולקו ביומן העסקאות של הזירה.
- ייחוס חיצוניexternal_reference
- ייחוס המתויג במטבע, שמשמש להמרה ולא לקביעת המחיר ישירות.
- נגזרderived
- מחושב מתצפיות אחרות שנכללו, ולא נצפה ישירות.
מול מה נבדקת כל תצפית
לפני שתצפית יכולה לתמוך בנתון שמתפרסם, היא נבחנת מול בדיקות שמספרן 15. כשל נרשם כאירוע איכות המציין את השלב ואת הבדיקה.
רשומות אלה מנהליות ולא ציבוריות: ה-API הציבורי מפרסם את הערך שנותר ואת מועד העדכון האחרון שלו, לא את נתיב הביקורת. מה שצרכן ציבורי יכול לבדוק ישירות הוא הפער בין הזירות, כפי שמוצג בכל דף נכס.
- תקינות עשרוניתdecimal_validity
- לא ניתן היה לפענח את הערך המדווח כמספר עשרוני מדויק.
- תקינות חותמת זמןtimestamp_validity
- לתצפית היה זמן חסר או בלתי סביר.
- התאמת זהותidentity_resolution
- לא ניתן היה לקשר את הרשומה לנכס או לשוק מוכרים.
- תקינות מחירprice_validity
- המחיר לא היה חיובי או שחרג מהגבולות האפשריים למכשיר.
- תקינות יתרותreserve_validity
- יתרות המאגר לא תאמו את העקומה שהן אמורות לעקוב אחריה.
- ספר מוצלבbook_crossed
- הצעת הקנייה הטובה ביותר עלתה על הצעת המכירה הטובה ביותר, ולכן הספר לא היה עקבי פנימית.
- ספר ריקbook_empty
- בצד אחד של הספר או בשניהם לא היו רמות לתמחור מולן.
- פער ברצףsequence_gap
- מספרי הרצף של המקור דילגו, ולכן לפחות עדכון אחד הוחמץ.
- חוסר עדכניותstaleness
- התצפית הייתה ישנה יותר מחלון העדכניות של חישוב זה.
- מחיר חריגprice_outlier
- המחיר היה מחוץ לרצועת הפיזור המקובלת ביחס לעמיתיו.
- קפיצת היצעsupply_jump
- היצע הטוקן המדווח השתנה בין תצפיות יותר ממה שההנפקה מתירה.
- אילוצי OHLCohlc_invariant
- נר הפר את האילוצים של עצמו — הגבוה מתחת לפתיחה, הנמוך מעל הסגירה, או דומה לכך.
- אירוע כפולduplicate_event
- אותו אירוע מקור הגיע פעמיים ונספר פעם אחת.
- התאמת מחזורvolume_reconciliation
- המחזור המדווח לא תאם את העסקאות שנצפו באותו חלון זמן.
- תלות לא זמינהdependency_availability
- קלט שהנתון הזה תלוי בו לא היה זמין בעת החישוב.
נזילות וציון נזילות
הנזילות של מאגר AMM היא שווי ה-USD של היתרות שלו: כל יתרה לפי מחיר הייחוס של הנכס שלה, בהתאמה לפי הזהות ב-Canton. יתרה שלנכס שלה אין מחיר משאירה את הנתון ריק במקום לנחש; מאגר ריק שווה אפס. ספר פקודות נמדד לפי העומק שלו, ולכן לשוק של ספר פקודות אין נתון נזילות יחיד.
עומק בטווח 2% הוא השווי ב-USD שניתן לקנות או למכור לפני שהמחיר זז 2% ממחיר הייחוס: בספר פקודות הוא נקרא מהרמות של הספר עצמו, וב-AMM הוא ממודל מהמצב השמור של המאגר, כולל העמלה. עומק ממודל מודד את העקומה; הוא אינו ציטוט ואינו הבטחה לביצוע.
ציון הנזילות מדרג שוק מ-0 עד 100 לפי העלות של מסחר בו. ה-API מדמה קניות ומכירות בהיקף של $100, $500, $1,000, $5,000 ו-$10,000 מול המצב הנוכחי של השוק, ללא עמלות, והופך את השפעת המחיר שלהן, ואת השאלה אם כל אחת מהן הייתה מתמלאת, לציון אחד. לשוק ללא מספיק קלטים אין ציון, וזה לעולם אינו זהה לציון אפס.
הציון של נכס הוא הממוצע של שלושת ציוני השוק הגבוהים ביותר שלו, בכל אחד מצדי הצמד, או של כל השווקים המדורגים שלו אם יש לו פחות, כך שנכס עם שוק מדורג אחד מקבל את הציון של אותו שוק. הציון של זירה הוא הממוצע על פני השווקים שלה. התצוגה "הנזילים ביותר" מדרגת נכסים לפי ציון הנכס.
מחזור ב-24 שעות
למחזור יש הגדרה אחת בכל האתר, כך שטבלה וסכום אינם יכולים לסתור זה את זה. מחזור 24 השעות של שוק ב-USD הוא מדידת הפעילות של ה-API עבורו, כשהיא קיימת; אחרת, מחזור ה-USD שהזירה מדווחת בטיקר שלה; אחרת, המחזור שלו בנכס הציטוט לפי מחיר הייחוס של אותו נכס. המחזור של נכס הוא הסכום על פני כל השווקים שבהם הוא נסחר, בכל אחד מצדי הצמד; של זירה, הסכום על פני השווקים שלה; ושל הרשת, סכום שסופר כל שוק פעם אחת.
מדידת הפעילות בוחרת ערך נומינלי אחד לכל תקופה, ומעדיפה USD שנגזר ממחירים המעוגנים בבורסות שגילם אינו עולה על שלוש דקות, ולעולם אינה מוסיפה את המחזור שזירה מדווחת למחזור שנצפה בעסקאות שלה. היא מצטברת ממקטעים שעתיים, עם תמונת מצב חדשה מדי חמש דקות.
נתון מחזור נושא את ההסתייגויות שלו. כאשר ברענון אין ערך שמיש, ה-API שומר את הערך האחרון עם המועד שלו; ברגע שמועד זה ישן מיותר משעה, הנתון מוצג בגוון מעומעם עם המועד שאליו הוא מתייחס, ולעולם לא כעדכני. נתון חלקי מכסה רק חלק מ-24 השעות ומציין זאת, והערכה מסומנת ככזו. ערך לא ידוע לעולם אינו מוצג כאפס, וסכום שכולל נתונים ישנים, חלקיים או מוערכים מציין כמה כאלה הוא כולל.
המחזור ש-Rocky מדווחת מוצג בשווקים שלה בלבד, בגוון מעומעם ועם הסיבה, ואינו נכלל באף סכום עד שיותאם לעסקאות שלה: הנתונים הראשונים שלה הגיעו לכמה מונים מההיצע של הנכסים שהיא מציגה.
שווי בדילול מלא
FDV הוא המכפלה העשרונית המדויקת של מחיר הייחוס שנכלל ושל תצפית ההיצע הכולל העדכנית ביותר התואמת למדיניות, שפרסם רשם מאושר. כאשר תצפית ההיצע ישנה מהגיל המרבי שהמתודולוגיה מקבלת, או כאשר אף רשם מאושר לא פרסם תצפית כזו, FDV אינו מחושב והסיבה מוצגת במקום המספר.
ההיצע הכולל הוא הנתון שרשם מאושר מפרסם עבור המכשיר, והוא נשמר בדיוק כפי שדווח: ללא עיגול, שינוי קנה מידה או אינטרפולציה. היצע שמשתנה בין שתי תצפיות יותר ממה שההנפקה מתירה מסומן על ידי בדיקת קפיצות ההיצע. ההיצע במחזור וההיצע המרבי אינם מתפרסמים.
שווי שוק
שווי השוק אינו מתפרסם. הוא מחייב נתון של היצע במחזור, ולא קיימת מתודולוגיה שנבדקה להיצע במחזור עבור מכשירי Canton: ההבחנה בין היצע במחזור לבין היצע נעול, מוחזק בקופה או מוגבל חוזית היא שאלת ממשל ולא שאלת נתונים.
ה-API מציין זאת בגוף התשובה במקום להחזיר שדה ריק: תשובת המדדים הגלובליים כוללת market_cap.semantics = "unavailable_circulating_supply". עד שתהיה מתודולוגיה כזו, שווי שוק של נכס Canton הוא ניחוש, והמוצר הזה אינו מפרסם ניחושים.
דירוג ויחסים
הדירוג מסדר כל נכס רשום לפי FDV, הנזילות במאגרים והמחזור המתגלגל של 24 שעות. הוא מחושב פעם אחת על פני כל הרשימה, כך שלנכס יש אותו דירוג בכל דף, בכל מטבע ובכל מיון.
נזילות / FDV מחלק את הנזילות ב-USD במאגרי ה-AMM של הנכס ב-FDV שלו, כשכל מאגר כשיר נספר פעם אחת. עומק ספר הפקודות אינו כלול. היחס אינו מוגבל: שווי קטן עם מאגרים עמוקים יכול לעבור 100%.
מחזור / FDV מחלק את המחזור המתגלגל הטוב ביותר הזמין של 24 שעות ב-USD, מדווח או מעסקאות שנצפו אך לעולם לא סכומם, ב-FDV של הנכס: החלק מהשווי שהחליף ידיים ביום אחד.
כל אחד מהיחסים מושמט כאשר FDV חסר, אינו עדכני או אפס, או כאשר אין מה לחלק: לנכס ללא מאגר אין יחס נזילות. כל יחס נושא את הכיסוי שלו, כך שנתון שנבנה על חלק מהשווקים מציין זאת.
שניהם נקראים בסולם אחד של ארבע רצועות, המסומנות בפסים שליד כל נתון.
| רצועה | טווח | נזילות / FDV | מחזור / FDV |
|---|---|---|---|
| דלילה, שקט | מתחת ל-1% | דלילה | שקט |
| רדודה, קל | 1% עד 5% | רדודה | קל |
| בינונית, פעיל | 5% עד 10% | בינונית | פעיל |
| עמוקה, כבד | 10% ומעלה | עמוקה | כבד |
גרפים: נרות וקו
הנרות מציגים את מחירי הפתיחה, הגבוה, הנמוך והסגירה של הנכס ב-USD, כפי שה-API מצרף אותם על פני השווקים שמהם הוא מתמחר את הנכס, עם המחזור מתחתיהם כשהוא פורסם. כפתורי הבחירה קובעים את פרק הזמן שנר אחד מכסה: 15m, 1h, 4h, 24h, 1W או 1M. שלושת הקצרים ביותר מציגים כמאתיים נרות אחורה, 24h מציג שנה, ו-1W ו-1M מציגים את כל ההיסטוריה.
ה-API מספק נרות באורך של עד שבוע, ולכן נר חודשי נבנה מנרות יומיים, לפי חודש קלנדרי ב-UTC: הוא נפתח במחיר הפתיחה הראשון של החודש, נסגר במחיר הסגירה האחרון שלו, משתרע בין הגבוה ביותר לנמוך ביותר, ומסכם את המחזור שפורסם לימיו.
הנרות מחוברים לרצף אחד: כל נר נפתח היכן שהקודם לו נסגר, ופרק זמן שבו לא התבצע מסחר מוצג כנר שטוח במחיר הסגירה הקודם, ללא מחזור, במקום כפער. הגבוה והנמוך של נר מתרחבים כדי לכלול את מחיר הפתיחה שלו, כך שהגוף לעולם אינו חורג מהפתיל.
הקו משרטט את מחיר הייחוס עצמו, לאורך 24h, 1W, 1M, 1Y או הכול, בנקודה אחת לכל מרווח, המחיר האחרון בו: כל 15 דקות לאורך 24 שעות, כל שעה לאורך שבוע, כל 4 שעות לאורך חודש, ומדי יום לאורך שנה או יותר. הוא ירוק מעל הנקודה הראשונה בטווח ואדום מתחתיה.
גרף מגיע אחורה רק עד כמה שה-API שומר היסטוריה ושהגישה של האתר מתירה, והוא נקרא בחלונות של 31 ימים לכל היותר. כאשר ההיסטוריה של מקור מתחילה כש-CantonCap החלה לצפות בו, תקופות מוקדמות יותר אינן קיימות. הקו הקטן בכל שורת טבלה הוא מחירי הייחוס של הנכס ב-24 השעות האחרונות, לפי שעה.
קצב עדכון וחותמות זמן
הזירות נקראות מדי 30 שניות עד 5 דקות, בהתאם למה שכל אחת מתירה, ומחירי הייחוס מחושבים מחדש בערך פעם בדקה. האתר משתמש מחדש בכל תשובה לפרק זמן קצר: 30 שניות לסטטוס מקורות, דקה למחירים, רישומים ושווקים, וחמש דקות למחזור, זירות, גרפים וגרפים מוקטנים. טבלת שווקים פתוחה בודקת אם יש מחירים חדשים מדי 45 שניות.
כל מועד שה-API מפרסם הוא ב-UTC, והאתר מציג את המועדים שלו ב-UTC. מחיר מחושב נושא את מועד החישוב שלו; מדידה לאורך חלון נושאת את סוף החלון שהיא מכסה, לא את מועד הקריאה. חלונות כוללים את תחילתם ואינם כוללים את סופם. הגיל של כל נתון מוצג לצידו, והאפליקציה מסמנת מחירים כמעוכבים ברגע שהעדכני ביותר בן חצי שעה. הגרף באפליקציה מציג את הציר לפי השעון המקומי של הטלפון.
נתוני דוגמה ונתונים חיים
כל נתון נקרא מה-API של CantonCap כשהדף נבנה, וכל קריאה מתעדת אם היא חזרה כנתון חי. בסביבת הייצור, API שאינו נגיש מוביל לשגיאה או להיעדר גלוי, ולעולם לא לדף של נתונים מומצאים.
גרסאות פיתוח ותצוגה מקדימה יכולות להציג מערך נתוני דוגמה קבוע כשה-API אינו נגיש. דף שמבוסס עליו נושא תמיד באנר נתוני דוגמה שמסביר מדוע, והנתונים בו הם להמחשה בלבד ואינם פיד שוק. נתוני דוגמה לעולם אינם מוצגים כאמיתיים.
רשימות מעקב, סנטימנט ופוסטים של מנפיקים
"ברשימות מעקב: N" סופר את חברי הקהילה ששומרים כרגע את הנכס ברשימת המעקב שלהם, מתוך רשימות של חברים מחוברים בלבד. זהו סכום כולל; אף רשימה לעולם אינה מוצגת. האתר מרענן אותו לכל היותר פעם בדקה.
מד הסנטימנט סופר חברי קהילה, כל אחד פעם אחת לכל נכס. הצבעה שורית או דובית בדף הנכס נספרת שבעה ימים מרגע שניתנה; חברי קהילה שלא הצביעו נספרים לפי הנטייה של הפוסט הפותח האחרון שלהם על הנכס בשבעת הימים האחרונים, בלי תגובות, פוסטים מוסתרים ופוסטים שנמחקו. החלק השורי מבין חברי הקהילה שנקטו עמדה מוצב על חוגה של חמישה אזורים שווים, מדובי מאוד ועד שורי מאוד. זוהי ספירת דעות, לא איתות, והמד נשאר ריק כשאף אחד לא הביע נטייה.
פיד מנפיק מציג את הפוסטים שמנפיק או ספק נכס מפרסמים ב-X, רק כאשר ה-API מציג שיוך מאושר בין המנפיק לנכס; אף פיד אינו נבחר לפי התאמת סימול. הפוסטים מופיעים כפי שפורסמו, עם המועד שלהם ב-UTC וקישור למקור. פוסט שנערך מוצג בגרסתו האחרונה, ופוסטים שנחסמו, מוגנים או נמחקו מוסרים. דף פתוח בודק שוב מדי 30 שניות ולעולם אינו מציג פוסט מתשובה שגילה עולה על 90 שניות. CantonCap אינה מאמצת את מה שמנפיקים מפרסמים.
כיסוי והיקף
Canton אוכפת פרטיות ברמת תת-עסקה: צד מקבל רק את חלקי העסקה הנוגעים לו. זירה שגלויה למפתח אינטגרטור אינה גלויה לציבור, ורשומת ביצוע בהיקף של צד אינה גלויה לאף אחד אחר. לכן כל נתון נושא את ההיקף שבו נצפה.