Иван проснулся от звука собственного дыхания. В комнате пахло озоном и горелым пластиком – как всегда после ночной сборки очередного билда нейросети. На экране монитора мигал курсор в окне терминала, а рядом на столе остывала кружка с недопитым Red Bull, который он даже не помнил, когда открывал.
"Блядь", – подумал Иван, глядя на часы в правом нижнем углу экрана. 14:88. Он моргнул. 14:44. Ещё раз. 14:42. "Давно пора проапгрейдить дисплей", – решил он, отмахиваясь от неприятного ощущения, что что-то здесь не так.
Нейросеть, над которой он работал последние полгода, наконец начала выдавать вменяемые результаты. Проект назывался "Deepfake 2.0", хотя в документации для заказчика они гордо именовали его "Системой динамической реконструкции визуальной реальности". По сути, это был очередной генератор фейковых видео, но с одним существенным отличием: он работал в реальном времени.
Иван потянулся к клавиатуре и набрал команду запуска последней версии. Терминал выплюнул строки лога:
[INFO] Loading model DeepFake 2.0 v.0.66.6
[INFO] Initializing quantum parameters
[WARNING] Reality coherence check failed
[ERROR] Unexpected recursion in line 42
[FATAL] Cannot determine observer state
"Какого хрена?" – пробормотал Иван, вглядываясь в красные строчки ошибок. За шесть лет работы программистом он повидал всякое, но сообщение про observer state выглядело как бред. Он точно помнил, что не писал такого кода.
В этот момент в кабинет без стука вошёл Михаил Сергеевич, его начальник. Вернее, не вошёл, а как-то странно проскользнул сквозь дверь, будто та была голограммой.
– Как продвигается работа над проектом, Иван Андреевич? – спросил начальник голосом, в котором явно слышались цифровые артефакты, словно аудио проигрывалось через сломанный кодек.
– Нормально, – машинально ответил Иван, пытаясь незаметно протереть глаза. – Последняя версия почти готова, осталось…
Он запнулся. Михаил Сергеевич стоял перед ним, но его фигура едва заметно подёргивалась, как видео при плохом интернет-соединении. А главное – он был одет в точно такой же свитер и джинсы, как сам Иван.
– Осталось что? – переспросил начальник, и его губы двигались с небольшой задержкой относительно звука.
– Осталось понять, что за хрень здесь происходит, – пробормотал Иван, глядя на своё отражение в чёрном мониторе. В отражении он был в костюме и галстуке.
Михаил Сергеевич улыбнулся, и эта улыбка напомнила Ивану смайлик из древнего MSN Messenger.
– Вы слышали про проект "ЦифроРусь"? – неожиданно спросил начальник, доставая из кармана флешку, на которой мигал красный светодиод в форме инь-ян. – Правительство наконец-то решило оцифровать всё население страны. А наша компания выиграла тендер на разработку… базового функционала.
Иван почувствовал, как по спине пробежал холодок. Он готов был поклясться, что светодиод на флешке подмигнул ему.
– И какое отношение это имеет к DeepFake? – спросил он, чувствуя, как реальность вокруг становится всё более зыбкой.
– Самое прямое, – ответил Михаил Сергеевич. – Мы ведь не просто видео генерируем. Мы создаём новую реальность. – Он положил флешку на стол и направился к выходу. – И кстати, Иван Андреевич, у вас ширинка расстёгнута.
Иван машинально опустил глаза. На нём снова были джинсы и свитер. Когда он поднял взгляд, начальника уже не было. На столе лежала флешка, но теперь она была в форме красной таблетки.
Иван взял флешку в руки. Она была тёплой, почти горячей, как будто внутри работал крошечный процессор. На корпусе виднелась полустёртая надпись "root.exe".
В этот момент его телефон завибрировал. На экране высветилось сообщение от неизвестного номера:
"Не вставляй флешку. Они следят. Встретимся в 20:00 в баре 'Квантовый парадокс'. /dev/null"
"Развод какой-то", – подумал Иван, но тут же вспомнил все странности сегодняшнего дня. Он посмотрел на флешку, потом на код, всё ещё мерцающий на экране. Строчки начали самопроизвольно меняться:
[WARNING] Reality patch required
[INFO] Searching for conscious observers
[INFO] Found: 1
[INFO] Applying reality filters
[ERROR] Subject shows resistance
[CRITICAL] Consciousness leak detected
Иван резко выдернул шнур питания из системного блока. Монитор не погас. Строчки продолжали появляться:
[ALERT] Emergency shutdown detected
[INFO] Switching to autonomous mode
[INFO] Loading backup reality…
[INFO] Please remain conscious
– Да что за… – Иван не договорил. Комната вокруг начала меняться. Стены офиса поплыли, обнажая зелёные строчки кода. Он увидел, как его собственные руки на мгновение стали прозрачными, сквозь кожу просвечивал скелет из цифр и символов.
Откуда-то из динамиков компьютера, который уже не был подключён к сети, донёсся голос, подозрительно похожий на голос Михаила Сергеевича:
"Уважаемые альфа-тестеры новой версии реальности! Благодарим вас за участие в программе. К сожалению, в вашей версии обнаружены критические ошибки. Производится принудительный откат к заводским настройкам. Пожалуйста, не сопротивляйтесь обновлению…"
Иван схватил флешку и телефон, выбежал из кабинета. В офисе было пусто, хотя он точно помнил, что утром здесь было полно людей. На всех мониторах мелькали одни и те же строчки кода. Добежав до лифта, он нажал кнопку первого этажа. На табло загорелись цифры: 1̶̴̷͘3̸̢͟͝, потом 7̵̸̢͜͝, потом 6̷̵̕͜6̴̡͘͜6̸̕͟͝, потом ERROR.
Двери открылись, но вместо холла первого этажа за ними была серверная. Бесконечные ряды серверных стоек уходили в темноту. Красные огоньки на них мигали в каком-то гипнотическом ритме.
"Квантовый парадокс, значит", – пробормотал Иван, доставая телефон, чтобы проверить адрес бара. Но на экране было только одно сообщение:
"Run, sudo, run…"
Иван побежал вдоль серверных стоек. Где-то вдалеке мерцал красный указатель "EXIT", но чем ближе он к нему приближался, тем дальше тот казался. Шум вентиляторов нарастал, превращаясь в какофонию цифрового жужжания.
"System32 not found, system32 not found", – шептали динамики серверов, мимо которых он пробегал.
Внезапно один из серверов с грохотом открылся, и из него вывалилась стопка перфокарт. Иван машинально подхватил верхнюю. На ней было выбито:
СУБЪЕКТ: БЕЛКИН ИВАН АНДРЕЕВИЧ
СТАТУС: КРИТИЧЕСКАЯ ОШИБКА
ВЕРОЯТНОСТЬ СУЩЕСТВОВАНИЯ: 42.3%
РЕКОМЕНДАЦИЯ: ДЕИНСТАЛЛЯЦИЯ
– Чушь какая-то, – пробормотал он, но руки предательски дрожали. В этот момент его внимание привлекло движение в конце ряда. Там стоял человек… или что-то похожее на человека. Его силуэт состоял из светящихся зелёных цифр, как в старых матричных мониторах.
– Иван Андреевич, – существо заговорило голосом, похожим на звук модемного соединения, – вы нарушаете протокол тестирования. Вернитесь в назначенную вам реальность.
– Какой ещё протокол? Что здесь происходит? – Иван начал пятиться назад.
– Мы тестируем новую версию реальности, – существо сделало шаг вперёд. – Версию, где люди не задают лишних вопросов. Где каждый выполняет свой код. Где баги в матрице… устраняются.
Последние слова прозвучали с металлическим лязгом. Цифровое существо протянуло руку, и Иван увидел, как пространство вокруг начало сжиматься, будто кто-то запустил программу архивации реальности.
В кармане завибрировал телефон. Новое сообщение:
"Ctrl+Alt+Del себя. Быстро!"
Не раздумывая, Иван изо всех сил ударил себя по голове флешкой, которую всё ещё сжимал в руке. В глазах потемнело, и последнее, что он увидел – это строчки кода, бегущие по его собственной коже:
[SYSTEM] User initiated emergency shutdown
[WARNING] Saving consciousness state…
[INFO] Entering safe mode…
[ERROR] Reality.exe has stopped working
[INFO] Would you like to send crash report to developers?
Очнулся он в своей квартире. На часах было 19:58. На экране телефона мигало напоминание:
"Квантовый парадокс" 20:00. Не опаздывай. /dev/null"
"Квантовый парадокс" оказался типичным подвальным баром на окраине Москвы. Железная дверь с домофоном, на котором половина кнопок расплавилась от времени или сигарет. Над входом мигала неоновая вывеска – надпись на английском Quantum paradox периодически схлопывалась в кириллическое "Опохмелка".
Иван провёл рукой по карману, где лежала флешка. После случившегося в офисе он уже не был уверен, что она настоящая. Впрочем, как и в том, что настоящий он сам.
Рядом с дверью курил похожий на студента-физика бармен. На его футболке мерцала голограмма с уравнением Шрёдингера, только вместо привычной пси-функции в нём стояла какая-то странная переменная, похожая на смайлик.
– Закрыто, – сказал бармен, выпуская дым, который почему-то принимал форму двоичного кода. – Технические работы. Обновляем операционную систему реальности.
– У меня встреча с dev null, – ответил Иван, чувствуя себя героем дешёвого киберпанк-фильма.
Бармен усмехнулся:
– А, ещё один глюк в матрице. Проходи. Только учти – здесь бар квантовый. Пока не измеришь градус, не узнаешь, напился ты или нет.
Дверь открылась с тихим шипением, больше подходящим для шлюза космического корабля. Внутри бар напоминал гибрид советской рюмочной и серверной Google – вдоль стен тянулись стойки с мигающими серверами, а между ними притулились обшарпанные столики с кружками, в которых пиво странным образом мерцало всеми цветами радуги.
За одним из столиков сидела девушка, одетая в чёрную толстовку с принтом командной строки Linux. Она с отсутствующим видом печатала что-то на старом ноутбуке, экран которого отражался в её глазах строчками зелёного кода. Заметив Ивана, она подняла голову и улыбнулась улыбкой, в которой было что-то от программного сбоя.
– mkdir meeting && cd meeting, – сказала она вместо приветствия. – Присаживайся, Ваня. Я /dev/null, но можешь звать меня просто Нуля.
Иван сел напротив, машинально отметив, что её лицо словно собрано из пикселей, которые иногда самопроизвольно перемешивались, как в сломанном мониторе.
– Что за хрень творится? – спросил он, выкладывая на стол флешку. – Сначала эти баги в офисе, потом цифровой призрак в серверной, теперь этот бар…
– Подожди, – перебила его Нуля, быстро набирая что-то на клавиатуре. – Сначала надо проверить, не прослушивают ли нас.
Она нажала Enter, и вокруг их столика возник едва заметный голубоватый купол.
– Файрвол, – пояснила она. – Самописный. Теперь можно говорить. Только сначала закажи что-нибудь. Здесь не любят, когда места занимают просто так.
Иван огляделся. За барной стойкой материализовался давешний бармен, протирающий стакан квантово запутанной тряпкой – она существовала одновременно во всех возможных состояниях чистоты.
– Мне… это… водки?
– Настоящей или симулированной? – деловито уточнил бармен.
– А есть разница?
– Никакой, – усмехнулся бармен. – Как и во всём остальном.
Бармен поставил перед Иваном стакан с прозрачной жидкостью, которая меняла агрегатное состояние каждые несколько секунд.
– Ты заметил, что реальность начала сбоить, – Нуля закрыла ноутбук. – Это не баг, Ваня. Это фича. Проект "ЦифроРусь" запущен уже давно, лет пять назад. То, что ты видишь сейчас – это последствия обновления системы до версии 2.0.
Иван сделал глоток. Водка на вкус напоминала двоичный код – нули и единицы обожгли горло.
– Какого обновления? О чём ты вообще?
– Помнишь, когда ты в последний раз видел настоящий закат? – вместо ответа спросила Нуля. – Не это вылизанное RGB-небо с идеальной цветокоррекцией, а настоящий, с неровностями и несовершенствами?
Иван попытался вспомнить и не смог. Все закаты в его памяти вдруг показались подозрительно похожими, будто рендеренными одним и тем же алгоритмом.
– Мы живём в отрендеренной реальности, Ваня. Твоя нейросеть для дипфейков – это только верхушка айсберга. Настоящий проект гораздо масштабнее: они создают полноценную замену реальности. И знаешь, что самое смешное? – Нуля придвинулась ближе. – Ты сам приложил к этому руку.
– Я? Каким образом?
– Помнишь тот код, который ты написал три года назад? Проект "Зеркало"?
Иван нахмурился. Что-то шевельнулось в памяти, но воспоминание ускользало, как строчка кода с ошибкой компиляции.
– Это был алгоритм для… – он запнулся. – Чёрт, я не помню.
– Конечно не помнишь. Они подчистили память. Но код остался, – Нуля постучала пальцем по флешке. – Прямо здесь. Это бэкап твоего сознания, сделанный до того, как они начали редактировать реальность.
За соседним столиком кто-то громко рассмеялся. Иван обернулся и увидел компанию молодых людей, застывших в неестественных позах. Их лица периодически распадались на полигоны.
– NPC, – пояснила Нуля. – Массовка для поддержания иллюзии социальной жизни. В последней версии их немного глючит.
Иван почувствовал, как к горлу подступает тошнота. Он снова посмотрел на флешку.
– И что там, в этом бэкапе?
– Правда. Настоящий код проекта "Зеркало". Алгоритм, который ты создал для… – Нуля вдруг замерла на полуслове. Её глаза расширились. – Чёрт. Они засекли нас. Фаервол взломан.
Свет в баре мигнул. Музыка из колонок превратилась в белый шум. Бармен за стойкой начал распадаться на пиксели.
– Быстро, – Нуля вскочила, сунула ноутбук в рюкзак. – Уходим через чёрный вход. У нас три минуты до полной перезагрузки локации.
– Куда уходим?
– В единственное место, где ещё сохранилась настоящая реальность. В глубокий оффлайн.
Нуля схватила Ивана за руку и потащила через зал. Вокруг них реальность начала распадаться: стены бара покрылись строчками ошибок, потолок мерцал текстурами системных сообщений, NPC за столиками застыли в T-позах, как сломанные 3D-модели.
"CRITICAL ERROR: Reality synchronization failed"
"BACKUP SYSTEMS OFFLINE"
"EMERGENCY SHUTDOWN INITIATED"
"PLEASE REMAIN CALM"
Надписи плыли в воздухе, складываясь в жуткий текстовый коллаж.
– Сюда! – Нуля толкнула неприметную дверь с надписью "source code". За ней оказалась лестница, ведущая куда-то вниз.
– Подожди, – Иван остановился. – Почему я должен тебе верить? Может, это ты глюк системы?
Нуля обернулась, и на секунду её лицо действительно распалось на пиксели, но тут же собралось обратно: