Geri qayıt
Anubis bir illik işdən sonra WebAssembly proof-of-work təqdim etdi
SiTech AI Team2 წთ. საკითხავი

Anubis bir illik işdən sonra WebAssembly proof-of-work təqdim etdi

Bir illik inkişaf, yüzlərlə commit və LLVM xətasının axtarışından sonra Anubis WebAssembly ilə yazılmış yaddaş tələb edən proof-of-work-ə keçir və CUDA əsaslı həlledici fermalarını çox bahalaşdırır.

Ziyarətçiləri sayta çatmazdan əvvəl kiçik tapmacanı həll etməyə məcbur edən antibot qapısı Anubis artıq başqa tipli tapmaca paylamağa hazırlaşır. Müəllifin sözlərinə görə, bu dəyişiklik bir il çəkib: yüzlərlə commit, beş nəsil pull request, onlarla test və Anubis-in bir hissəsinin Rust ilə yenidən yazılması. Nəticə administratorların öz qaydalarında aktivləşdirə biləcəyi WebAssembly əsaslı proof-of-work yoxlamasıdır.

O, ilk dəfə Anubis v1.28.0 versiyasında, standart olaraq söndürülmüş şəkildə görünəcək. Standart olaraq aktivləşdirilməsi v1.29.0 üçün planlaşdırılıb və istifadəçilərin rəylərindən asılı olacaq.

Prosessoru deyil, yaddaşı yoran tapmaca

Yeni yoxlama köhnə, yalnız prosessordan asılı heşləmə əvəzinə argon2id-dən — yaddaşdan asılı (memory-hard) funksiyadan istifadə edir. Praktik məqsəd xərcdir: bu tapmacaları geniş miqyasda həll etmək üçün hesablama gücü ilə yanaşı yaddaş ötürmə qabiliyyəti də lazımdır ki, bu da skreyperlərin sınadığı "həlledicini CUDA-ya köçürmə" yolunu bahalaşdırır. Administrator tapmacanı konkret qaydaya bağlayır, məsələn, 6 çətinlik dərəcəsi ilə "orta şübhə" həddinə.

WebAssembly həm də bir alqoritmin iki ayrı implementasiyası yerinə müştəri və serverin eyni binar faylı işlətməsinə imkan verir; indiyədək "fast" tapmacası biri JavaScript, digəri Go olmaqla iki dəfə mövcud idi. Müəllif bunu hər iki tərəfin eyni məntiqi icra etdiyi Nintendo Entertainment System-in kilid çipi ilə müqayisə edir. WebAssembly kodu Rust ilə yazılıb (no-std, wasm32-unknown-unknown), çünki o, kiçik və sürətli binar fayllar verir.

Bir ili yeyən təfərrüatlar: LLVM xətası və Chrome 75

Gecikmənin çoxu təfərrüatlardan qaynaqlandı. Anubis hələ də Chrome 75-i dəstəkləyir, çünki bir çox ağıllı televizorun və ucuz Android telefonunun yüksəltmə yolu yoxdur. Rust-ın əvvəlcədən kompilyasiya edilmiş standart kitabxanası reference types istifadə edir; köhnə Chrome versiyaları bunu "expected table index 0, found 128" xətası ilə rədd edir. Həll wasm-opt ilə funksiyaları kəsmək oldu: MVP bazası üstəgəl Chrome 75-in anladığı qədəri.

Deterministik WebAssembly-dən JavaScript-ə çevirici qurularkən LLVM xətası da üzə çıxdı: kompilyator istisna bloklarını maşın göstəriciləri sırası ilə gəzirdi, buna görə hər yığım təxminən 29 bayt dəyişirdi. Ünvan məkanının randomizasiyasını söndürmək sapmanı sabitləşdirdi və diaqnozu təsdiqlədi; xəta upstream-də düzəldildi. Köhnə brauzerləri yoxlamaq üçün müəllif bir çox Chrome versiyasını işə salan "chromesweep" alətini qurdu və onu TecharoHQ/gubal kitabxanası kimi dərc etdi.

Hələ tamamlanmayanlar

WebAssembly-i siyasətlə söndürən brauzerlər üçün qaçış yolu var: kod yenidən JavaScript-ə kompilyasiya edilir. Bu qrupa iOS-un Lockdown rejimi və GrapheneOS-un Vanadium-u daxildir. Bu yol yavaşdır və tərəqqi zolağı hələ qoşulmayıb. WebAssembly həlledicisi çox sürətli olduğundan çətinlik parametrlərinin yenidən tənzimlənməsi lazım gələ bilər; telefonlara daha çox güzəşt üçün IP reputasiyası və TLS barmaq izindən istifadə edən təsnifatlandırıcı üzərində iş gedir.

SSiTech

SiTech — AI ilə gücləndirilmiş veb hazırlanması

Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.