מדוע מפול פרטי הפך לדרישת בסיס
מפול פרטי (private mempool) הוא דרך לשלוח עסקה בעקיפין לתור הציבורי, שבו כל מי שרוצה רואה את תוכנה. במצב רגיל, עסקה חתומה מגיעה תחילה למאגר ההמתנה הפתוח ונשארת שם עד שהיא נכללת בבלוק.
בין השליחה להכללה חולפות שניות, לעיתים דקות, וכל אותו זמן אפשר לקרוא ולנתח את הרכב העסקה, הסכום והחוזה שאליו היא מכוונת.
המחיר של פתיחות כזו הוא שהתור נקרא לא רק על ידי הנמען. צופים מזהים החלפות גדולות ובונים סביבן עסקאות משל עצמם — קנייה לפניכם ומכירה מיד אחריכם. זה עובד כמו הקדמה של עסקאות: אתם מבוצעים במחיר גרוע יותר, וההפרש נלקח על ידי מי שהספיק לעמוד בתור לפניכם.
ככל שהנפח גדול יותר, כך המחיר בפועל מתרחק יותר מזה שחישבתם בעת החתימה, וההגנה מפני חילוץ ערך במצב ציבורי פשוט אינה קיימת.
מפול פרטי סוגר את החלון הזה. העסקה נשלחת ישירות למי שאוסף את הבלוק, תוך עקיפת ההפצה הפתוחה: עד לרגע ההכללה איש אינו רואה אותה מלבד המבצע. עסקאות נסתרות נחשפות בדיוק כאשר הבלוק כבר נאסף — אי אפשר טכנית לשנות את הסדר ולהיכנס לצידו, משום שהתוכן נודע מאוחר מדי.
לשיטה יש תנאים. נדרש מסלול מהימן: אם צומת השולח ידליף את התוכן, הפרטיות תתאפס. ייתכנו פשרות בזמן ההכללה וסיכון שהאוסף הנבחר לא יקבל את העסקה — אז נדרשת חזרה תקינה לערוץ הרגיל בלי לאבד כספים. אנו מפרטים כיצד זה נסגר ברמת הניתוב, כללי הרכבת הבלוקים ובקרת הגישה לזרם העסקאות.
אפקט מדיד משליחה מאובטחת
שליחה מאובטחת נמדדת לא בתחושת שקט אלא במדדים שנראים בניטור: שיעור העסקאות המוצלחות, פיזור הזמן עד לאישור וסטיית המחיר בפועל מהמחיר המחושב. מפול פרטי הוא תקן ש-Flashbots הייתה הראשונה ליישם בהיקף רחב, והאפקט שלו נמדד בהשוואה של מדדים אלה לפני ואחרי.
שיעור העסקאות הכושלות
במאגר פתוח חלק מהעסקאות נכשלות בגלל הכנסה של אחרות לפניכם: המסלול נדחק ומופעל מגבלת מחיר. כאשר הבקשה נשלחת ישירות לוולידטורים, נותרות רק דחיות הקשורות בהיגיון של החוזה עצמו — שיעור העסקאות הכושלות יורד פי כמה, ואין עוד צורך להביא אותו בחשבון ברזרבה על הלימיטים.
הפסדים בניתוב
את הפער בין המחיר שהראה החישוב לזה שהתקבל בביצוע משלם השולח במאגר פתוח. שליחה פרטית מקטינה את הפער הזה לעמלת המסלול — אין בו עוד פרמיה על האסטרטגיה של אחרים.
מהירות וצפיות האישור
החלפת עסקה בעמלה גבוהה יותר לצורך האצה נדרשת בתדירות נמוכה יותר: הבקשה אינה מתחרה בתור המשותף, ופיזור הזמן עד להכללה בבלוק מצטמצם. אפשר לתכנן פעולות לפי זמן, ולא «לפי המזל».
יציבות השליחה וסוג הכשלים שנעלם
כאשר הרשת עמוסה, העסקה לא נתקעת ולא מתבטלת בהמוניהן — השליחה נשארת צפויה. נעלם סוג שלם של כשלים: פרונטראנינג, סנדוויץ' וחשיפה של אסטרטגיה שלא בוצעה לפני פרסומה.
מפול פרטי: השוואה של גישות לניתוב
הניתוב קובע מי יראה את חתימת העסקה לפני הכללתה בבלוק. ברגע שהיא מגיעה למפול הציבורי, בוטים של חיפוש מספיקים לקרוא אותה ולבנות מחדש את הבלוק לטובתם — בהכנסה לפניה או אחריה. לכן בחירת המסלול היא פשרה בין מהירות המסירה, פרטיות התוכן וצפיות ההכללה.
| אפשרות ניתוב | מתי מתאימה | מגבלות הגישה |
|---|---|---|
| ישירה דרך צומת מהימן | זרם עסקאות סדיר, נדרשת השהיה צפויה | הצומת רואה את התוכן; אי-זמינות שלו עוצרת את השליחה |
| שליחה בקבוצות (מקבצת) | פעולות המוניות: תשלומים, משיכות, מיגרציות | המתנה להצטברות המקבץ; בעת כשל מתבטל כל המקבץ |
| תצורה היברידית | עומס מעורב, פעולות קריטיות ורקעיות | יקרה יותר בתחזוקה: שני מסלולים, כללים שונים לניסיון חוזר ולחזרה |
בפועל לא קובעים את המסלול אחת ולתמיד. עסקאות קריטיות נשלחות ישירות דרך צומת מהימן, רקעיות — במקבץ, ותצורה היברידית פועלת כבסיס עם מעבר בין המסלולים כאשר אחד מהם מדרדר.
את ההחלטה מקבלים לפי מדדים: שיעור ההכללה בניסיון הראשון, ההשהיה עד להגעה לבלוק ושיעור העסקאות שבכל זאת עברו למפול הציבורי.
המגבלות הדדיות: ככל שהפרטיות גבוהה יותר, כך יש פחות אפשרויות לשנות את המסלול בעת כשל. לכן בונים את התצורה בהתאם לפרופיל העומס, ולא לפי העיקרון של «המסלול המוגן ביותר לכולם».
סדר ההטמעה של שליחה מאובטחת
סדר ההטמעה של שליחה מאובטחת אינו התקנה של מודול, אלא בנייה מחדש של נתיב העסקה מהחתימה ועד ההכללה בבלוק. להלן השלבים שאנו עוברים יחד עם צוות הלקוח: מאודיט של תרשים השליחה ועד למסירה לתפעול עם נהלים ומדדים.
- אודיט של תרשים השליחה. אנו מרכיבים כיצד כיום נוצרות, נחתמות ונשלחות העסקאות: צמתים, ממסרים, ארנקים, מי רואה את החתימה לפני ההגעה לבלוק. התוצאה — מפה של נקודות הדלפה ורשימת פעולות הפגיעות לפרונטראנינג.
- תכנון המסלולים. אנו מפרידים בין הזרמים: אילו פעולות עוברות דרך מפול פרטי, ואילו מותר להשאיר ציבוריות. לכל מסלול אנו קובעים עדיפות, זמן המתנה להכללה והתנהגות בעת אי-זמינות של הערוץ.
- הגדרת ערוצים ומדיניות גישה. מפתחות, נקודות קצה, הפרדת הרשאות, בידוד מהמאגר הציבורי, לימיטים לפי שולח. בנפרד — כללים לשליחה חוזרת, כדי שהעסקה לא «תתרבה» בשני המאגרים.
- בדיקה ברשת בדיקה. אנו מריצים תרחישים: מסלול שגרתי, כשל של ממסר, עסקה מתחרה על אותו נכס, שליחה חוזרת. אנו מחשבים את שיעור העסקאות שהגיעו לבלוק היעד בסדר המצופה.
- בדיקת המסלולים על נתונים אמיתיים. אנו משחזרים עסקאות קודמות ומשווים את מחיר הביצוע לפני ואחרי שינוי תרשים השליחה — הפער מראה היכן המסלול עוד דולף.
- מסירה לתפעול. אנו מוסרים תצורות, תרשים מסלולים, נוהל פעולה בעת כשלים, דשבורדים והתראות. ובנוסף — חזרה מתועדת למסלול הציבורי, למקרה שהערוץ מדרדר.
ארטיפקטים ונהלים שתקבלו
הטמעה של מפול פרטי אינה רק שירות העברה פועל, אלא גם חבילת מסמכים שלפיהם המערכת מתקיימת לאחר המסירה. אנו קובעים את תצורת המסלולים, התפקידים וכללי הגישה, סדר רוטציית המפתחות וטיפול בתקלות, כדי שהתפעול לא יהיה תלוי במהנדס מסוים. להלן — רשימה מלאה של ארטיפקטי ההטמעה שנשארים אצלכם.
- תצורות מסלולים — כיצד העסקה מגיעה לערוץ הפרטי, אילו צמתים משתתפים, היכן מנותקת השליחה הציבורית וכיצד המסלול חוזר אחורה.
- תרשימי זרימה — הנתיב מחתימת הלקוח ועד ההכללה בבלוק, עם סימונים באיזה שלב ולמי נחשף התוכן.
- מדיניות גישה ותפקידים — מי רואה את גוף העסקה, מי משנה מסלולים, מי מוציא צומת מהערוץ; גישה לפי עיקרון ההרשאה המינימלית.
- נוהל תפעול — סט מדדים (השהיה, שיעור הדחיות, פער מול הערוץ הציבורי), פעולות תורנות וסף המעבר של הערוץ למצב גיבוי.
- נהלי רוטציה של מפתחות חתימה וגישה, כולל סדר ביטול והחלפה בלי לעצור את קליטת העסקאות.
- תיעוד אינטגרציה — פורמטים של בקשות ותשובות, קודי שגיאה, דוגמאות קריאה עבור הצוות שלכם.
- תוכנית טיפול בתקריות וחזרה לאחור — נקודות ביקורת של התצורה, סדר החזרה לשליחה הציבורית, קריטריונים לסיום העבודה.
- תרחישי קבלה — בדיקות המאשרות שתוכן העסקה אינו דולף לפני ההכללה בבלוק, ועסקאות מקדימות אינן משתלטות על סדר הביצוע.
מקרה בוחן: כיצד הסרנו התקפות סנדוויץ' בניתוב
הלקוח — אגרגטור נזילות שהרכיב מסלול עסקה דרך כמה מאגרים. הבקשות נשלחו למפול הציבורי, שם בוטים ראו אותן לפני ההכללה בבלוק ועטפו אותן בצמד סנדוויץ': קנייה לפני הבקשה, מכירה אחריה. שיעור העסקאות שהוקדמו הגיע ל-11%, והפסדים בלתי מתוכננים כילו כ-3% מהנפח של כל מסלול גדול.
העברנו את הביצוע למפול פרטי: הבקשה אינה מפורסמת במאגר הפתוח, אלא נשלחת ישירות לאוסף הבלוק ונחשפת רק ברגע ההכללה. המסלול נבנה מחדש לפי מצב המאגרים העדכני, ולא לפי המצב ברגע השליחה — אחרת ההגנה מפני הקדמה מוחלפת בסליפג'. בנפרד הגבלנו את חלק המסלול שמותר לבצע ברגל אחת, כדי שחשיפה חלקית לא תיתן לבוט נקודת אחיזה.
מדדים לפני ואחרי
| מדד | לפני | אחרי |
|---|---|---|
| שיעור העסקאות שהוקדמו | 11% | 0,4% |
| הפסדים בלתי מתוכננים במסלול | ~3% מהנפח | 0,2% |
| זמן אישור | ~40 שניות | ~24 שניות |
השווינו את המדידות עם מדידות פומביות של פעילות MEV — הפערים בשיעור ההקדמות נותרו בגבולות טעות התצפית.
תוצאת ההטמעה: צמדי סנדוויץ' חדלו להיות אירוע סדיר, הצמצום בהפסדים נשמר לאורך נפח גדול ואינו נראה כאפקט חד-פעמי. זמן האישור התקצר, משום שהבקשה אינה ממתינה עוד עד שייווצר סביבה צמד: האוסף מקבל אותה מיד ומכליל אותה בבלוק הקרוב.
מה לעשות אם העסקה כבר נכנסה לתור הציבורי?
ברגע שהעסקה נמצאת בתור הציבורי, את תוכנה רואים כל הצמתים והצופים, ועד להכללה בבלוק כל אחד יכול ליירט אותה. מחיר הטעות אינו רק רווח שהוחמץ: הכוונה נחשפה, וההגנה שנבנתה על הסתרה מפסיקה לעבוד.
שליחה חוזרת מצילה במקרה אחד: העסקה לא הגיעה לרשת או שפג תוקף חייה בתור. אם היא כבר במפול, שליחה חוזרת לא משנה דבר — הצומת מזהה כפילות לפי החתימה ופוסל אותה, וזמני האישור אינם זזים. מה שכן עובד: להעביר את הפעולה דרך מפול פרטי — מסלול שבו העסקה אינה נכנסת להפצה ציבורית.
החלפת עסקה נעשית לפי כללי הרשת, ולא לפי רצון השולח: הגרסה החדשה שומרת על אותו מספר סידורי של החשבון ונותנת תוספת עמלה ניכרת, אחרת הצומת ידחה אותה. מתחת לסף, ההחלפה נזרקת בשקט, ואתם חושבים שהפעולה הואצה בעוד הגרסה הישנה תלויה לה בשקט בתור. לפני ההחלפה אנו בודקים דרך הצומת שלנו שהעסקה המקורית טרם אושרה.
את הסיכון השיורי אנו מעריכים בכנות: המידע כבר דלף. כל עוד חלק מספיק מהצמתים לא קיבל את ההחלפה, הגרסה הישנה נשארת תקפה ועלולה להיכנס לבלוק ראשונה. איש אינו מבטיח זמני אישור, ולכן את החלון בין הגילוי להחלפה אנו מודדים בשניות.
התוכנית למקרה כשל נכתבת לפני התקרית. בה נקבע: איזה שירות חותם ושולח את העסקאות, לאן נשלחת התראה על פעולה תקועה, איזו תוספת עמלה אנו מחשיבים כמקסימלית, ואחרי איזה טיימאאוט אנו מרכיבים את העסקה מחדש. סעיף נפרד — כיצד אנו משווים מול יומני הצומת, כדי לא לשלוח החלפה שנייה על גבי זו שכבר התקבלה.
ספקות טכניים ומגבלות הגישה
מפול פרטי אינו הופך את העסקה לבלתי נראית — הוא מצמצם את המעגל של אלה שרואים אותה לפני ההכללה בבלוק. המחיר — אמון במפעיל השליחה הפרטית, בשירותים ברמת Flashbots Protect: הצומת יודע את תוכן הקריאה, את החתימה ואת כתובת השולח. מודל האיומים עובר מפרונטראנינג «לעיני כל» למדיניות הלוגים והגישות של ספק מסוים.
התאימות מוגבלת לא על ידי החוזה, אלא על ידי הארנק והקליינט. החוזה מקבל קריאה רגילה עם gas ו-nonce מקובלים, ואת המסלול בוחר הצד החותם. אם האפליקציה, ארנק החומרה או הארנק החכם לא יודעים להעביר את העסקה לערוץ פרטי, היא תצא באופן ציבורי — וההגנה לא תפעל.
האם זה תואם לחוזים שלנו?
ברמת הביצוע — כן: החוזה רואה קריאה סטנדרטית, ואין צורך בתמיכה נפרדת. יוצאים מן הכלל — סוואפים מקבצים, מולטיקולרים וארנקים חכמים עם היגיון חתימה משלהם: שם את המסלול קובע מודול הריליי, והוא נבדק בנפרד.
מה יקרה אם המסלול הפרטי אינו זמין?
בלי התנהגות מוגדרת כברירת מחדל העסקה נתקעת בתור. אנו מגדירים טיימאאוט ופולבק — שליחה חוזרת דרך הרשת הציבורית עם העלאת עמלה; עבור פעולות רגישות לזמן זהו תרחיש כשל חובה.
מי רואה את הנתונים לפני האישור?
מפעיל השליחה הפרטית ואוספי הבלוקים שאליהם העסקה מועברת לצורך ההכללה. הסתרה אינה שווה לאנונימיות: לאחר הכניסה לבלוק הכתובת, הסכומים והקריאות גלויים. אנו מתעדים את הגבול הזה במודל האיומים לפני תחילת העבודה.
נדון במשימה ונחזור עם הערכה ותוכנית
כדי שההערכה תהיה עניינית ולא משוערת, אנו זקוקים מכם לכמה נתוני פתיחה. הם דורשים שיחה אחת וכמה מסמכים — זה מספיק כדי לחזור עם תוכנית עבודה ולוחות זמנים, ולא עם ניסוחים כלליים.
- תרחיש: אילו עסקאות ולמען מי צריכות להישאר בלתי נראות עד לרגע ההכללה בבלוק.
- המתאר הנוכחי: כיצד בנויים הצמתים, מי חותם על העסקאות, האם יש סביבה נפרדת לבדיקות.
- מגבלות: מדיניות פנימית, דרישות אודיט וקומפליינס, תפקידים עם גישה למפתחות.
- מדדי יעד: שיעור העסקאות שעוברות שלא דרך המפול הציבורי, והזמן המותר עד להכללה.
- אחראים: מי מאשר החלטות ארכיטקטורה ומי מקבל את התוצאה בקבלה.
לאחר השיחה נשלח חבילת מסמכים שאפשר לקבל על פיה החלטה בלי הבהרות נוספות — בה נראים מיד היקף העבודה, לוחות הזמנים והצעד הבא.
- היקף העבודה לפי שלבים עם גבולות: מה אנו עושים ומה נשאר בצד שלכם.
- לוחות זמנים עם נקודות ביקורת — מתי אפשר לראות תוצאה ביניים.
- הערכת עומס העבודה ופיזור לפי שלבים, בלי בלוקים נסתרים.
- מטריצת סיכונים: מה אנו עושים בעת הדלפת מידע על עסקה או כשל של צומת.
- תרשים חזרה למפול הציבורי בלי לאבד עסקאות שכבר נשלחו.
- סדר הקבלה: באילו בדיקות אנו מאשרים שההגנה עובדת.
הצעד הבא — שיחה קצרה לעניין: תארו את המשימה, ונחזור עם הערכה ותוכנית.







