פיתוח perpetual DEX: היכן נשבר ניהול הפוזיציות
ניהול פוזיציות הוא המקום שבו נפגשים דרישת המרג'ין, שיעור המימון וההחלטה על ליקווידציה. בשוק יציב זה נראה כאритметика פשוטה: חישבו מחדש את המרג'ין, עדכנו את מצב הפוזיציה, חייבו עמלה.
הפער מתגלה בתנועה החדה הראשונה. מנוע הסיכון מחשב את הדרישה לפי מחיר אחד, הביצוע מתבצע לפי מחיר אחר, והליקווידציה מופעלת לפי מחיר שלישי — בין קווי המתאר האלה נוצר פער שנופל כולו על הבורסה.
המקור השני לבעיות הוא הליקווידציה כנתיב ביצוע נפרד. אם היא עוברת דרך אותו מאגר שבו עוברות פקודות רגילות, בעומק דליל הסליפאג' עולה על יתרת המרג'ין של הפוזיציה, ואת ההפרש מכסה קרן הביטוח.
מכאן שרשרת הכשלים האופיינית: נזילות דלה, ספרד רחב, מפל ליקווידציות בתנועה downward. גירעון בקרן הביטוח מכסים либо בצמצום כפוי של פוזיציות רווחיות, либо בהפסד של ספקי הנזילות — ושתי האפשרויות פוגעות באמון חזק יותר מאשר ההפסד עצמו.
בפיתוח perpetual DEX אנחנו מקבעים מודל סיכון אחיד לפני שורת הקוד הראשונה: מחיר אחד לחישוב, אחד לביצוע, כללי עיגול שקופים ומקור כיסוי מוגדר מראש לגירעון. נפרט כיצד זה נסגר.
מה נותן מנוע סיכון מנוהל ומצבי מרג'ין
מנוע הסיכון מחשב את הביטחון לא לפי העסקה האחרונה, אלא לפי מחיר הסימון — הממוצע בין האינדקס לפנקס הפקודות. זה מסיר סוג שלם של כשלים, שבהם הפוזיציה נסגרת בעקבות תנודה חדה בנזילות דלה ולא בעקבות תנועת שוק אמיתית.
לאחר מכן מופעל מרג'ין תחזוקה מדורג: ככל שהפוזיציה גדולה יותר, כך הדרישות גבוהות יותר, וזה מחושב בנפרד עבור מצב מבודד ומצב кросс-מרג'ין.
חישוב מחדש של הפוזיציות מתבצע באצוות בתוך הבלוק, בסדר דטרמיניסטי. זמן החישוב צפוי גם בשעות שיא: תור החישוב תופס מרווח קבוע, ושיעור המימון נצבר בלי תיקונים ידניים בפרמטרים. כך בדיוק נוצרת עמידות לתנודתיות בלי מהנדס תורן ליד המסך.
הליקווידציה פועלת במפל: סגירה חלקית של הפוזיציה, אחר כך קרן הביטוח, צמצום אוטומטי — ובסוף. שיעור הליקווידציות הכושלות, שאחריהן נשאר ביטחון שלילי, יורד פי כמה, וההפסד לא מוטל על שאר משתתפי השוק.
את החישובים אנחנו מחזיקים על Ethereum, שבו סביבת הביצוע דטרמיניסטית והמצב ניתן לאימות. התנהגות מנוע הסיכון הופכת לשחזורית: אותה קבוצת פוזיציות תמיד מניבה אותה תוצאה, ומצבים שנויים במחלוקת נבחנים לפי לוגים ולא לפי הזיכרון.
מצבי מרג'ין ומודלים לחישוב מחיר: השוואת גישות
מצבי המרג'ין ומקור המחיר הם שני החלטות בלתי תלויות, ויחד הן קובעות כיצד המערכת שורדת תנועת שוק חדה. המצב קובע במה בדיוק הסוחר עונה על הפוזיציה, מקור המחיר — לפי איזה גודל מחושבים הביטחון וסף הליקווידציה. את הבחירה עושים לא "לפי טעם", אלא לפי פרופיל הקהל ועומק הנזילות.
| וריאנט | מתי מתאים | מגבלות |
|---|---|---|
| מרג'ין מבודד | הסוחר מגביל את הסיכון לעסקה אחת ורוצה לראות את ההפסד המקסימלי מראש | ביטחון פנוי בחשבון לא מציל את הפוזיציה: ההון לא מנוצל מחדש |
| кросс-מרג'ין | תיק עם רגליים מגודרות, שבו הרווח של אחת מחזיק את הירידה של האחרת | טעות בפוזיציה אחת גוררת את כל החשבון — הסיכון הופך לכללי ולא מקומי |
| מחיר אורקל | נדרש גודל עמיד למניפולציה בתוך מאגר אחד, בעומק דליל | השהיית העדכון יוצרת פיגור בין הציטוט לעסקאות בפועל |
| מחיר אינדקס | ספוט נזיל ומספר רב של פלטפורמות מקור, שאפשר למצע לפיהן | תלות בהרכב המקורות ובזמינותם ברגע נתון |
| ליקווידציה חלקית | פוזיציות גדולות, שבהן סגירה מלאה מכה בפנקס הפקודות ובשאר המשתתפים | דורשת כיוונון מדויק של הצעד והספים, אחרת הליקווידציה ננעלת בלופ |
בפועל משלבים בין הגישות: מחיר אינדקס כבסיס, אורקל — כביטוח בעת פער בין הפלטפורמות. פיצול הליקווידציה לצעדים במקום סגירה אחת מפחית את המפל ומסיר ירידות שיא אצל מי שלא אשם בתנועה. בהמשך נפרט כיצד המצבים האלה מתחברים למודול חישוב הסיכון ומה בודקים תחת עומס.
פיתוח והטמעה: שלבי העבודה ההנדסית
סדר העבודות זהה גם עבור בורסת פרפטואלים חדשה וגם עבור מודול ניהול פוזיציות מעל פרוטוקול שכבר פועל. ההבדל הוא בעומק הביקורת: מאפס אנחנו מתכננים את לוגיקת המרג'ין והליקווידציות, ומעל פתרון קיים — מנתחים את הקיים ולא שוברים פוזיציות חיות.
- ביקורת הסכימה הנוכחית. מנתחים את רישום הפוזיציות, חישוב המרג'ין ותור הליקווידציות, מחפשים חוסר סנכרון בין מצב החוזה לנתוני התצוגה. בפלט — מפת צווארי בקבוק ורשימת תרחישים שהמערכת לא שורדת.
- תכנון סכימת הזרימות. מתארים את נתיב הפקודה מהארנק ועד לחישוב: היכן נבדקים הלימיטים, מי מספק את המחיר, כיצד מחולקים התפקידים בין החוזים לשירותים. הסכימה מקובעת לפני שורת הקוד הראשונה.
- הגדרת פרמטרי הסיכון. קובעים מינוף, מדרגות מרג'ין תחזוקה, ספי ליקווידציה וכללי חישוב שיעור המימון. בנפרד — מנגנוני הגנה: לימיט עניין פתוח לפי מכשיר ולפי משתתף, השהיה בתנועות מחיר חדות.
- הרכבת ליבת החישוב. מממשים רישום פוזיציות, מכניקת מרג'ין וליקווידציות, מחברים את מקור המחיר. כל מודול לפני האינטגרציה מכוסה בבדיקות אוטומטיות.
- בדיקת תרחישים. מריצים את המודל על תנועות מחיר חדות, ליקווידציות מפל, השהיות אורקל וזינוקי עומס, ומצליבים את החישובים מול מודל ייחוס. טעות במרג'ין בבדיקה זולה יותר מאשר בקונטור העבודה.
- מסירת המערכת. פורסים, מוסרים תיעוד של הפרמטרים והנהלים לשינוים, ומכשירים את צוות הלקוח להגיב לאנומליות ולשנות את פרופיל הסיכון בלי לעצור את המסחר.
ארטיפקטי מסירה: קונפיגורציות, סכימות ותקנות
מסירת הפרויקט היא לא ארכיון עם קוד המקור, אלא סט שלם שלפיו הצוות שלכם יוכל להפעיל את ה-perpetual DEX בלעדינו. אנחנו מוסרים אותו יחד עם הסבר: עוברים על כל מסמך, מראים היכן משתנה הפרמטר ומה יקרה לפוזיציות הלקוחות בעקבות זאת. להלן מה שנשאר פיזית אצל הלקוח.
- קונפיגורציות סיכון — קבצים עם מינופים מקסימליים, לימיטים לפוזיציה ולמכשיר, ספי ליקווידציה, שיעורי פאנדינג ומקדמי מרג'ין. לכל קבוצת פרמטרים מצורפת תיאור: טווח הערכים המותרים, מה מושפע מהשינוי ואיזו בדיקה תופסת שגיאה לפני הריליס.
- מדיניות גישה — תפקידים וחלוקת סמכויות בין המפעיל, מנהל הסיכונים והמנהל, כללי עבודה עם מפתחות חותמים, סדר הנפקה ושלילת גישות, הליך רוטציה מתוכננת.
- סכימת נתונים — מבנה הטבלאות של פוזיציות, פקודות, היסטוריית עסקאות וחישובי פאנדינג: קשרים בין ישויות, דרישות לשמירת היסטוריה, שאילתות להתאמת יתרה ולניתוח פערים.
- סכימות זרימות — נתיב הפקודה מקבלה עד ביצוע, נקודת קבלת המחיר, תור האירועים, התנהגות המערכת בעת ניתוק החיבור למקור חיצוני ובעת פער מחיר.
- תקנת תגובה — רשימת תרחישים לפי מחלקות כשל: איזו מטריקה מפעילה פעולה, מי מקבל את ההחלטה, כיצד מוגבל המסחר וכיצד מבוטל השינוי.
- תיעוד — תיאור המודולים ואחריותם, הוראות פריסה, שחזור מגיבוי ומעבר לקונטור חלופי.
- יומן מגבלות ותוכנית התפתחות — מה הוצא במכוון מגבולות הריליס הנוכחי, אילו מקומות דורשים תשומת לב עם גידול העומס ובאיזה סדר לסגור אותם.
את החבילה מקבלים יחד: מריצים שחזור מגיבוי ואירוע תרגול אחד לפי התקנה. אם מסמך לא מאפשר למשמרת התורנית לפעול בלעדינו — אנחנו כותבים אותו מחדש, ולא חותמים על הפרוטוקול.
קейс: ניהול פוזיציות תחת עומס תנודתיות
חישוב הפוזיציות חי בזרימה אחת עם שאר הלוגיקה של הפלטפורמה: בזינוק מחיר, משימת החישוב מחדש עמדה בתור הכללי אחרי חיוב כספים, חישוב עמלות וצבירות. התור גדל, חלק מהליקווידציות הופעלו לפי מחיר שכבר לא היה רלוונטי, ומהנדסים תיקנו בלילה את ספי הסיכון ביד. מדובר בפלטפורמת מסחר בחוזי פרפטואל על Ethereum.
מה נבנה מחדש
חישוב הפוזיציות הועבר לקונטור נפרד, שקורא את זרם הציטוטים ומעדכן רק את הפוזיציות שנכנסו לאזור הסיכון — במקום מעבר מלא על כל הפוזיציות הפתוחות בכל טיק.
אינדקס "צמד מסחר + צד" וצילומי מצב לפני ואחרי כל צעד נתנו אידמפוטנטיות: הרצה חוזרת של המשימה אחרי תקלת צומת לא מכפילה את החיוב ולא יוצרת ליקווידציה שנייה. ספי הסיכון הפכו לפרמטרים עם גרסאות — השינוי מוחל באופן צפוי ומבוטל בפעולה אחת, בלי עריכת קוד בקונטור הפעיל.
מטריקות לפני ואחרי
| מטריקה | לפני | אחרי |
|---|---|---|
| שיעור ליקווידציות כושלות מכלל ההפעלות | כ-7% | פחות מ-0.5% |
| זמן חישוב מחדש של פוזיציות אחרי זינוק מחיר | 40–60 שנ' | 2–3 שנ' |
| התערבויות ידניות בפרמטרי סיכון בשבוע | 12–15 | 0–1 |
| שחזור אחרי נפילת צומת | התאמה ידנית | התאמה לפי צילום מצב |
החלון בין שינוי המחיר לתגובת קונטור הסיכון הצטמצם בסדר גודל, ולכן הליקווידציה עוברת לפי ציטוט עדכני ולא לפי זה שהיה לפני הזינוק. תיקונים ידניים של הספים הפסיקו להיות מצב עבודה שגרתי: צוות הלקוח משנה פרמטרים בעצמו, והמהנדסים עוסקים בפיתוח ולא בתורנות.
מה לעשות אם מנוע הסיכון כבר פרוס והליקווידציות הפסדיות?
ליקווידציות הפסדיות רק לעיתים רחוקות אומרות שהמנוע כתוב רע — לעיתים קרובות יותר הוא מחשב נכון, אבל לפי נתוני קלט שגויים. הסיבה האופיינית: המרג'ין מחושב לפי מחיר העסקה האחרונה ולא לפי מחיר האינדקס, ופנקס דליל נותן מחיר שאי אפשר לסגור לפיו פוזיציה בלי סליפאג'.
הסיבה השנייה — מרג'ין תחזוקה שהוצב קרוב מדי למרג'ין ההתחלתי, והפוזיציה נכנסת לליקווידציה בגלל רעש רגיל.
האבחון מתחיל ממטריקות, ולא מקריאת קוד: שיעור הליקווידציות שנפלו על תנודות מחיר קצרות, גודל הגירעון בקרן הביטוח אחרי כל מכירה כפויה, הפער בזמן בין נגיעה בסף לסגירה בפועל. שלושת המספרים האלה מפרידים בין בעיית פרמטרים לבעיית ארכיטקטורה — וקובעים מה בדיוק לשנות.
בהמשך — החלפה ממוקדת של מודולים. אנחנו לא כותבים את המערכת מחדש במלואה: מחליפים את מקור המחירים, מעבירים אותו לאגרגטור עמיד למניפולציות, למשל Chainlink, מחשבים מחדש את נוסחת מרג'ין התחזוקה ומוסיפים לימיטים של עניין פתוח לצמדים דלילים.
פורמט הפוזיציות והממשקים החיצוניים נשארים כשהיו, ולכן פוזיציות קיימות לא מחושבות מחדש בכפייה ולא נסגרות.
ההפעלה מתבצעת בשלבים. תחילה החישוב החדש עובד במצב צל: הוא מחשב דרישות, ואת הסגירות מבצע הישן — כך הפערים נראים על הזרימה האמיתית לפני שמשהו נפגע. אחר כך מועברות למצב החדש פוזיציות חדשות, ורק לאחר מכן — התיק המצטבר, בהתאם לסגירה מרצון או לפי לוח זמנים מוצהר.
תוכנית המיגרציה מקבעת אילו פוזיציות מושפעות, היכן אפשרי מעבר כפוי ולפי איזה סימן אנחנו חוזרים אחורה.
ספקות טכניים: מרג'ין, אורקלים וביקורת חישובים
פרמטרי הסיכון — מרג'ין התחלתי ותחזוקה, מדרגות לפוזיציות גדולות, שיעורי מימון — מוציאים להגדרות מנוהלות, ולא לגוף החוזה. שינוי מצב הליקווידציה אז לא דורש הנפקה מחדש של חוזים ומיגרציה של פוזיציות משתמשים.
החישובים חיים במודול אחד: אותה נוסחה מחשבת מרג'ין, מחיר ליקווידציה ותשלום, ולכן פער בין הממשק ללוגיקה האון-צ'יינית נשלל מראש, ולא נתפס בבדיקות.
מה קורה כאשר מקורות המחיר מתפצלים?
פער הוא מצב שגרתי, לא תקלה. מחשבים חציון לפי מספר אורקלים בלתי תלויים, משליכים חריגים ועוקבים אחרי הסטייה מהערך היציב. אם הסטייה עולה על הסף שהוגדר, המנוע עובר למצב הפחתת סיכון: פוזיציות חדשות לא נפתחות, ליקווידציות מתבצעות לפי מחיר שמרני, ושיעור המימון מוגבל מלמעלה. לאחר חלון התייצבות מוגדר, המערכת חוזרת למצב רגיל בלי התערבות ידנית.
כיצד בודקים את החישובים לפני ההשקה?
מריצים את המנוע על סדרות היסטוריות עם תרחישי לחץ: גאפים, מפל ליקווידציות, פנקס דליל, השהיית אורקל. מצליבים את התוצאה מול מודל ייחוס, שחושב בנפרד — הפער במרג'ין ובתשלומים חייב להיות אפס על נתוני קלט זהים. בנפרד בודקים את הגבולות: עיגולים, צעד מחיר מינימלי, התנהגות בנזילות אפסית.
מה נכלל בקבלה?
תרחישים עם מספרים צפויים, שהלקוח משחזר בעצמו ולא מקבל על סמך אמירה. בנוסף — דוח כיסוי בבדיקות של נתיבים קריטיים: חישוב מרג'ין, ליקווידציה, מימון, משיכת כספים.
אם חישוב לא מתיישב עם הייחוס, מנתחים את הסיבה עד לקיבוע הגרסה — מקומות שנויים במחלוקת מתקבעים בכתב, ולא "נסכים אחר כך".
נדון במשימה שלכם — ונראה כיצד השאלות האלה נסגרות בקונפיגורציית השוק שלכם.נדון במשימה: מה לשלוח להערכה ולתוכנית עבודה
כדי שהערכת העבודות ותוכנית ההטמעה יישענו על המכניקה שלכם ולא על הנחות ממוצעות, נדרש הקשר: כיצד בנויים המרג'ין, החישובים והליקווידציות ומה בדיוק לא עובד. להלן נתוני המקור שמסירים את רוב השאלות כבר בהתחלה. אם משהו חסר, נתעד אותו כסעיף פתוח ונכלול אותו בתוכנית.
- מכשירים ושווקים: חוזי פרפטואל, הופכיים או לינאריים, האם נדרש מולטי-קולטרל.
- כללי מרג'ין: מבודד או кросс, מינוף מקסימלי, שיעורי מרג'ין תחזוקה לפי מדרגות.
- פאנדינג: תדירות הצבירה, נוסחת השיעור, מי מחשב אותו וכיצד הוא מופץ.
- תמחור: מקורות מחיר, חלון מיצוע האינדקס, התנהגות בעת פער מול העסקה האחרונה.
- ליקווידציות: סדר סגירת הפוזיציות, קרן הביטוח, צמצום אוטומטי בעומק דליל.
- צווארי בקבוק: השהיה בהנפקת פקודה, ירידות בתנודתיות, פעולות ידניות בחישובים.
- תוצאה מצופה: זמן חישוב, דיוק ההתאמה לאינדקס, שיעור ההתערבויות הידניות.
שלחו תיאור בצורה נוחה — טקסט, טבלה או סכימה. נדון במשימה ונחזור עם הערכה ותוכנית הטמעה לפי שלבים.







