מערכת DAO להצעות: אינטגרציה עם OpenZeppelin Governor

הצעות ב-DAO נתקעות לעיתים קרובות עקב תהליכי הצבעה מורכבים ועמלות גז גבוהות. אנו מפתחים מערכות הצעות ל-DAO המבוססות על OpenZeppelin Governor, ומשלבים אותן עם הטוקנים שלכם תוך הבטחת תאימות לכלים פופולריים. הצוות שלנו מספק פרויקטים סוהר—מארכיטקטורת חוזים חכמים ועד לפריסה ותמיכה שוטפת—כך שהניהול שלכם פועל באמינות ומתרחב עם העסק שלכם.

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1481
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1335
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1034
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1293
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    738
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1031

מערכת DAO להצעות: אינטגרציה עם OpenZeppelin Governor

מבוא

אנו מפתחים מערכות DAO להצעות מאפס או משתלבים עם טוקנים קיימים. בליבה נמצא OpenZeppelin Governor, מסגרת מודולרית לממשל על-רשת התואמת ל-Compound Governor Bravo. רוב פרוטוקולי ה-DeFi—Uniswap, Compound, Gitcoin, ENS—משתמשים בחוזים תואמי Governor. אינטגרציה עם Governor מספקת לא רק ממשל מובנה אלא גם תאימות לכלי אקוסיסטם: Tally, Boardroom, Snapshot. הזמינו פיתוח DAO במפתח—חוזים חכמים ל-DAO בכל מורכבות. הצבעה ללא גז מפחיתה עלויות גז למחזיקי טוקנים ב-90%, מה שחשוב במיוחד כשמחיר Ethereum גבוה.

כיצד פועל מחזור החיים של הצעה?

הצעה עוברת מצבים מוגדרים בקפדנות: ממתינה → פעילה → הצליחה/נכשלה/בוטלה → בתור → בוצעה. מחזור החיים נראה כך:

Создание → [voting delay] → Голосование → [voting period] → Подсчёт → [timelock delay] → Исполнение 

עיכוב הצבעה מגן מפני התקפות flash loan: ההצבעה לא מתחילה מיד לאחר יצירת ההצעה, אלא לאחר 1–2 ימים. במהלך זמן זה, התוקף לא יכול לקנות, להצביע ולמכור טוקנים בבלוק אחד. GovernorVotes קובע את משקל ההצבעה של כל כתובת בבלוק שבו ההצבעה מתחילה באמצעות מנגנון ה-checkpoint של ERC-20Votes. שינויי יתרות לאחר בלוק זה אינם משפיעים על משקל ההצבעה.

פרמטר ערך ברירת מחדל המלצה
עיכוב הצבעה יום אחד 1–3 ימים להגנה מפני flash loans
תקופת הצבעה שבוע אחד 3–7 ימים (תקופה קצרה יותר מפחיתה השתתפות)
סף הצעה 10,000 טוקנים 1% מההיצע במחזור או סף האצלה
קוורום 4% מההיצע הכולל 4–10% מההיצע המואצל, לא הכולל

מדוע אינטגרציה עם Timelock חשובה?

DAO ללא Timelock מאבד הגנה מפני התקפות מיידיות. TimelockController הוא חוזה נפרד שהופך לבעלים של חוזי הפרוטוקול. ה-Governor מעמיד את הביצוע בתור, ולאחר עיכוב (בדרך כלל 48–72 שעות) הביצוע הופך לאפשרי. זה נותן למשתתפים זמן לבדוק את הקוד פעמיים ובמידת הצורך לבטל את ההצעה. Governor ללא Timelock מסוכן פי 25: תוקף יכול לבצע הצעה זדונית מיד לאחר ההצבעה. אנו תמיד שוללים את תפקיד האדמין מהמפרסם, אחרת הם יכולים לעקוף את הממשל.

// Деплой TimelockController
TimelockController timelock = new TimelockController(
    2 days, // minDelay
    proposers, // только Governor может ставить в очередь
    executors, // любой может исполнить (или конкретный адрес)
    admin // после setup admin = address(0), убираем admin права
);
// Governor получает PROPOSER_ROLE
timelock.grantRole(timelock.PROPOSER_ROLE(), address(governor));
// Executor — open (address(0)) или конкретный address
timelock.grantRole(timelock.EXECUTOR_ROLE(), address(0));
// Отзываем admin (важно!)
timelock.revokeRole(timelock.DEFAULT_ADMIN_ROLE(), deployer);

