Разработчик Bash Alarmist представил открытый проект под названием Decimen Optical Transfer. Это решение для передачи файлов между двумя устройствами с использованием только экрана и камеры через QR-коды с помощью фонтанного кодирования. Исходный код проекта написан на TypeScript и HTML и опубликован на GitHub под лицензией MIT.

«Отправка файла между двумя устройствами с использованием только экрана и камеры. На одной странице файл отображается в виде бесконечного потока анимированных QR‑кодов; другое устройство наводит на него камеру и восстанавливает файл. Нет сетевого соединения между устройствами, нет приложения, нет сопряжения, нет разрешений, кроме разрешения камеры. Полезная нагрузка передаётся в виде света (payload travels as light). Это минимальный прототип, полученный в результате более крупного эксперимента, в котором скорость передачи данных между смартфонами достигла 128 КБ/с при использовании более плотных кадров, многокодовых сеток и цветового канала с коррекцией ошибок. Этот прототип сохраняет только основной приём и передаёт изображение размером 512 КБ (или 2 МБ, выбираемое в настройках отправителя) с комфортной скоростью», — пояснил автор решения.

Отправляемый файл разбивается на сотни мелких фрагментов (пакетов). Затем для каждого пакета генерируется свой QR-код, который кодирует данные и воссоздаёт их. QR-коды сменяются так быстро, что «загрузка» достигает скорости в ~128 кб/с. При этом есть фича для восстановления потерянных пакетов на случай, если какой-то из сотен QR-кодов считается неправильно.

Похожие проекты. Концепция здесь возникла независимо. Оказывается, несколько человек высказывали похожие идеи, и все их подходы заслуживают внимания:

  • mohankumarelec/airgapped-qr-code-transfer: передача QR-файлов через браузер с сжатием и последовательным разбиением на фрагменты. Обнаружен после публичной демонстрации этого проекта; конвергентная эволюция в действии;

  • divan/txqr (2018): анимированные QR-коды плюс коды фонтана на Go, с двумя отличными статьями о том, почему фонтанное кодирование превосходит sequential looping;

  • sz3/libcimbar: выходит за рамки QR-кодов, используя специально разработанный для этого канала высокоплотный цветовой код.