בעיה: קופסה שחורה לאחר פריסה
לאחר פריסת חוזה ברשת הראשית, המשתמשים רואים רק קוד בייט. Etherscan מציג "Contract" במקום שמות פונקציות. פרוטוקולים אחרים לא יקראו לחוזה כזה — מסוכן מדי. חוזה לא מאומת עשוי להכיל דלת אחורית או להיות מוחלף דרך פרוקסי. שגיאות תצורת קומפילציה (גרסה, אופטימיזציה, מטא-דאטה) מובילות לכישלון אימות. אנו פותרים בעיה זו ברמת המערכת: מגדירים את הסביבה, מכינים Standard JSON Input, ועוברים אימות בניסיון הראשון ב-95% מהמקרים.
איך עובד האימות?
חוקר הבלוקים לוקח את קוד המקור ופרמטרי הקומפיילר, מהדר מקומית, ומשווה את קוד הבייט עם מה שברשת. התאמה — החוזה מאומת, קוד המקור מתפרסם. הדרישה העיקרית היא קומפילציה דטרמיניסטית. קומפיילר Solidity, בהינתן נתוני קלט והגדרות זהים, חייב לייצר קוד בייט זהה. אי-התאמה בגרסת הקומפיילר (למשל, 0.8.19 לעומת 0.8.20), דגלי אופטימיזציה (runs: 200 לעומת runs: 999), סדר קבצים, או מטא-דאטה — והאימות נכשל. התיעוד Solidity מתאר מנגנון זה בפירוט.
איך לקצר את זמן האימות פי 3?
השתמשו ב-Foundry במקום להזין פרמטרים ידנית בחוקר. forge verify-contract בונה אוטומטית את Standard JSON Input ושולח אותו ל-Etherscan. לפי הנתונים שלנו, זה מקצר את זמן ההגדרה מ-30 דקות ל-5. הכנו טבלת השוואה של כלים:
| כלי | מהירות הגדרה | תמיכה בפרוקסי | טיפול בספריות |
|---|---|---|---|
| Hardhat hardhat-verify | בינונית (10 דקות) | כן (דרך verify:true) | דורש קישור כתובות |
| Foundry forge verify-contract | גבוהה (5 דקות) | כן (זיהוי אוטומטי) | קישור אוטומטי |
| Sourcify | בינונית (15 דקות) | מוגבלת | דורש hash של IPFS |
עבור חוזים פשוטים, Hardhat מספיק; עבור מורכבים עם פרוקסי וספריות, Foundry מהיר פי 2.
איך אנו מטפלים במקרים מורכבים?
יש לנו 7+ שנות ניסיון בבלוקצ'יין ויותר מ-50 אימותים מוצלחים. התמודדנו עם חוזי פרוקסי (UUPS, Transparent), שרשראות ספריות מורכבות, והלוואות בזק. עבור כל פרויקט אנו מכינים Standard JSON Input — זה מפחית את הסתברות השגיאה לאפס. אם החוזה משתמש במשתני immutable או calldata עם מבנים מורכבים, אנו בודקים ידנית את ארגומנטי הקונסטרקטור. אימות דרך Foundry מקצר את זמן ההגדרה פי 3 בהשוואה להזנת פרמטרים ידנית.
למה אימות חשוב לאבטחה?
חוזה לא מאומת הוא חור שחור למבקרים. שום ביקורת רצינית לא תתחיל ללא סטטוס מאומת. אימות הוא הצעד הראשון לקראת אימות פורמלי וניתוח סטטי (Slither, Mythril). דמיינו: אתם מוצאים באג, אבל החוזה לא מאומת — אתם לא יכולים לתקן ולפרוס מחדש. חיסכון באימות גורם להפסדים של מיליוני דולרים מפריצות. אנו מבטיחים שאחרי העבודה שלנו, החוזה עובר כל בדיקה.
איך להימנע משגיאות אימות נפוצות?
שגיאות טיפוסיות והפתרונות שלהן
| סיבה | פתרון |
|---|---|
| אי-התאמה בגרסת קומפיילר | ציינו גרסה מדויקת pragma solidity 0.8.19, בחוקר — אותה גרסה |
| אי-התאמה בהגדרות אופטימיזציה (runs) | שמרו את תצורת solc בנפרד, השתמשו ב-get-hardhat-config ללוגים |
| שימוש בספריות ללא כתובות | ציינו כתובות ספריות מקושרות במהלך האימות |
| חוזי פרוקסי | תחילה אמתו את היישום, אחר כך את הפרוקסי — לחצו "Verify as proxy" ב-Etherscan |
| מטא-דאטה (metadata hash) | הוסיפו --metadata-hash none ב-solc או השביתו ב-hardhat |
עבור חוזי פרוקסי, Etherscan תומך בזיהוי דרך ABI proxy detection — לאחר אימות שני החלקים, לחצו "Is this a proxy?". אנו גם מחברים @openzeppelin/contracts ומשתמשים בתבניות upgradeable.
כלי אימות
Hardhat + hardhat-verify (לשעבר hardhat-etherscan). לאחר פריסה:
npx hardhat verify --network mainnet 0xCONTRACT_ADDRESS "arg1" "arg2" התוסף מזהה אוטומטית את גרסת הקומפיילר מ-npx hardhat verify --network mainnet 0xCONTRACT_ADDRESS "arg1" "arg2" , בונה את Standard JSON Input, ושולח אותו ל-API של Etherscan. עובד עבור Ethereum, Polygon, BSC, Arbitrum, Optimism — דרך תצורת hardhat.config.ts.
Foundry forge verify-contract — עובד באופן דומה אך ישירות דרך Standard JSON Input:
forge verify-contract 0xCONTRACT_ADDRESS src/MyContract.sol:MyContract \
--chain-id 1 \
--etherscan-api-key $ETHERSCAN_KEY \
--constructor-args $(cast abi-encode "constructor(address)" 0xADDR)Sourcify — חלופה מבוזרת. מאחסן קוד מקור ב-IPFS, נתמך על ידי רוב חוקרי הבלוקים. Foundry תומך בפריסה עם אימות בו-זמני:
forge script Script --broadcast --verify --verifier sourcify מה כלול בעבודה
- אבחון מלא של תצורת קומפילציה
- הכנת Standard JSON Input
- אימות בחוקר הבלוקים (עד 3 רשתות כברירת מחדל)
- אם פרוקסי — אימות של שני החלקים
- ניסיונות חוזרים על שגיאות (כלול במחיר)
- תיעוד על הגדרה ופריסה
- ייעוץ על שיטות מומלצות לאופטימיזציית גז ואבטחה
לוח זמנים ומחיר
לוח זמנים: משעתיים עד יום עסקים אחד — תלוי במורכבות החוזה (ספריות, פרוקסי, מספר רשתות). המחיר מחושב באופן אישי. הזמינו אימות של החוזה שלכם היום — שלחו קישור לחוזה בכל רשת (Etherscan, Polygonscan, Arbiscan) וקבלו הערכה תוך שעה. קבלו ייעוץ על הגדרת אימות — הפכו את החוזים שלכם לשקופים.
צרו קשר כדי לדון בפרטי הפרויקט שלכם — נגיב תוך שעה.







