Разработчик собрал рабочий прототип системы передачи данных, которой не нужны ни специальные приложения, ни настройка сетевого подключения, ни сопряжение устройств — из разрешений требуется только доступ к камере. Информация передаётся «по воздуху» почти буквально: одно устройство выводит на экран поток быстро сменяющихся QR-кодов со скоростью до 60 кадров в секунду, а второе считывает их камерой прямо в браузере. По опубликованным на GitHub тестам автора под ником bashalarmistalt, такой обмен разгоняется до 190 КБ/с. Технику передачи «экран-в-камеру» между двумя устройствами назвали Decimen Optical Transfer: fountain-coded QR file transfer.

Опробовать решение можно по адресу decimen.app: веб-приложение открывается сразу на обоих смартфонах, кэшируется после первого запуска и дальше работает без интернета. Написано оно на TypeScript и распространяется под свободной лицензией MIT. Проект на GitHub связан с публикацией на Reddit пользователя Alstroph — судя по всему, это тот же человек; в его посте есть наглядное видео с демонстрацией передачи файла через QR-коды.

реклама кормит Уточку 🦆

Как это работает

Ключевую роль в методе играют «фонтанные коды» (fountain codes) — разновидность помехоустойчивого кодирования, а точнее LT-коды (Luby Transform). Тонкость в том, что канал здесь односторонний: принимающее устройство физически не может попросить отправителя повторить потерянный кадр. Фонтанные коды снимают эту проблему — получателю достаточно поймать камерой любое достаточное число кадров, чтобы собрать исходный файл. Пропущенные, смазанные, повторившиеся или пришедшие не по порядку кадры не ломают передачу, а лишь немного удлиняют её: потерянный кадр стоит времени, но не целостности данных.

Каждый QR-кадр самодостаточен. В него зашит служебный заголовок размером 20 байт — с идентификатором сессии, порядковым номером, количеством и размером блоков, длиной файла и хэшем. Благодаря этому приёмник может подключиться к уже идущему потоку или сбросить состояние, когда началась новая сессия. Собранный файл проверяется по контрольной сумме SHA-256, прежде чем его предложат сохранить.

Передача файла между смартфонами через поток анимированных QR-кодовИсточник изображения — tomshardware.com

По словам автора, приложение он собрал с помощью Claude Code: это кэшируемая веб-страница, которая запускается в браузере на обоих смартфонах после выдачи доступа к камере. Идея, по его признанию, родилась из желания получить «способ передавать файлы между телефонами, не загоняя их в одну сеть», — после чего он остановился на варианте с «быстро мигающими QR-кодами». Публичная демо-версия — это компактная выжимка из более крупного эксперимента: полная сборка использует node-qrcode для генерации кодов и библиотеку zxing-cpp, скомпилированную в WebAssembly, для распознавания. Последнее пришлось вынести в отдельные фоновые обработчики, поскольку Safari так и не обзавёлся встроенным механизмом чтения штрихкодов.

реклама кормит Уточку 🦆

Скорость и тонкая настройка

В прототипе есть и подсказки по тому, как выжать максимум. В своих замерах разработчик задействовал iPhone с дисплеем Apple ProMotion и наложенными друг на друга кодами: удерживая устройства в руках, он получил около 128 КБ/с. Если же отправитель и получатель зафиксировать неподвижно, скорость поднималась до 186 КБ/с, а в отдельных тестах — почти до 190 КБ/с. Приложение принимает произвольные файлы объёмом до 64 МБ (или фрагмент текста), сжимает их через gzip только тогда, когда это действительно уменьшает «оптическую» нагрузку, и сохраняет исходное имя файла.

реклама кормит Уточку 🦆

Идея не новая — но быстрая

Автор честно признаёт, что похожие проекты появлялись и раньше, но настаивает: концепцию своего решения, собранного с помощью Claude Code, он проработал самостоятельно. После публикации демо на Reddit в комментариях быстро вспомнили сразу нескольких предшественников — от проекта divan/txqr 2018 года (анимированные QR-коды и фонтанные коды на языке Go) до sz3/libcimbar, где ради плотности вообще отказались от QR в пользу собственного цветного кода. Тем не менее версия Decimen выделяется скоростью: по замерам она заметно опережает более ранние открытые реализации.

QR-коды всё чаще применяют не только для передачи, но и для хранения данных. Так, компания Cerabyte использует микроскопические QR-подобные метки в своём сверхдолговечном керамическом хранилище — ещё одно напоминание о том, что у привычного «квадрата с точками» куда больше применений, чем оплата счёта в кафе.