DNS-блокировщик рекламы на ESP32-C3 за $2: 537 тысяч доменов в хешах во флеш-памяти
ESP32-C3 Adblock
Проект esp32-c3-adblock реализует Pi-hole-подобный DNS-блокировщик на дешёвом ESP32-C3 без PSRAM. Вместо хранения строк доменов в RAM используются отсортированные 40-битные хеши FNV-1a во флеш-памяти с бинарным поиском. 141 тысяча доменов занимает около 0,67 МБ флеша и требует всего ~50 КБ RAM, а ответ на заблокированный запрос занимает примерно 10 мс. При 537 тысячах доменов возможна лишь одна коллизия. Устройство поддерживает веб-панель, OTA-обновления и настройку WiFi через captive portal.
Хеши во флеш-памяти превосходят строки в PSRAM практически везде; C3 просто делает это неоспоримым.