מה זה
SolForge מקבלת קוד Solidity של מטבע, מקמפלת אותו עם solc אמיתי שרץ כ-WASM בתוך Web Worker, ומריצה עליו סורק סטטי שמחזיר ממצאים עם דרגת חומרה, הסבר בשפה אנושית למה זה מסוכן, ותיקון. הכל קורה בצד הלקוח, בלי שרת ובלי שליחת הקוד לשום מקום.
הפרויקט התחיל כ-RugRadar, סורק סקאמים למשקיעים, והתפתח למעבדה שלמה. הסורק המקורי לפי כתובת נשאר כטאב אחד בתוך המערכת.
הבעיה
מטבע יכול להיראות תקין ובכל זאת להסתיר מיינט חבוי, מלכודת blacklist שנועלת מוכרים, מס שהבעלים משנה כרצונו, או self-destruct. בלי לקרוא את הקוד עצמו, קשה לדעת אם המטבע נקי או שיש בו מלכודת.
רציתי שגם מי שלא כותב Solidity יוכל לקבל תשובה ברורה: המטבע הזה בטוח, או שיש בו בדיוק המלכודת הזאת.
מה בניתי
המערכת בנויה מחמישה טאבים: Auditor שמקמפל וסורק קוד, Academy עם קטלוג חולשות שכל ערך בו טוען דוגמה פגיעה ותקינה לעורך, Builder שמייצר ERC-20/721 בטוח בתבנית OpenZeppelin וסורק אותו אוטומטית, Bytecode שסורק bytecode של ריצה למטבעות בלי קוד מקור, ו-Token Scanner המקורי שנותן ורדיקט rug לפי כתובת.
מנוע הזיהוי מגיע ל-64 דיטקטורים שמכסים reentrancy, בקרת גישה, honeypot, rug, DeFi, אורקלים, flashloan, פרוקסי, חתימות ודלתות אחוריות. מעליו יש מנוע dataflow סטטי (מפת קריאה/כתיבה למשתני state, taint, וזיהוי שומרי גישה), ציון ריכוזיות שמסכם את כל כוחות הבעלים, ומסנן רעש ספריות שמסתיר ממצאים בתוך חוזי בסיס סטנדרטיים כדי להתמקד בקוד של המטבע עצמו.
איך זה עובד
כל אודיט מתחיל בציון אבטחה 0-100 עם דרגה A-F וורדיקט, ומצייר מפת סיכון SVG חיה: החוזה, הבעלים והממצאים כצמתים מקושרים בצבעי חומרה, עם עדכון תוך כדי הסריקה. טאב Batch מקבל רשימת כתובות, מושך לכל אחת את קוד המקור המאומת ומריץ את כל הדיטקטורים, ומחזיר טבלה ממוינת מהגרוע לטוב עם הממצאים המרכזיים של כל מטבע.
אימות הכתובות והמשיכה החיים מתבססים על שירותים ללא מפתח: GoPlus, honeypot.is, DexScreener ו-Sourcify למשיכת קוד מקור מאומת. כך אפשר לסרוק מטבע אמיתי בלי להירשם לשום API.
הסטאק
הפרונט הוא vanilla ללא שלב build, מוגש מ-Vercel. מנוע הזיהוי הוא ESM טהור שהדפדפן מייבא ישירות מ-public/lab/, ו-solc נטען כ-WASM עם רזולוציית גרסה אוטומטית לפי ה-pragma של החוזה (סורק חוזים מ-0.5 ועד 0.8).
צד השרת הוא Cloudflare Worker עם D1 ו-KV, ומשמש את Token Scanner ואת משיכת קוד המקור לפי כתובת. אותו stack פריסה משמש גם פרויקטים אחרים שלי.
התוצאה
המערכת חיה ב-solforge-weld.vercel.app ואומתה מקצה לקצה בדפדפן אמיתי. יש 387 טסטים עוברים, כולל רגרסיה על מטבעות אמיתיים: המנוע מזהה את מלכודת ה-blacklist של PEPE ו-LADYS, את מס הבעלים והמשיכה הלא-מוגנת של NEIRO, ואת BOBO, ובכל זאת משאיר את TURBO נקי בלי false positive.
כל דיטקטור נבנה בתהליך יריב שבו סוכן נפרד צד וייצב false positive אמיתי, וכל אחד מגיע עם טסט זהב: הגרסה הפגיעה נדלקת, הגרסה התקינה מתנקה, מקומפל עם solc אמיתי.