החוזה נפרס, ומפתח הפרונטאנד רוצה לעבוד איתו. האפשרות הראשונה היא להעתיק ידנית את קובץ ה-ABI JSON ולכתוב קריאות דרך ethers.Contract עם המרה ל-any. השנייה היא חבילת npm לחוזים חכמים עם עטיפות טיפוסיות (typed wrappers) שמיובאות בשורה אחת, ומספקות השלמה אוטומטית ב-IDE. אנו מתמחים בגישה השנייה: ב-5+ שנות עבודה עם Solidity ו-TypeScript, סיפקנו למעלה מ-30 חבילות כאלה לפרוטוקולי DeFi, שווקי NFT וגשרי L2.
ההבדל בולט במיוחד במהלך שדרוגי חוזה: במקרה הראשון, צריך למצוא את כל המקומות עם ה-ABI הישן ולקוות שלא פספסתם אף אחד; במקרה השני, פשוט מעדכנים את גרסת החבילה. אם החוזה משנה חתימת פונקציה, TypeScript זורק שגיאות קומפילציה בכל מקומות השימוש. לפי הנתונים הפנימיים שלנו, שימוש בחבילה טיפוסית מקצר את זמן האינטגרציה פי 5 (מ-4 שעות ל-30 דקות) ומפחית את מספר הבאגים ב-70%.
בעיות שאנו פותרים
אתגרים טכניים אופייניים שצוותים נתקלים בהם:
- העתקת ABI ידנית — בפרויקט עם 50+ מסכים, ה-ABI עשוי להיות מודבק ב-10 קבצים שונים. כל פריסה דורשת סנכרון של כל העותקים — שגיאת הקלדה אחת שוברת את העסקה.
- אין השלמה אוטומטית — מפתחים מבזבזים עד 3 דקות לכל פונקציה בבדיקת תיעוד מתמדת. בקנה מידה של צוות, מדובר בשעות בשבוע.
- שגיאות טיפוסים — המרה עם
as anyמפספסת אי-התאמות בפרמטרים; העסקה נכשלת בהערכת גז, וניפוי השגיאות לוקח חצי יום. - פיזור כתובות — כתובות חוזה ב-
.envאו JSON, קל לבלבל בין רשתות. בפרויקט אחד, כתובת Sepolia שימשה בטעות ברשת המרכזית (mainnet) — ואיבדה ETH בשווי $15,000.
החבילות שלנו מבטלות את הבעיות האלה: ABI נוצר אוטומטית מארטיפקטים של בנייה, כתובות מרוכזות במפת chainId → address, וטיפוסים נבדקים בזמן קומפילציה.
כיצד חבילת npm מאיצה אינטגרציה של חוזים חכמים
נבחן פרויקט Foundry טיפוסי. לאחר forge build, הארטיפקטים נמצאים ב-out/. אנו משתמשים ב-TypeChain עם מתאם Foundry:
forge build npx typechain --target ethers-v5 --out-dir src/typechain 'out/**/!(*.dbg).json' זה מייצר forge build npx typechain --target ethers-v5 --out-dir src/typechain 'out/**/!(*.dbg).json' עם מתודת src/typechain/factories/MyContract__factory.ts טיפוסית. לאחר מכן אנו בונים את חבילת npm לחוזים חכמים באמצעות tsup — היא מספקת פלט כפול CJS/ESM ישירות מהקופסה:
{
"main": "./dist/index.cjs",
"module": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"import": "./dist/index.js",
"require": "./dist/index.cjs"
}
}
}בפרויקט אחד, הוספנו React hooks באמצעות wagmi CLI: פקודת connect() עם הפלאגין { "main": "./dist/index.cjs", "module": "./dist/index.js", "types": "./dist/index.d.ts", "exports": { ".": { "import": "./dist/index.js", "require": "./dist/index.cjs" } } } יצרה hooks מוכנים לקריאה/כתיבה. מפתחי פרונטאנד יכלו לקרוא ל-wagmi generate מבלי לכתוב שורת קוד אחת של אינטראקציה עם ABI. התוצאה: זמן האינטגרציה ירד מ-4 שעות ל-30 דקות — פי 8 מהר יותר.
מה כלול
בהזמנת פיתוח של חבילת npm לחוזים חכמים, תקבלו:
- קוד מקור עם עטיפות טיפוסיות (TypeChain או viem).
- מפת כתובות לכל הרשתות (mainnet, testnet, L2).
- בנייה כפולה (ESM + CJS) באמצעות tsup.
- CI/CD על GitHub Actions: בדיקות אוטומטיות, בנייה ופרסום בדחיפת תג (tag).
- תיעוד README עם דוגמאות ייבוא ושימוש.
- תמיכה באינטגרציה — אנו עוזרים בהגדרת ייבוא.
בניית חבילת npm מארטיפקטים של חוזה חכם
- ארטיפקטים של בנייה:
foundry(Foundry) אוuseReadMyContract(). - יצירת טיפוסים: הרצת TypeChain עם היעד הרצוי (ethers-v5, viem, web3).
- יצירת מבנה חבילה: קבוע ABI, כתובות, כלי עזר, טיפוסים.
- הגדרת בנייה: tsup עם פלט כפול.
- הרצת CI/CD: workflow של GitHub Actions.
- פרסום:
forge buildאו GitHub Packages.
כל התהליך הזה אוטומטי בתבנית שלנו — אתם מקבלים מאגר מוכן לשימוש עם pipeline מוגדר.
יתרונות של חבילה טיפוסית על פני ABI ידני
TypeChain מייצר לא רק טיפוסים אלא גם מפעלים (factories) עם npx hardhat compile והשלמה אוטומטית מלאה. גישה ידנית: 5 שורות קוד עם המרה; עם TypeChain: שורה אחת ללא npm publish. שגיאות נתפסות בזמן קומפילציה, לא על צומת בדיקה. הנתונים שלנו: TypeChain מפחית באגי אינטגרציה ב-70%.
בנייה ופרסום
מחסנית הבנייה: tsup (מומלץ) או rollup. ניתן להגדיר את tsup תוך 5 דקות והיא תומכת ב-ESM/CJS כפול ללא פלאגינים נוספים. לגרסאות, אנו משתמשים ב-semantic-release — מעלה אוטומטית את הגרסה הראשית (major) בשינויי ABI שבורים.
| כלי | יצירת טיפוסי ABI | תמיכה בפלט כפול | תבנית CI/CD |
|---|---|---|---|
| TypeChain + Hardhat | +++ | ++ (דרך tsup) | +++ |
| TypeChain + Foundry | ++ | ++ (דרך tsup) | ++ |
| Wagmi CLI | +++ | + (ESM בלבד) | ++ |
| מאפיין | אינטגרציה ידנית | חבילה טיפוסית |
|---|---|---|
| זמן אינטגרציה לכל חוזה | 4 שעות | 30 דקות |
| שגיאות טיפוסים בזמן קומפילציה | לא | כן |
| השלמה אוטומטית ב-IDE | לא | כן |
לחבילות פנימיות — GitHub Packages או Verdaccio. הגדרת connect():
@myorg:registry=https://npm.pkg.github.com לוחות זמנים ומחירים משוערים
- חבילה בסיסית (חוזה אחד, ABI, טיפוסים, כתובות) — מיום עבודה אחד ($2,000).
- חבילה מלאה (TypeChain, בנייה כפולה, CI/CD, תיעוד) — בין 2 ל-3 ימים ($4,000–$6,000).
- חבילה מורכבת (מספר חוזים, כתובות חוצות-רשת, React hooks) — בין 4 ל-7 ימים ($7,000–$12,000).
הניסיון הרב שלנו בפיתוח בלוקצ'יין (מאז 2019, עם צוות של 15+ מהנדסים) מבטיח חבילה אמינה וניתנת לתחזוקה. שירתנו 40+ לקוחות וסיפקנו 30+ חבילות, וחוסכים לכל לקוח בממוצע $15,000 בשנה בעלויות אינטגרציה.
צרו קשר כדי לדון בפרטים ולהזמין פיתוח.







