החלפות ב־DEX: השפעת מחיר, החלקה ו־MEV
הסבר על השפעת עומק המאגר על השינוי הצפוי במחיר, על אופן הגבלת החלפה ממתינה באמצעות מינימום לקבלה, ועל הסיבה שסבילות החלקה רחבה עלולה לאפשר ביצוע גרוע יותר.
במדריך הזההשפעת מחיר, החלקה וסבילות עונות על שאלות שונות
תקציר קצר
הצעת מחיר ב־DEX יכולה להשתנות משתי סיבות: ההחלפה עצמה מזיזה את מחיר המאגר, או שפעילות אחרת משנה אותו לפני ביצוע העסקה. השפעת מחיר מתארת את הסיבה הראשונה; החלקה היא השינוי בין הצעת המחיר לבין הביצוע בפועל. סבילות החלקה קובעת גבול לתוצאה, אך אינה מבטיחה מחיר טוב יותר.
השפעת מחיר, החלקה וסבילות עונות על שאלות שונות
השפעת מחיר נוצרת כאשר ההזמנה שלך גדולה ביחס לנזילות הזמינה, ולכן היא עצמה מזיזה את מחיר המאגר. הצעת מחיר מציאותית כבר מביאה את ההשפעה הזאת בחשבון: במאגר רדוד, הזמנה גדולה מקבלת מחיר ביצוע ממוצע גרוע יותר מהזמנה קטנה. החלקה היא ההפרש בין הכמות הצפויה בעת הכנת הצעת המחיר לבין התוצאה בעת ביצוע העסקה. החלפות אחרות, תנועת שוק, עיכוב או נתיב אחר עשויים לשנות את התוצאה בזמן ההמתנה.
סבילות החלקה היא תנאי שההחלפה חייבת לעמוד בו. בהחלפה שבה כמות הקלט קבועה, התנאי מוגדר בדרך כלל כמינימום לקבלה; אם התוצאה בביצוע נמוכה ממנו, החוזה עשוי לבטל את העסקה. הסבילות אינה מבטלת את השפעת המחיר שכבר נכללה בהצעת המחיר ואינה אומרת כמה החלקה תתרחש. גם המדריך של Uniswap על השפעת מחיר והחלקת מחיר מבחין בין המושגים. ממשקים שונים עשויים להשתמש בחישובים או בתוויות שונות.
מדוע הצעת AMM נעשית פחות טובה כשההזמנה גדלה
בורסה עם ספר פקודות מתאימה בין הוראות קנייה ומכירה שממתינות במחירים שונים. לעומתה, יוצר שוק אוטומטי עם מכפלה קבועה מחשב החלפה לפי יתרות האסימונים במאגר. במודל פשוט של שני אסימונים מתקיים x × y = k. קנייה של יותר מאסימון אחד מוציאה כמות גדולה יותר שלו מהמאגר ומכניסה את האסימון האחר, ולכן יחס ההחלפה משתנה במהלך העסקה. ככל שההזמנה גדולה יותר ביחס לעומק השימושי, כך מחיר הביצוע הממוצע שלה פחות טוב.
זו נוסחה של מודל, ולא כלל אוניברסלי לכל DEX. מסמכי המפתחים של Uniswap מתארים את מבנה המכפלה הקבועה של v2 ומבדילים אותו מנזילות מרוכזת בטווחי מחיר ב־v3 וב־v4, שבהם גם hooks וכללי עמלות אחרים עשויים להשפיע. הצעת מחיר יכולה לשלב כמה מאגרים או זירות. השוו את התוצאה הצפויה לגודל ההזמנה ולנתיב המסוימים, ולא למחיר האחרון בגרף או לערך הכולל שמופקד במאגר. תיעוד ההחלפות של Uniswap v2 מפרט את המנגנון.

