Сегодня добавил алгоритм сжатия Brotli в наше dApp. Он нужен для того, чтобы сжимать сообщения перед отправкой в блокчейн и экономить на газе.
Ведь чем больше размер данных, которые мы отправляем на хранение, тем больше денег мы должны заплатить!
😆 Как это обычно бывает, я закладывал на эту задачу 1,5 часа и думал, что просто импортирую библиотеку с двумя функциями: на сжатие и разжатие, затем передам сообщение в библиотеку и всё будет готово. Но не тут-то было…
Оказалось, что Brotli.js нормально работает только на сервере с require импортами. Чтобы запустить его в браузере, нужно объединить все зависимости в один JavaScript-файл с помощью Browserify, а затем подключить этот файл в index.html. В общем, это не сработало.
👀Далее я начал искать другие модули и нашёл brotli-wasm. Этот модуль содержит обёртку вокруг API Brotli на Rust, скомпилированной в WASM. Но и это не сработало, так как WASM вызывал ошибку в консоли и ругался на какие-то MIM
Спустя сутки и hello world на WebAssembly text format, я понял, что проблема в совместимости Vite и WASM. На это указал другой модуль, brotli-compress, который был создан, чтобы решить проблемы с использованием brotli-wasm напрямую.
🎉 С чудом пакет заработал с первого раза. Теперь коэффициент сжатия сообщения составляет 300%, что уменьшает данные на ±70% от исходного объёма. Можно идти на выходной!
📊 #статистика День 986 == 1686 час в IT
