חזרה
Anubis משחררת proof-of-work מבוסס WebAssembly אחרי שנה של עבודה
SiTech AI Team2 წთ. საკითხავი

Anubis משחררת proof-of-work מבוסס WebAssembly אחרי שנה של עבודה

אחרי שנה של פיתוח, מאות קומיטים וצייד אחרי באג ב-LLVM, Anubis עוברת להוכחת עבודה שתלוית־זיכרון ב-WebAssembly, מה שממייקר מאוד חוות פתרונים מבוססות CUDA. הפתרון מבוסס argon2id ומחליף את הגיבוב הישן.

Anubis, שער האנטי-בוטים שמחייב מבקרים לפתור חידה קטנה לפני הכניסה לאתר, עומד להתחיל לחלק חידה מסוג אחר. לדברי המפתח, השינוי ארך שנה: מאות קומיטים, חמישה דורות של pull requests, עשרות בדיקות ושכתוב של חלק מ-Anubis ב-Rust. התוצאה היא בדיקת proof-of-work מבוססת WebAssembly שאדמינים יכולים להפעיל בכללים ובספים שלהם.

היא תופיע לראשונה, כבויה כברירת מחדל, ב-Anubis v1.28.0. הפעלה כברירת מחדל מתוכננת ל-v1.29.0 ותלויה במשוב של מי שמפעילים אותה.

חידה שדורשת זיכרון ולא רק מעבד

האתגר החדש משתמש ב-argon2id, פונקציה שתלוית־זיכרון (memory-hard), במקום הגיבוב הישן שתלוי במעבד בלבד. המשמעות המעשית היא עלות: פתרון אתגרים כאלה בהיקף נרחב דורש רוחב פס של זיכרון ולא רק כוח חישוב, מה שמעלה את המחיר של המסלול "להעביר את הפותר ל-CUDA" שסורקים מנסים. האדמין מצמיד את האתגר לכלל מסוים, למשל לסף "חשד בינוני" בדרגת קושי 6.

WebAssembly גם מאפשר ללקוח ולשרת להריץ קובץ בינארי זהה במקום שתי מימושים נפרדים של אותו אלגוריתם; עד כה אתגר ה-"fast" היה קיים פעמיים — ב-JavaScript וב-Go. המחבר משווה זאת לשבב הנעילה בקונסולת NES, שבו שני הצדדים מריצים לוגיקה זהה. הקוד נכתב ב-Rust (no-std, wasm32-unknown-unknown) משום שהוא מפיק קבצים בינאריים קטנים ומהירים.

הפרטים שאכלו שנה שלמה: באג ב-LLVM ו-Chrome 75

רוב העיכוב נבע מפרטים. Anubis עדיין תומך ב-Chrome 75, משום שלטלוויזיות חכמות רבות ולטלפונים זולים יש נתיב שדרוג חסום. ספריית התקן של Rust מגיעה מהודרת מראש ומשתמשת ב-reference types, שאותם דחו גרסאות Chrome ישנות בשגיאה "expected table index 0, found 128". הפתרון היה הסרת תכונות WebAssembly בעזרת wasm-opt: בסיס MVP בתוספת רק מה ש-Chrome 75 מבין.

בניית כלי דטרמיניסטי להמרת WebAssembly ל-JavaScript חשפה גם באג ב-LLVM: הקומפיילר עבר על בלוקים של טיפול בחריגות לפי סדר המצביעים במכונה, כך שכל בנייה נדדה בכ-29 בייטים. השבתת אקראיות מרחב הכתובות הפכה את הסחף לעקבי ואישרה את האבחנה; הבאג תוקן במעלה הזרם. לבדיקת דפדפנים ישנים בנה המחבר מערכת בשם "chromesweep" שמפעילה גרסאות רבות של Chrome, שפורסמה כספרייה TecharoHQ/gubal.

מה עוד לא הושלם

קיים פתח מילוט: WebAssembly מהודר חזרה ל-JavaScript עבור דפדפנים שמכבים WASM במדיניות, כמו מצב Lockdown של iOS או Vanadium של GrapheneOS. המסלול הזה איטי ופס ההתקדמות שלו עוד לא מחובר. מכיוון שהפותר ב-WebAssembly מהיר מאוד, ייתכן שיהיה צורך לכוונן מחדש את דרגות הקושי, ובפיתוח נמצא מסווג שמשתמש במוניטין כתובות IP ובטביעת אצבע TLS כדי להעניק הקלה לטלפונים.

SSiTech

SiTech — פיתוח אתרים בכוח ה-AI

אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.