דוגמה מחושבת: החלפת 10,000 USDC מול מאגר רדוד
נניח שבמאגר היפותטי יש 100 ETH ו־200,000 USDC, אין עמלת החלפה או שינוי מחיר חיצוני, והמאגר פועל לפי עקומת מכפלה קבועה. היחס ההתחלתי הוא 200,000 ÷ 100 = 2,000 USDC לכל ETH. לאחר הכנסת 10,000 USDC יתרת ה־USDC עולה ל־210,000. כדי לשמור על המכפלה, יתרת ה־ETH יורדת ל־20,000,000 ÷ 210,000, כלומר כ־95.238095 ETH. המשתמש מקבל כ־4.761905 ETH.
לפי היחס ההתחלתי, 10,000 USDC היו קונים 5 ETH. הפער של 0.238095 ETH הוא כ־4.76% מהכמות ללא השפעת מחיר. מחיר הביצוע הממוצע הוא 10,000 ÷ 4.761905 = 2,100 USDC ל־ETH, גבוה ב־5% מהיחס לפני ההחלפה. מחיר השוליים של המאגר לאחר העסקה הוא 210,000 ÷ 95.238095 = 2,205 USDC ל־ETH. המחסור לעומת הכמות ללא השפעה, מחיר הביצוע הממוצע ומחיר השוליים החדש הם השוואות שונות. הצעת מחיר אמיתית כוללת גם עמלות ואת צורת הנזילות בנתיב. זוהי דוגמה היפותטית, לא תחזית שוק.
הפרידו בין עמלת המאגר להשפעת העקומה
נשאיר את יתרות הדוגמה ההיפותטית כפי שהן, ונניח עמלה של 0.30% מהקלט לפי שיטת חיוב מסוימת. הסכום המשמש לחישוב החילוף הקבוע הוא 10,000 × (1 − 0.003) = 9,970 USDC, ולכן הפלט הוא 100 × 9,970 ÷ (200,000 + 9,970), כלומר כ־4.748297 ETH. זהו פלט הנמוך בכ־0.013607 ETH לעומת 4.761905 ETH ללא עמלה באותה עקומה. בהשוואה ל־5 ETH לפי היחס ההתחלתי, הפער הכולל הוא כ־0.251703 ETH. אם משתמשים בתוצאה ללא עמלה כשלב ביניים, כ־0.238095 ETH מיוחסים לעקומה ועוד כ־0.013607 ETH להתאמת העמלה. החלוקה תלויה בבסיס ההשוואה.
שיעור 0.30% הוא הנחה לצורך הדוגמה, ולא עמלה אחידה בכל DEX. התאמת הקלט הזו תואמת את חישוב העמלה בספריית getAmountOut של Uniswap v2. עם זאת, החוזה מוסיף ליתרות את מלוא סכום הקלט; לכן שימוש ב־9,970 USDC כקלט אפקטיבי לחישוב אינו אומר שרק סכום זה מגיע למאגר. מאגרים אחרים עשויים להשתמש בשיעור אחר, בבסיס חישוב שונה או בכמה רכיבי עמלה. מסלול מרובה שלבים עשוי לכלול עמלה בכל מאגר, לצד עמלת ממשק ועלות רשת. בדקו את המסלול ואת פירוט העמלות בפועל במקום להחיל את השיעור הזה על כל החלפה.
מינימום לקבלה הוא גבול, לא התוצאה שבהצעת המחיר
נניח שהנתיב מציג הצעה של 4.7619 ETH עבור אותו קלט והממשק מחיל סבילות של 1%. המינימום לקבלה יהיה כ־4.7143 ETH: 4.7619 × (1 − 0.01). ביצוע של 4.72 ETH עומד בגבול; 4.70 ETH נמוך ממנו וההחלפה עשויה להתבטל בהתאם לתנאי ההגנה של הנתיב. הצעת המחיר נשארת 4.7619 ETH. המינימום הוא רק התוצאה הגרועה ביותר שהעסקה שנשלחה מוכנה לקבל.
גבול צר יותר יכול לגרום לעסקה תקינה להיכשל אם המחירים משתנים בזמן עומס או שהצעת המחיר מתיישנת. גבול רחב יותר מאפשר ביצוע גרוע יותר לפני דחייה. מסמכי המפתחים של Uniswap מתארים מינימום פלט כתנאי הגנה, אך הפרמטרים ואופן הכישלון תלויים בנתב או במוצר. עסקה שנכללה בבלוק ואז בוטלה עדיין עשויה לגרור עלות רשת, בהתאם לשרשרת ולמסלול העסקה. אל תגדילו את הסבילות רק כדי להעלים הודעת שגיאה; בדקו תחילה אם הצעת המחיר, האסימון, הנתיב, העמלות או תנאי הרשת השתנו.
בזמן ההמתנה מתווספות תנועות שלא הופיעו בהצעת המחיר
בין החתימה לבין הכללת העסקה בבלוק, החלפות אחרות יכולות לשנות את היתרות במאגר. ארביטראז' עשוי לקרב את מחיר המאגר למחירים בשווקים אחרים; תנועה מהירה בשוק יכולה גם להפוך הצעת מחיר קודמת ללא רלוונטית. ההזמנה שלך נשארת זהה, אך הכמות הסופית עשויה להשתנות. הצעת gas גבוהה יותר יכולה להשפיע על קדימות הכללה בחלק מהשרשראות, אך אינה מבטיחה זמן או מחיר ביצוע. מועד תפוגה עשוי לדחות עסקה שממתינה זמן רב מדי; הוא אינו משמר את הצעת המחיר הקודמת.
הפרידו בין ההערכה בעת הצעת המחיר לבין קבלת העסקה הסופית. השפעת מחיר היא ההשפעה הצפויה של ההזמנה על נזילות הנתיב. שינוי נוסף לאחר הכנת הצעת המחיר הוא החלקת ביצוע לפי נקודת הייחוס של הממשק. ממשקים מסוימים מאחדים את שני הדברים באזהרה אחת או משתמשים בהשוואה אחרת. כדי לבדוק את התוצאה לאחר מכן, שמרו לפני החתימה את הצעת המחיר, השעה, הנתיב והמינימום לקבלה.
סבילות רחבה עשויה לשמש ב־MEV מסוג sandwich
Sandwich הוא סוג של ערך מרבי שניתן לחלץ (MEV). מחפש מזהה החלפה ממתינה, מבצע עסקה לפניה כדי להזיז את מחיר המאגר לרעת המשתמש, מאפשר להחלפת המשתמש להתבצע ואז מבצע עסקה בכיוון ההפוך כדי לסגור את הפוזיציה. המשתמש עשוי לקבל יותר מהמינימום ששלח ובכל זאת לקבל מחיר גרוע מההצעה המקורית. גבול פלט הדוק יכול לבטל חלק מהביצועים הפוגעניים, אך אינו מונע כל אסטרטגיית שינוי סדר או תנועת שוק רגילה.
מדריך MEV של Ethereum.org מסביר את סדר פעולות ה־sandwich ומדוע המשתמשים שנפגעים מקבלים ביצוע גרוע יותר. לא כל MEV הוא תקיפה: ארביטראז' יכול לקרב מחירי מאגר למחירים בשווקים אחרים, בעוד sandwich פוגע בביצוע למשתמש. נתיבי עסקאות פרטיים כמו Flashbots Protect מתארים אמצעי הגנה ותנאים משלהם. הם תלויים בשרשרת ובספק, אינם מבטיחים מחיר מסוים ומוסיפים תלות בנתיב עסקה נוסף. בדקו אילו רשתות ותנאים נתמכים כעת.
עמלות, התנהגות האסימון והנתיב משנים את התוצאה הכוללת
כמות האסימונים שמתקבלת אינה העלות הכוללת של ההחלפה. הפרידו בין עמלת המאגר, עמלת ממשק אם קיימת, עלות הרשת, השפעת המחיר שכבר נכללה בהצעת המחיר, החלקת ביצוע ועמלות העברה או קנייה/מכירה של האסימון עצמו. לחלק מהאסימונים יש התנהגות העברה לא סטנדרטית; ההחלפה יכולה להיכשל או להעביר כמות שונה מההנחה לגבי ERC-20 רגיל. אישור לשימוש באסימון עשוי להיות עסקה נפרדת עם עלות רשת משלה.
אגרגטור נתיבים יכול לפצל החלפה בין כמה מאגרים או להשתמש באסימוני ביניים כדי לשפר את הכמות המוצעת. הדבר עשוי לצמצם את השפעת הנתיב, אך גם להוסיף קריאות לחוזים, עמלות או סיכונים ייחודיים לאסימונים. הצעת מחיר אינה מבטיחה את הביצוע הטוב ביותר בכל הזירות. השוו את הקלט המדויק, הפלט הצפוי, המינימום לקבלה, מסלול המאגרים, פירוט העמלות, הרשת והמועד האחרון. למידע קשור ראו את המדריכים על אישורי אסימונים, עמלות gas ב־Ethereum וגשרים ואסימונים עטופים.
בדקו את הצעת המחיר לפני החתימה והשוו לקבלה לאחר מכן
לפני החתימה, בדקו את הרשת ואת כתובות חוזי האסימונים; כמות הקלט; הנתיב ועומק המאגר; השפעת המחיר שמוצגת; הפלט הצפוי והמינימום לקבלה; הגדרת ההחלקה; מועד התפוגה; עמלות המאגר, הממשק והרשת; ואזהרות על האסימון. אם הפלט נראה נמוך באופן חריג, השוו קלט היפותטי קטן יותר או נתיב אחר. אם העסקה נכשלת, בדקו את הסיבה לפני שליחה חוזרת. ניסיון שנכשל עשוי עדיין לגרור עלות רשת, בהתאם לשרשרת ולמסלול העסקה.
לאחר הביצוע, השוו את כמויות האסימונים בפועל בקבלת העסקה להצעת המחיר ולמינימום לקבלה, ותעדו את הנתיב, העמלות, עלות הרשת והשעה. אל תתייחסו למינימום כאל הפלט הצפוי ואל תניחו שעסקה מוצלחת הייתה מוגנת מכל ביצוע לרעה. החישוב במאמר זה משתמש במאגר מכפלה קבועה ללא עמלה. נזילות מרוכזת, נתיבים מרובי שלבים, מסי אסימון, מחירי אורקל וסדר עסקאות ייחודי לשרשרת עשויים להוביל לתוצאות אחרות.
הבחינו בין הגנה על קלט קבוע לבין הגנה על פלט קבוע
בדוגמה הקודמת הקלט קבוע על 10,000 USDC ומוגדר מינימום לכמות ETH שתתקבל. הקלט אינו משתנה; אם התוצאה נמוכה מהגבול, ייתכן שהביצוע יידחה. בהחלפה עם פלט קבוע מציינים תחילה את כמות ה־ETH הרצויה. כמות ה־USDC הדרושה עלולה לעלות מעבר להערכה, ולכן נהוג להגדיר קלט מרבי. מסמכי המפתחים של Uniswap מבחינים בין פלט מינימלי לקלט קבוע לבין קלט מרבי לפלט קבוע.
לכן תצוגה של 1% אינה מגינה על אותה כמות בכל החלפה. בדקו אם הקלט או הפלט קבועים, איזה אסימון קובע את הגבול התחתון או העליון, והאם האגרגטור כלל את הנתיב והעמלות בהצעת המחיר. מינימום לקבלה הוא תנאי ביחידות אסימון, לא הבטחה לערך דולרי. אם מחיר השוק של האסימון המתקבל יורד באותו זמן, ערכו בדולרים עשוי להשתנות גם כשההחלפה עומדת במינימום. השלמת העסקה אינה אומרת שמחיר הצעת המחיר הובטח.
שאלות נפוצות
Q1האם השפעת מחיר והחלקה הן אותו דבר?
לא. השפעת מחיר נובעת מההזמנה שלך ביחס לנזילות המאגר. החלקה היא ההפרש בין הצעת המחיר לביצוע הסופי לפי אמת המידה של הממשק.
Q2האם הגדרת החלקה של 1% פירושה שאפסיד 1%?
לא. בדרך כלל היא קובעת גבול ביצוע ביחס להצעת המחיר. התוצאה יכולה להיות טובה יותר, ההחלפה יכולה להתבטל או שהביצוע יהיה סמוך לגבול המותר.
Q3האם סבילות צרה יותר עוצרת התקפות sandwich?
היא יכולה לצמצם את התוצאות שהעסקה מקבלת, אך אינה מסירה MEV או תנועות שוק רגילות. גם לנתיבים פרטיים יש היקף ותנאים משלהם.
מקורות וקריאה נוספת
דיווח על בעיה
נכין אימייל עם קישור למאמר הזה. Mark יקבל את הדיווח רק לאחר שתשלחו אותו
בדיקה מהירה
סיימת לקרוא? בדוק את עצמך ב־3 שאלות
שאלה 01
מה מודדת השפעת מחיר בהחלפת AMM?
בחר תשובה כדי לראות את ההסבר