אילו מנגנוני הצבעה ניתן להגדיר?

כברירת מחדל, GovernorCountingSimple סופר בעד, נגד, נמנע. אם יש צורך בהצבעה ריבועית או הצבעה משוקללת, אנו מחליפים מודול זה ביישום מותאם אישית. ניתן לקחת כוח הצבעה לא רק מ-ERC-20Votes אלא גם מ-NFT (ERC-721Votes), טוקנים נעולים (veToken), או שקלול מותאם אישית. אנו תומכים במכניקות הצבעה מותאמות אישית, כגון הצבעה ריבועית או מימון ריבועי.

סוג כוח הצבעה חוזה בשימוש מאפיינים
ERC-20Votes OZ Votes Checkpoints לכל בלוק, תאימות עם Tally
ERC-721Votes OZ Votes הצבעה לפי NFTs ייחודיים, קול אחד לכל טוקן
veToken הצבעה מותאמת אישית עם escrow נעילת הצבעה משוקללת בזמן

קוורום כברירת מחדל מחושב מההיצע הכולל, אבל אם חלק גדול מהטוקנים אינו מואצל, הקוורום הופך לבלתי ניתן להשגה. הפתרון הוא לעקוף את הפונקציה Создание → [voting delay] → Голосование → [voting period] → Подсчёт → [timelock delay] → Исполнение כדי לחשב מההיצע המואצל.

// Пример кастомного quorum от delegated supply
function quorum(uint256 blockNumber) public view override returns (uint256) {
    return totalDelegatedSupply(blockNumber) * 4 / 100;
}

ניתן להגדיר סף הצעה גבוה (1% מההיצע) כדי להגן מפני ספאם, אבל עדיף להשתמש בסף האצלה—כל מחזיק יכול ליצור הצעה אם הם אוספים מספיק נציגים.

כיצד להגדיר הצבעה ללא גז?

הצבעה ללא גז מאפשרת למשתתפים להצביע ללא עלויות גז: חתימת EIP-712 נשלחת ל-relayer, אשר שולח את העסקה. אנו משתלבים עם relayers דרך Gelato או Biconomy. לשם כך, Governor חייב לתמוך ב-meta-transactions—מספיק לרשת את GovernorCompatibilityBravo ולהוסיף דומיין EIP-712. זה מוריד את חסם הכניסה לקהילה ומגביר השתתפות.

שלבי פיתוח מערכת DAO להצעות

  1. ניתוח הארכיטקטורה הקיימת והטוקונומיקה (ERC-20Votes או מותאם אישית).
  2. בחירת מודולי Governor (הצבעה, קוורום, timelock) לפי הדרישות.
  3. פיתוח ובדיקת חוזים חכמים ב-Solidity באמצעות Foundry.
  4. ביקורת אבטחה עם המנתח הסטטי Slither ו-fuzzing עם Echidna.
  5. פריסה לרשת הנבחרת (Ethereum, Polygon, Arbitrum) עם העברת שליטה ל-Timelock.
  6. הגדרת אינטגרציה עם Tally (אוטומטי) ו-Snapshot (איתות off-chain).
  7. הכשרת צוות ותמיכה לשבועיים לאחר הפריסה.

טעויות אינטגרציה אופייניות: שכחת העברת בעלות על חוזי הפרוטוקול ל-Timelock, קוורום שגוי (4% מההיצע הכולל עם 30% שיעור מחזור), היעדר ERC-20Votes בטוקן. אנו מתחשבים בכל הנקודות הללו בשלב התכנון.

מה כלול בעבודה?

אנו מספקים:

  • תיעוד ארכיטקטוני ודיאגרמות.
  • קוד חוזים חכמים ב-Solidity 0.8.x עם בדיקות (Foundry) ואימות פורמלי (Slither, Mythril).
  • אינטגרציה עם Tally (מובנית) ו-Snapshot (איתות off-chain).
  • פריסה והגדרה של TimelockController עם שלילת תפקיד אדמין.
  • הצבעה ללא גז דרך relayers (EIP-712).
  • הכשרת צוות ותמיכה לשבועיים.

אנו נעריך את הפרויקט שלכם תוך 1–2 ימים. צרו קשר כדי לדון בפרטים ולקבל ייעוץ. הזמינו פיתוח מערכת DAO להצעות עם ערובה לאבטחה. מעל 50 פרויקטים של חוזים חכמים שיושמו—אנו מבטיחים ארכיטקטורה אמינה ומאובטחת.