Anubis에 WebAssembly를 넣는 데 왜 1년이나 걸렸을까
스토리 · GeekNews · 2026.09.07
Anubis에 WebAssembly 기반의 작업증명(Proof of Work)을 도입하는 과정에서 겪은 다양한 기술적 난관과 이를 해결한 여정을 소개합니다. 핵심 기능 구현 자체는 빠르게 완료되었으나, 구형 브라우저와의 호환성 확보와 보안 설정 대응 과정에서 많은 시간이 소요되었습니다.
새로운 방식은 Argon2id를 도입하여 GPU를 이용한 대량 풀이 공격에 대응하고, WebAssembly와 SIMD 기술을 활용해 모바일 환경에서도 사용자의 성능 저하를 최소화하는 데 집중했습니다. 특히 브라우저와 서버가 동일한 WebAssembly 바이너리를 사용하여 문제 풀이와 검증의 일관성을 유지하도록 설계되었습니다.
개발 과정 중 LLVM의 재현 가능한 빌드 버그를 발견하거나, Rust 표준 라이브러리의 최신 기능이 구형 브라우저에서 오류를 일으키는 등 예상치 못한 문제들을 만났습니다. 이를 해결하기 위해 wasm2js를 통한 JavaScript 변환, 자동화된 브라우저 검사 도구인 chromesweep 개발, 그리고 빌드 환경의 일관성을 보장하기 위한 WebAssembly 기반 빌드 도구 배포 등의 노력을 기울였습니다. 현재는 단계적인 배포를 통해 실제 환경에서의 피드백을 확인하며 시스템을 더욱 고도화해 나가고 있습니다.