מדוע האינטגרציה של Paraswap נשברת בעומס שיא
האגרגטור לא מפנה למקור נזילות אחד: הוא סוקר עשרות מאגרים, בונה מסלול רב-שלבי ומחזיר עסקה מוכנה לחתימה. בזמן שהציטוט מחושב ומגיע לארנק, מצב המאגרים משתנה — ודווקא בעומס שיא הפער הזה הופך לקריטי.
הסוג הראשון של כשל — אי-סנכרון ציטוטים: המחיר הגיע ממצב שכבר התיישן, וההחלפה יוצאת בתנאים שכבר אינם קיימים בשוק. השני — כשל מסלול: אם לפחות מאגר אחד נשאב מהשרשרת, כל העסקה מתבטלת, אף שהשלבים האחרים נותרו תקפים.
בנפרד עומדות עסקאות תקועות — בזינוק של גז הפעולה החתומה תלויה בתור, הדדליין שלה פג, והכספים חסומים עד ביטול ידני.
שיעור ההחלפות הכושלות בשעות פעילות גדל פי כמה: המשתמש משלם רק את עמלת הרשת, ההחלפה עצמה לא עוברת, אבל הממשק עד הרגע האחרון מציג תוצאה מוצלחת. כך נראה כשל אופייני של החלפות, שבגללו האינטגרציה של Paraswap בפרודקשן מפסיקה לעמוד באמינות המובטחת.
אנחנו מפרקים כיצד זה נסגר: היכן לשים בדיקת עדכניות של המסלול, אילו ספי החלקה ודדליין עובדים בשיא, וכיצד להחזיר סטטוס ברור במקום עסקה תקועה.
מה נותנת ניתוב החלפות מכויל
ניתוב החלפות הוא החישוב כיצד לבצע עסקה, ולא בחירה של זירה אחת: האגרגטור משווה את עומק המאגרים במספר רב של בורסות מבוזרות, מפצל את הסכום לחלקים ומרכיב נתיב כך שהשפעת המחיר ועמלות המאגרים יהיו מינימליות. Paraswap מחזיק את הלוגיקה הזו בצד שלו, ולכן המוצר לא צריך לדעת היכן בדיוק תבוצע ההחלפה.
מכאן — אפקטים מדידים. שיעור ההחלפות המוצלחות גדל, כי המסלול מחושב מחדש ממש לפני שליחת העסקה, ולא נלקח מחישוב שמור: ציטוט שהתיישן ברגע של תנודתיות כבר לא מוביל לכשל בגלל חריגת החלקה. זמן התגובה להכנת מסלול נשאר בעשיריות השנייה גם בזינוק של בקשות — החישוב מתבצע במקביל לפי זירות.
עמידות בעומס נשענת על גיבוי נתיבים. אם זירה מסוימת אינה זמינה או עונה לאט, המסלול נבנה לפי הנותרות, והפעולה עוברת לניסיון חוזר עם ציטוט מעודכן במקום כשל. שיעור ההחלפות הדורשות התערבות ידנית יורד למקרים בודדים: המפעיל לא צריך לבחור מאגר ידנית או להעלות את סף ההחלקה.
מה זה משנה בתפעול: סוג הכשל «העסקה לא עברה בגלל המחיר» מפסיק להיות בולט בפניות, והתנהגות השירות בשיא העומס הופכת לצפויה. את עבודת הניתוב רואים במטריקות — שיעור ההחלפות המוצלחות, זמן תגובה ממוצע וזנבי זמן תגובה, התפלגות ההחלקה לפי עסקאות.
אפשרויות חיבור למקורות נזילות
מקורות נזילות נבדלים לא רק בעומק, אלא גם במהירות שבה נעלם מהם המחיר שהצגת למשתמש. כשהמסלול מחושב לפי מאגר אחד, עסקה גדולה בסביבה מזיזה את הציטוט, והסוואפ מבוצע גרוע מהצפוי; כשיש עשרות מסלולים — השאלה היא מי סורק אותם ובאיזו השהיה.
אנחנו מכניסים לארכיטקטורה לפחות שני ערוצים בלתי תלויים: עיקרי דרך אגרגטור החלפות וגיבוי בחיבור ישיר למאגרים מאומתים. זה קובע את התנהגות המערכת כששירות חיצוני אינו זמין או מחזיר מסלול עם החלקה מעל הגבול.
| אפשרות | מתי מתאימה | מגבלות |
|---|---|---|
| חיבור ישיר לזירה אחת | מגוון נכסים מצומצם, נפחים צפויים, נדרשת שליטה מלאה על קריאת החוזה | אין בחירת מחיר: בירידת נזילות במאגר הזה העסקה או לא עוברת, או מתבצעת בשער גרוע |
| מנתב עצמאי | מאגר משלך, לוגיקת החלפה לא סטנדרטית, נכונות לתחזק אינדוקסציה וחישוב מחדש של מסלולים | יקר בפיתוח ובתחזוקה; קשה להתחרות במחיר עם אגרגטורים מוכנים |
| אגרגטור החלפות חיצוני, למשל Paraswap | נדרש המחיר הטוב ביותר הזמין על פני מגוון רחב של זירות בלי תשתית משלך | תלות בשירות חיצוני: השהיות, מגבלות בקשות, שינוי כללים ורשימת רשתות |
| סכימה היברידית עם מסלול גיבוי | מתאר פרודקשן עם דרישת זמינות ושליטה בהחלקה | בדיקות מורכבות יותר: צריך לכסות את שני הנתיבים ואת כללי המעבר ביניהם |
סכימה היברידית נותנת צפויות: כל עוד האגרגטור עונה בגבולות המחיר והזמן, ההחלפה עוברת דרכו; בסטייה מופעל מסלול הגיבוי, והמשתמש לא נשאר עם הוראה שלא בוצעה. את האפשרות הזו אנחנו לרוב שמים כבסיס, ואת האחרות — כשלבים, כל עוד העומס או דרישות השליטה לא גדלו.
כיצד מתבצעת האינטגרציה של Paraswap: שלבי העבודה
אינטגרציה של אגרגטור אינה חיבור של קריאה אחת, אלא הטמעה בסכימת ההחלפות הקיימת: המסלול נבנה ממספר מקורות נזילות, והתוצאה הסופית תלויה בפרמטרים של הבקשה, במגבלות ההחלקה ובטיפול בכשלים.
להלן רצף שלבי האינטגרציה של Paraswap, שלפיו אנחנו הולכים בפרויקטים — מביקורת ההחלפות הקיימות ועד מסירת המערכת עם נהלי תמיכה.
- ביקורת סכימת ההחלפות. אוספים את הזוגות הקיימים, הנפחים ושיעורי העסקאות הכושלות. בפלט — מפה היכן האגרגטור נותן יתרון בתפוקה והיכן משתלם יותר חיבור ישיר.
- הגדרת מסלולים. קובעים עדיפויות למקורות נזילות, מגבלות החלקה, סכום תפוקה מינימלי והתנהגות במצב של חוסר נזילות. מקור הגיבוי נקבע מראש.
- חיבור וקונפיגורציה. מטמיעים קריאות, מפתחות ומגבלות, מתארים טיפול בשגיאות וניסיונות חוזרים, כדי שכשל בודד לא יעצור את ההחלפה.
- בדיקת תקינות. מריצים תרחישים על נתונים היסטוריים ובסביבת בדיקות: משווים את התפוקה המחושבת לזו בפועל, בודקים סכומי גבול וכשל של אחד המקורות.
- נראות והוצאת תעבורה. מגדירים מטריקות של שיעור החלפות מוצלחות וסטייה של תפוקה בפועל מהמחושבת. את הזרימה מפעילים בהדרגה — תחילה בחלק קטן.
- מסירת המערכת. מוסרים סכימות מסלולים, קונפיגורציות, נהלי תמיכה וסדר פעולות בעת כשלים, ומכשירים את הצוות שלך.
תוצרי המסירה: סכימות, מדיניויות, נהלים
האינטגרציה מסתיימת לא בקוד עובד, אלא בערכה של תוצרים שלפיהם אפשר לפתח ולתחזק את המערכת בכוחות עצמך. להלן — מה בדיוק נשאר אצל הלקוח לאחר המסירה.
- קונפיגורציות מסלולים — רשתות וזוגות טוקנים נתמכים, ספי החלקה, עדיפות מקורות נזילות וכללי עקיפה כאשר המסלול הטוב ביותר אינו זמין.
- מדיניויות גישה — הפרדה בין מפתחות חתימה וקריאה, תפקידי מפעילים, סדר רוטציה והוצאה משימוש של פרטי זיהוי.
- סכימות זרימה — הנתיב מבקשת ציטוט ועד אישור העסקה: היכן נבדקות המגבלות, היכן נרשמת התוצאה, מה קורה בחריגת זמן.
- מגבלות ומנגנוני הגנה — ספי נפח חד-פעמיים ויומיים, הגבלות לפי זוגות, עצירה אוטומטית בירידת מחיר חריגה.
- נהל תמיכה — זמני תגובה להידרדרות ציטוטים, סדר חיבור מקורות חדשים, בדיקות מתוכננות של תרחישי כשל.
- תיעוד האינטגרציה — מתודות, פורמטי בקשות ותשובות, קודי שגיאה, תרחישי שחזור וחזרה אחורה אופייניים.
את הערכה מוסרים יחד עם בעל תפקיד בצד הלקוח: המהנדסים עוברים על הסכימות והנהלים עם הצוות, כדי שהמסמכים לא יישארו ללא שימוש. שינויים עתידיים במסלולים או במגבלות מבוצעים לפי הנהלים המתוארים, בלי לבנות מחדש את האינטגרציה.
מקרה בוחן: ההחלפה הפסיקה להיכשל בשיאי עומס
המצב לפני
ההחלפה בין טוקנים עברה דרך מסלול אחד: כשהנזילות בזירה ירדה או שהעסקה התבטלה בגלל החלקה, המשתמש קיבל שגיאה והלך לנסות שוב.
בשיאי עומס שיעור ההחלפות שנכשלו הגיע לכל פנייה שישית, והמהנדס התורן העלה ידנית את הסטייה המותרת של המחיר והחליף מקור — הטיפול ארך עד חצי שעה, וכל אותו זמן ההחלפות לא עברו.
מה שינו
חיברנו את האגרגטור Paraswap כשכבת ניתוב: הוא משווה בין מקורות הנזילות הזמינים ומפצל עסקה גדולה לחלקים, כדי לא למוטט את המחיר במאגר אחד.
סביבו הצבנו בקרה על הסטייה המותרת של המחיר, בדיקה מקדימה של הציטוט לפני חתימת העסקה וניסיון חוזר אוטומטי עם בנייה מחדש של המסלול, אם מקור החזיר שגיאה. בנפרד הגדרנו מעבר למקור גיבוי כשהזירה העיקרית אינה זמינה — כבר בלי מעורבות התורן.
מה קרה בסוף
שיעור ההחלפות הכושלות ירד לכמה אחוזים בודדים: התוצאה מגיעה מהפנייה הראשונה או השנייה, ולא מהניסיון הרביעי. זמן ההתאוששות אחרי כשל של זירה הצטמצם מעשרות דקות של עבודה ידנית לשניות — המסלול נבנה מחדש מעצמו.
מספר הטיפולים הידניים קטן בערך פי עשרה: התורן כבר לא יושב על זרם של החלפות שנכשלו, אלא עוסק במשימות פיתוח. יציבות ההחלפות בשיאים הפסיקה להיות תלויה במי שנמצא במשמרת היום.
במה שונה אגרגטור מחיבור ישיר לבורסה?
חיבור ישיר לבורסה אחת הוא מאגר נזילות אחד ומסלול אחד: המחיר נקבע לפי עומק המאגר הזה, ובנפח גדול ההחלקה גדלה. האגרגטור מרכיב מסלול מכמה זירות, מפצל את ההוראה בין מאגרים ומסדר מחדש את השלבים לפי מצב הספר הנוכחי. ההבדל אינו ב«מחיר ממוצע», אלא במי שמקבל את ההחלטה על המסלול.
באינטגרציה של Paraswap השליטה במסלול נשארת אצל האגרגטור: אתה קובע את המסגרות — החלקה מותרת, מחיר ביצוע מינימלי, רשימת רשתות וטוקנים — ואת פיצול העסקה מחשב שכבת החישוב שלו. הצפויות של המחיר גבוהה יותר: כמה מסלולים מתחרים, והעסקה מבוצעת לפי הטוב מביניהם שנמצאו, ולא לפי היחיד הזמין.
| קריטריון | חיבור ישיר ל-DEX | אגרגטור |
|---|---|---|
| שליטה במסלול | מלאה, אך המסלול אחד | המסגרות שלך, את הפיצול מחשב האגרגטור |
| צפויות המחיר | תלויה בעומק של מאגר אחד | תחרות בין מסלולים, פיצול ההוראה |
| תלות בזירה | עצירה של המאגר שוברת את ההחלפה | כשל של זירה אחת רק מצמצם את המסלולים |
| תמיכה | קוד משלך לכל רשת | עוקבים רק אחרי המסגרות |
הסכימה הישירה תלויה יותר בזירה: השהיה בחוזים או משיכת נזילות — ופונקציית ההחלפה מפסיקה לעבוד לגמרי. מכאן הבחירה של סכימת ההחלפה: האגרגטור מכסה החלפות משתמשים ואת הזנב הארוך של טוקנים, חיבור ישיר — אסטרטגיות משלך שבהן נדרשת שליטה מדויקת בביצוע. בפועל משלבים ביניהם: האגרגטור כנתיב עיקרי, חיבור ישיר — כגיבוי.
שאלות טכניות ומגבלות של הניתוב
הניתוב ב-Paraswap הוא הקטע היחיד באינטגרציה שתלוי בזירות חיצוניות. אם מאגר מרכיב מחדש נזילות או שמקור עוצר מסחר, פיצול העסקה משתנה ברגע החתימה, ובלי טיפול מפורש בכשל המשתמש מקבל פעולה תקועה במקום שגיאה ברורה. להלן — מה שצוות טכני בודק לרוב לפני הטמעה.
מה קורה אם הזירה אינה זמינה?
האגרגטור מוציא אותה מהמסלול ובונה מחדש את הנתיב לפי מקורות הנזילות הנותרים. אם לא נותרו מאגרים זמינים או שהמסלול הטוב ביותר נותן מחיר גרוע מהסף שנקבע בשליחה, ההחלפה אינה מתבצעת — העסקה לא יוצאת לרשת.
אפשר להחליף אגרגטור בלי לכתוב מחדש את השירות?
כן. שכבת הניתוב מוצאת מאחורי ממשק אחיד: קבלת ציטוט, פורמט התשובה והטיפול בכשל מתוארים במודול אינטגרציה אחד. מעבר לספק אחר הוא עריכה של המודול הזה ושל לוגיקת בחירת המסלול, שאר הקוד ותיעוד הפעולות לא נפגעים.
אילו מגבלות נפח והיכן גבול הירידה?
את המגבלה לא קובע האגרגטור, אלא עומק המאגרים: עסקה גדולה עוברת דרך כמה רמות מחיר, והשער הסופי שונה מהציטוט שהוצג. אנחנו מחשבים את הירידה לפני החתימה, קובעים גבול עליון לנפח לעסקה אחת וסטייה מותרת של המחיר; בחריגה מהם הפעולה נדחית או מתחלקת לכמה חלקים לאורך זמן.
נדבר על המשימה שלך: הערכה ותוכנית עבודה
הערכת העבודה נשענת על עובדות, לא על הנחות, ולכן כדי להתחיל נדרש חתך של סכימת ההחלפות הקיימת והדרישות ממנה. חלק מהסעיפים שלהלן נסגרים בתיאור, חלק בגישה לסביבת בדיקות או בייצוא קונפיגורציות. להלן — מה לשלוח, כדי שנחזור עם תוכנית אינטגרציה ולא עם שאלות הבהרה.
- סכימת הסוואפים הנוכחית: איזה חוזה או שירות מבצע את ההחלפה היום, היכן מחושבים הסכומים, אילו שלבים נעשים ידנית, האם נעשה שימוש באגרגטור חיצוני כמו Paraswap.
- רשימת הזירות והרשתות: היכן נדרשת נזילות, אילו זירות חייבות להישאר במסלול ההחלפה, ואילו אפשר להוציא בלי לאבד ביצוע.
- דרישות להחלפות: החלקה מותרת, סכום עסקה מינימלי ומקסימלי, התנהגות במילוי חלקי, זמן ביצוע מרבי להוראה.
- עומס צפוי: כמה החלפות בשעה בממוצע ובשיא, כמה ארנקים ומשתמשים פועלים במקביל, האם יש קפיצות עונתיות.
- תפקידי גישה ומתאר המפתחות: מי יוזם ומי חותם על הפעולה, היכן נשמרים המפתחות, האם יש מגבלות על עסקה בודדת ועל מחזור יומי.
- סביבות: איזו רשת בדיקות משמשת, במה היא שונה ממתאר הפרודקשן מבחינת נזילות זמינה והגדרות.
- דיווח ובקרה: איזה יומן פעולות נדרש, כיצד מנטרים את הפער בין ההוראה לביצוע בפועל, לאן נשלחים אירועי שגיאה.
אם לחלק מהסעיפים אין עדיין תשובה, גם זו אפשרות עבודה: נסמן אותם כפתוחים בהגדרת המשימה ונסגור אותם בשלב הבירור. אחר כך נחזור עם תוכנית אינטגרציה — סדר העבודה, נקודות חזרה אחורה, קריטריוני קבלה — ונתחיל מסביבת הבדיקות.







