Rage quit ב-Compound Governor: היכן נשברת המשילות
מחזיקי הטוקנים מגלים את הבעיה לא בשלב ההצבעה, אלא אחריו: החלטה שנויה במחלוקת עוברת, האוצר ננעל לצורך ביצוע, וכבר אי אפשר לצאת מהפרוטוקול בתנאים סבירים.
Compound Governor אינו מספק מנגנון rage quit — יציאה מה-DAO עם החזרת חלקו של היוצא — ולכן המיעוט החולק נותר כלוא במערכת שבה קולו כבר אינו מכריע דבר. משילות הפרוטוקול הופכת למשחק סכום אפס: מי שהשיג רוב שולט בהון המשותף, והשאר אינם יכולים לא להשפיע ולא לצאת.
המחיר של כשל כזה הוא מדיד. כל הצבעה שנויה במחלוקת מפלגת את הקהילה, נזילות טוקן המשילות יורדת על רקע ציפיות להחלטות רוב נוספות, והאוצר מאבד משוויו מהר יותר מקצב ביצוע ההצעות שהתקבלו.
מחזיקים שהיו רוצים פשוט לקחת את חלקם ולצאת נאלצים למכור את הטוקן בשוק הפתוח — עם החלקה (slippage) ונגד הלחץ שהם עצמם מפעילים על המחיר. ככל שהפוזיציה גדולה יותר, כך היא מאבדת מערכה ביתר שאת ברגע היציאה.
בעיה נפרדת היא הלגיטימיות. כאשר לחולקים אין מוצא, ההצבעה מפסיקה לשקף תמיכה אמיתית במדיניות: חלק מהמשתתפים מצביעים לא בעד ההחלטה, אלא נגד השתלטות על המשילות.
סף הקוורום מושג פורמלית, אך אין מאחוריו קונצנזוס — וההצבעה השנויה במחלוקת הבאה עוברת ביתר קלות, משום שהמתונים כבר עזבו או מכרו את הטוקן. הפרוטוקול נסחף לכיוון זה שיש לו יותר קולות ברגע נתון, ולא זה שיש לו אינטרס ארוך טווח גדול יותר.
Rage quit סוגר בדיוק את הפער הזה: מחזיק חולק יוצא מה-DAO, לוקח עמו חלק יחסי מהאוצר, במקום להישאר בן ערובה להחלטת הרוב. יש להטמיע את המנגנון ב-Compound Governor כך שהיציאה לא תפתח פרצה לתקיפת האוצר ולא תאפשר למשוך נכסים ברגע ביצועה של הצעה שכבר התקבלה. להלן נבחן כיצד הדבר נסגר ברמת החוזים והפרמטרים.
מכניקת rage quit: מצבי יציאה והמגבלות שלהם
יציאה רכה עם תקרה על בלוק
המשתתף יוזם יציאה, החוזה שומר את חלקו בקופה ומוציא אותו בחלקים — למשל, לא יותר מחלק מסוים מהמאגר בכל מרווח. הפרוטוקול לא מאבד נזילות בבת אחת, שאר המשתתפים לא רואים צניחה במחיר הטוקן המצביע. מגבלה: היציאה נמשכת על פני כמה תקופות, ובירידה חדה בפעילות המשתתף מקבל פחות ממה שציפה בכניסה.
יציאה מיידית עם חישוב לפי הקופה הנוכחית
החלק מחושב לפי הנוסחה «יתרת הקופה × חלק הטוקנים» ברגע העסקה. זהו המצב הצפוי ביותר למשתתף — הוא רואה את הסכום המדויק לפני החתימה. הצד השני: אם מחזיק גדול יוצא ראשון, הקופה נשחקת, והשאר מקבלים פחות באותו היקף זכויות. כאן חיונית הגנת המיעוט — תקרה על חלקה של יציאה אחת בתקופה.
יציאה עם חלוקת נכסים לא נזילים
כאשר הקופה מחזיקה לא רק סטייבלקוינים, אלא גם פוזיציות במאגרים, יציאה «בחלקי נכסים» דורשת הערכה. החוזה קובע את השווי דרך אורקל או סנאפשוט ומוציא סט פרופורציונלי. הדיוק תלוי באיכות האורקל: פער בין ההערכה למכירה בפועל — מקור המחלוקות העיקרי.
פורק עם חלוקה מלאה של הקופה
האפשרות הקיצונית: קבוצה לא מרוצה יוצאת כולה, לוקחת חלק פרופורציונלי ופורשת חוזה משלה. זה יקר בגז ודורש סנאפשוט מתואם, אך מסיר את הסיכון העיקרי — חסימת רצון הרוב. מיושם לעתים רחוקות, כאשר המצבים הרכים מוצו.
| אפשרות | מתי מתאימה | מגבלות |
|---|---|---|
| יציאה רכה עם תקרה | קופה גדולה, פעילות גבוהה | נמשכת בזמן, תלויה בשער |
| מיידית לפי הקופה הנוכחית | קופה נזילה, חלקים קטנים | פגיעה מיציאת מחזיק גדול |
| חלוקת נכסים | קופה לא נזילה, מאגרים | דיוק הערכה דרך אורקל |
| פורק עם חלוקה | סכסוך בין רוב למיעוט | יקר, נדרש סנאפשוט |
מיושם מעל Compound Governor — מרחיבים את מודולי ההצבעה והקופה הסטנדרטיים, בלי לשבור תאימות לחוזים שכבר נפרסו.
כיצד אנו מטמיעים rage quit ב-Compound Governor
Rage quit אינו חוזה נפרד, אלא תוספת מעל ללוגיקת Governor: עליו להתקיים במקביל באופן תקין עם תור ההצעות, השהיית הביצוע וסף הקוורום, אחרת יציאת משתתף שוברת את ההצבעה על החלטות שכבר התקבלו.
לכן הטמעת rage quit מתחילה לא בקוד, אלא בניתוח התצורה הנוכחית: אילו פרמטרים מוטבעים ב-Governor, כיצד מחושב משקל ההצבעה, היכן מאוחסנים הטוקנים הנעולים. לאחר מכן — שלב אחר שלב, עם תיעוד התוצאה בכל שלב.
- ביקורת Governor. אנו מתעדים את הפרמטרים הנוכחיים: השהיית הביצוע, סף הקוורום, חלון ההצבעה, לוגיקת הביטול. אנו מתעדים אילו מצבי הצעה כבר תפוסים — rage quit לא אמור להתנגש איתם במזהים.
- תכנון היציאה. אנו מגדירים מה בדיוק מוחזר למשתתף בעת היציאה: חלק בבריכה, תגמולים שנצברו, שחרור טוקנים. אנו מפרטים כיצד היציאה משתקפת בקוורום של הצעות פעילות.
- הגדרת rage quit. אנו מיישמים פונקציית יציאה עם בדיקת הרשאות והגנה מפני קריאה חוזרת. אנו מגבילים את חלון היציאה כדי שמשתתף לא ייצא בין הגשת ההצעה לביצועה.
- הרכבה ובדיקות מקומיות. אנו מריצים תרחישים: יציאה לפני ההצבעה, במהלכה, לאחר קבלתה. אנו בודקים שהקוורום מחושב מחדש כראוי, ושתור ההצעות אינו נחסם.
- רשת בדיקה. אנו פורסים העתק מלא של התצורה ומריצים את אותם תרחישים עם השהיות אמיתיות. אנו בוחנים את ההתנהגות ביציאה בו-זמנית של מספר משתתפים.
- מסירת המנגנון. אנו מוסרים חוזה עובד, פרמטרים, תרשים אינטראקציה עם Governor והוראות עדכון. אנו מתעדים אילו ערכים ניתן לשנות ללא ביקורת חוזרת.
נקודת המפתח היא בשלב 5: דווקא רשת הבדיקה מראה כיצד rage quit מתנהג תחת עומס והאם הוא יוצר חלון למניפולציה בהצבעה. ללא שלב זה, המנגנון יוצא לרשת הראשית ללא בדיקה.
במה rage quit שונה מיציאה רגילה מהפול?
יציאה רגילה מהפול היא פעולה עם טוקני הצבעה: המשתתף שורף את טוקני ה-governance שלו ולוקח חלק יחסי מהפול המשותף לפי השער הנוכחי. המנגנון צפוי וסימטרי: מי שיוצא מאבד את זכות ההצבעה, אך מקבל בחזרה נזילות.
rage quit בנוי אחרת — הוא קשור לא לטוקן, אלא להחלטה שנויה במחלוקת שכבר התקבלה או שעומדת לעבור דרך Compound Governor.
ההבדל המרכזי של rage quit הוא ההצמדה להצעה ספציפית ולחלון זמן. כל עוד ההחלטה לא בוצעה, משתתף שאינו מסכים איתה יכול לצאת לפי המחיר שלפני קבלתה.
זה מגן מפני מצב שבו הרוב דוחף שינוי שמפחית את ערכם של מניות המיעוט: במקום לשרוף את טוקני ההצבעה ולקבע הפסד, המשתתף מחזיר את חלקו בנכסי הפול לפי שווי הוגן. יציאה רגילה לא נותנת אפשרות כזו — אין בה הצמדה להצבעה, אין חלון ואין הגנה מפני החלטה לא חיובית.
שריפת טוקנים קיימת בשני המקרים, אך המשמעות שונה. ביציאה רגילה השריפה היא חישוב סופי: הטוקן מבוטל, החלק מוחזר. ב-rage quit השריפה היא תנאי ליציאה, ולא מטרתה: המשתתף מוותר על זכות ההצבעה ספציפית להצעה השנויה במחלוקת, והחזרת החלק מחושבת לפי מצב הפול לפני ביצועה.
לכן rage quit דורש שה-Governor והפול יהיו מקושרים ברמת החוזים — אחרת לא ניתן לסנכרן את החלון עם מחזור החיים של ההצעה.
מנקודת המבט של מנגנון היציאה, ההבדל מתבטא בשלושה מקומות: רגע היציאה (לפני ביצוע ההחלטה, ולא בכל רגע), בסיס חישוב החזרת החלק (מצב הפול לפני ההחלטה השנויה במחלוקת) וגורל ההצבעה (ויתור על השתתפות בהצבעה ספציפית, ולא יציאה כללית מהממשל). אם החוזים אינם מקושרים, rage quit מתנוון ליציאה רגילה — ומאבד את כל משמעותו כהגנה על המיעוט.
מבחינת האינטגרציה משמעות הדבר היא שלא די להוסיף פונקציית יציאה: יש לסנכרן את מצב ה-Governor עם הפול, להגדיר נכון את החלון ולהגן על חישוב החזרת החלק מפני מניפולציות ברגע ההצבעה.
קייס: rage quit עצר את הפיצול בניהול
הפרויקט — אוצר מבוזר עם ניהול דרך Compound Governor. מחלוקת סביב שינוי העמלה פיצלה את המחזיקים לשני מחנות: למי שלא הסכים לא הייתה דרך יציאה מלבד מכירת הטוקן בשוק הפתוח, וזה לחץ על השער והעצים את הסכסוך.
כל סוגיה שנויה במחלוקת הפכה למצור של ימים רבים: קוורום נאסף בקושי, חלק מהמשתתפים הגדולים просто הפסיקו להצביע, והאוצר נחסם עד לסגירת ההצבעה.
מה שינו
הוספנו ל-Governor מנגנון rage quit — זכות לצאת מהפרוטוקול עם חלק מהאוצר לפני כניסת ההחלטה השנויה במחלוקת לתוקף. תנאי היציאה, החלון וחישוב החלק מוטבעים בחוזה ומבוצעים ללא בורר. בנוסף כיווננו את ספי הקוורום ואת השהיית הביצוע כך שהיציאה לא תפתח חלון לתמרון בשער.
מדדים לפני ואחרי
| מדד | לפני | אחרי |
|---|---|---|
| שיעור המשתתפים שעזבו את הפרוטוקול ברבעון | גבוה, בלתי נשלט | ירד פי כמה |
| זמן תיאום החלטה שנויה במחלוקת | שבועות | ימים |
| חסימת האוצר בזמן המחלוקת | מלאה | הוסרה |
| שימור מחזיקים גדולים | ירד | התייצב |
הפיצול הפסיק להיות הרסני: מי שלא הסכים יצא לפי הכללים, ולא דרך מכירה בפאניקה, והאוצר שמר על נזילות. המנגנון בנוי על Compound Governor — זהו תקן שניתן לאמת ותואם לחוזי הניהול הקיימים, ולכן ההגירה לא חייבה לכתוב מחדש את לוגיקת ההצבעה.
מה אם משתתף יצא ממש לפני ההצבעה? חלון היציאה מוגבל ומקושר לרגע הגשת ההצעה, ולכן אי אפשר להשפיע על תוצאת ההצבעה בדיעבד. איך זה משפיע על הקוורום? הסף מחושב מחדש מההרכב העדכני של המחזיקים, אחרת לאחר יציאה המונית החלטות היו מפסיקות לעבור.
ספקות לפני הטמעה: תאימות, חזרה אחורה, הרשאות
לפני אישור העבודה, הלקוח בדרך כלל בודק שלושה דברים: האם rage quit ישבור את לוגיקת ההצבעה הקיימת, האם ניתן לבטל את השינויים, ומי יקבל את ההרשאות על החוזים לאחר המסירה. אלו שאלות לגיטימיות — אנחנו עונים עליהן לפני תחילת העבודה, ולא אחרי.
מה יקרה אם מנגנון rage quit יתנגש עם פרמטרים שכבר הוגדרו ב-Governor?
לא תיווצר התנגשות אם ספי הקוורום וזמני ההשהיה של הביצוע הוגדרו תוך התחשבות ביציאת משתתף. אנחנו מריצים תרחישים על פורק של הרשת הראשית: הצבעה, יציאת מחזיק טוקנים, הצעה חוזרת — ומתעדים שהמצב נשאר עקבי. אם הפרמטרים אינם תואמים, אנחנו מציעים להתאים אותם לפני הדיפלוי, ולא לתקן בדיעבד.
מה אם לאחר ההטמעה יידרש ביטול? כל שינוי עובר דרך חוזה-עטיפה נפרד, ולכן חזרה ללוגיקה הקודמת היא החלפת כתובת, ולא שכתוב קוד. אנחנו שומרים את הגרסה הקודמת ומתארים את הליך הביטול בתיעוד.
כיצד מופרדות ההרשאות והתפקידים? הרשאות מנהל, מפעיל וצופה מוענקות בנפרד דרך תפקידי ניהול. את מפתחות המנהל ניתן להעביר לארנק מולטיסיג של הלקוח — אנחנו לא שומרים על שליטה בלעדית לאחר המסירה.
הלקוח מקבל לידיו:
- קוד המקור של החוזים עם הערות ותרשים קשרים;
- קונפיגורציית פרמטרים של Governor: קוורום, זמני השהיה, ספי יציאה;
- מדיניות תפקידים והרשאות עם תיאור של כל רמה;
- הליך ביטול שינויים שלב אחר שלב;
- דוח על הרצת תרחישים ברשת בדיקה;
- הוראות תפעול וניטור עבור הצוות שלכם.
תארו את קונפיגורציית ה-Governor שלכם ואת הדרישות לתפקידים — נחזור עם הערכה ותוכנית הטמעה של rage quit בהתאמה לסטאק שלכם.
לוחות זמנים ליישום rage quit לפי שלבים
יישום rage quit ב-Compound Governor אינו תיקון אחד, אלא מכלול של שינויים בחוזים Governor, Timelock וטוקן הממשל. לכן לוחות הזמנים תלויים לא בנפח הקוד, אלא במידת ההתאמה האישית הנדרשת: מנגנון יציאה סטנדרטי לעומת לוגיקה מותאמת אישית של חלוקת נכסים וחישוב קוורום.
להלן לוחות זמנים משוערים לפי שלבים, ללא הצמדות לתאריכים קלנדריים: הם תלויים במוכנות רשת הבדיקה ובמהירות תיאום הפרמטרים.
מדוע לוחות הזמנים משתנים. שלב התכנון עלול להתארך אם נדרשת לוגיקת חלוקה לא סטנדרטית — למשל, יציאה פרופורציונלית בהתחשב בטוקנים נעולים או התחשבות בהאצלת הצבעות. כאן חשוב לתעד מראש מה בדיוק נחשב ל"חלק" של המשתתף בעת היציאה, אחרת הבדיקה תגלה אי-התאמות כבר ברשת הבדיקה.
מה מאיץ את היישום. סביבת בדיקה מוכנה עם Governor וטוקן פרוסים חוסכת 2-3 ימים בשלב הביקורת. תנאי הפעלה מתוארים בבירור של rage quit — סף החלק, תקופת ההמתנה, מגבלות זמן — מקצרים את מחזור תיאום הפרמטרים.
מה מאט. שינויים ב-Timelock נוגעים בכל הפעולות האדמיניסטרטיביות של הפרוטוקול, לכן כל תיקון צריך להיבדק להתאמה עם התפקידים הקיימים. אם בפרוטוקול יש אינטגרציות חיצוניות התלויות ב-Governor, מתווסף שלב בדיקת העמידות שלהן למנגנון היציאה החדש.
תארו את התצורה שלכם — נחזור עם הערכה ותוכנית לכל שלב.







