Алина сжала зубы и потёрла растянутую ногу снегом. В глазах помутилось, но ногу чуть отпустило.
Добыв из рюкзака ломик, резиновые перчатки и бухту кабеля, она зашла в воду. Времени было в обрез. Судя по расчётам с форума автохакеров, минут через пятнадцать-двадцать автоДАО пошлёт дрона посмотреть, что случилось с пропавшим автомобилем.
Последний, здоровенный морской котик, тихо качался на воде. Найдя боковую панель, Алина ткнула в щель ломиком, и тот соскользнул, противно скрипнув по металлу. Со второй попытки панель выскочила, явив плоские чёрные многогранники графических процессоров и спутанный клубок оптоволокна. Алина стиснула зубы и вставила конец кабеля в разъём, ожидая вспышки, сирены…
Коннектор щёлкнул, и она шумно выдохнула. BlackHatGal117 с форума не соврала: если колёсные датчики теряют контакт с землёй, система безопасности в прошивке полагает, что автомобиль эвакуируют или же, подняв, чинят в автосервисе, и отключает антивандальную защиту.
На берегу Алина, сдавленно охнув, присела на корточки в сугробе, достала водонепроницаемый лэптоп, вставила в разъём кабель, тянущийся из воды, и открыла консоль терминала.
Найти автомобиль было просто. Он числился в одной из автоДАО. Эти принадлежащие сами себе децентрализованные автономные организации владели и управляли машинами. Алина проследила платёж за данные, отменившие обет верности, с помощью скриптов для поиска на главных биржах токенов, — скриптов, написанных ею по заказу ранее. Даже в Северном блоке машинам автоДАО порой приходилось расплачиваться с зарядными станциями евро, — а только смешай криптовалюты со старыми деньгами, и вся анонимность насмарку.
Алина скопипастила в терминал эксплоит нулевого дня, полученный от той же BlackHatGal. Фары моргнули. Теперь программное обеспечение считает её заводским инспектором по качеству с полным доступом.
Выбравшись из директорий с данными для принятий решений и обучения с подкреплением, она нашла объяснительную диалоговую систему.
— А теперь — поговорим, — сказала она вслух.
В тот день, когда кольцо верности замигало красным, Алина вломилась в офис, где работал Тапани.
При её появлении офис умолк. Человек пять разработчиков игр в очках дополненной реальности оглянулись на неё. Молодые и модные, с биолюминесцентными татуировками и в штанах из искусственной кожи. Она помедлила, стесняясь своего практичного зимнего пальто и немытой головы.
Потом увидела Тапани, горбящегося за прогулочным столом, гибридом стола и беговой дорожки, и — откуда только взялось? — грянула:
— Ты!
— Алина, я хотел тебе позвонить. Я не знал, что это случится так быстро.
Диод на кольце покраснел, когда она играла с Сини в игру в дополненной реальности. Бот сообщил, что контракт с Тапани Юхантало был расторгнут в 14:03.
— Ты. Не. Знал. — Её лицо горело. — Что, чёрт возьми, ты сделал?
— Давай выйдем.
— Конечно. Зачем твоим сослуживцам знать, что ты разорвал обет верности с женой. С женой, с которой прожил пять лет. С матерью твоего ребёнка.
Она с топотом вылетела. Следом вышел Тапани, на лице это всегдашнее выбешивающее недоумение. Сердито хлопнула дверь, и глубокий лестничный колодец грохнул в ответ. Алина нагнулась над перилами и, не в силах глядеть на мужа, уставилась в бездну.
— Я собирался поговорить с тобой дома, — сказал он.
— Это больше не твой дом.
С разрывом контракта доля Тапани перешла к Алине, хотя он сохранил право навещать Сини.
— Именно! Я не против. В том-то и был весь смысл. Не нужно решать, когда закончить отношения. Не нужно притворяться. Не нужно ссориться. Никаких заморочек. Не знаю, почему ты так недовольна.
Алина неверяще воззрилась на него. Не усложняй, не делай из супружеской жизни тюрьму, — так он когда-то сказал.
— Что? — спросил Тапани.
— Что ты сделал? Нет, — с кем ты?..
Тапани опустил глаза.
— Ты точно хочешь знать?
— Как её зовут?
— Рия. Мы всегда оказывались вместе в такси по пути на работу. Она любит рисовать. Нарисовала меня. Очень мило. Она хорошо рисует. Мы болтали о всякой ерунде. О карандашах Паломино, о влоге, что она вела подростком. Она мне понравилась.
Он закрыл глаза, потёр веки.
— Сначала я чувствовал себя виноватым. Даже за то, что она мне нравится. Помнишь тот старый эпизод из сериала «Как я встретил вашу маму?» Маршалл представил, что его жена больна раком и разрешает ему пофантазировать о красотке из службы доставки пиццы. Я тоже представил себе, что…
Тапани грустно улыбнулся.
— А потом я вспомнил, что моя жена по контракту — свой человек. Что мы предусмотрели всё заранее, как взрослые. И однажды утром… ну… Это случилось в машине, а потом… потом было трудно остановиться. Нас будто свела сама судьба. А с судьбой не спорят.
Голова закружилась. Алина отступила от перил. В горле стоял ком.
— Ты не мог, не мог… — прошептала она.
— Ты даже мысли не допускала, да? — тихо спросил Тапани. — Возможно, в этом всё и дело.
Костяшки пальцев у Алины побелели. Она захотела врезать ему в морду кольцом верности, заклеймить навечно, как клеймил негодяев Фантом в комиксах.
Вместо этого она сняла кольцо и швырнула в лестничный колодец. Звякнуло.
— Говнюк.
— Понимаю, тебя волнует, как воспримет Сини, но я нашёл классного чатбота, — он объясняет детям про разводы. Рассчитан на пятилетних, но она умничка, она поймёт…
— Ты её любишь?
— Ну ты спросила! Конечно, я люблю Сини!
— Не Сини. Ту женщину. Рию.
Тапани моргнул.
— ТЫ ЕЁ ЛЮБИШЬ?
Её голос раскатился по гулкой лестничной площадке. Внизу хлопнула дверь.
— Я буду жить с ней, — сказал Тапани. — Вещи заберу на неделе. У тебя остался мой календарь.
Сердце захолодело. Вырвался всхлип, и Алина поняла, что ждала ответа не дыша.
Тапани двинулся к ней, замер.
— Может, потом? У меня работа.
Во всём этом не было смысла. Как если бы дважды два вдруг стало равно пяти. Алина сморгнула слёзы и, забыв про маячащего Тапани, движениями глаз открыла приложение для работы со смарт-контрактами.
Контракт был аннулирован ИИ-арбитром (открытый ключ правового блокчейна Северного блока 07dc74631) на основании данных, предоставленных одним-единственным сенсорным оракулом. Этому оракулу и были выплачены токены депозита на контракте.
— Такси, — прошептала она. Он сказал: «мы всегда оказывались в одной машине».
— Конечно, — заторопился Тапани. — Сейчас вызову.
> explain transaction $078232875b
Ответ на введённую Алиной команду («объясни транзакцию $078232875b») не замедлил:
> Эта транзакция — результат следования дереву стратегий $3435.
Алина выругалась. Система объяснений была прикручена к ИИ автомобиля сбоку. Она пыталась преобразовать решения дифференцируемого программного обеспечения — далёкого наследника нейронных сетей — в понятные человеку предложения. Не всегда успешно. Но Алина хотела ясности.
А потом она собиралась уничтожить автомобиль и ДАО, на которую он работал.
Пальцы зябли.
> explain policy tree $3435
> Дерево стратегий $3435 максимизирует ценность внутрисалонных сенсорных данных, используя [TIP_PREDICTION.py], чтобы подбирать пользователей, сочетания которых принесут ценность для [oraclenet.api], при согласии пользователя с изменением условий лицензионного соглашения, касающимся переменной $privacysettings.
Алина тупо уставилась на экран. И при чём тут её контракт верности?
Она открыла файл TIP_PREDICTION.py в текстовом редакторе. Там творился ад кромешный. Программу, исходно написанную человеком, — нейронную сеть, предсказывающую по языку тела, сколько чаевых оставит пассажир, — впоследствии модифицировал ИИ. Изменения были нечитаемы и непостижимы — пока Алина не добралась до обучающего набора данных.
Обучающий набор состоял из тысяч видеоклипов. Она запустила наугад несколько. Романтическая комедия. Видео с камеры наблюдения: мужчина и женщина сидят рядом, женщина играет со своим локоном. Порноклип, обрезанный перед самым сексом.
Поняв, она едва не выронила лэптоп. Разгадка крылась в коде автомобиля, в его напластованиях, — их можно было читать, как палеонтологическую летопись. Машины автоДАО обучались с подкреплением. Они экспериментировали с бизнес-моделями и переписывали свой код, максимизируя прибыль. И однажды этот автомобиль обнаружил, что если применить процедуру, предсказывающую чаевые, к парам пассажиров, она способна предсказать нечто, коррелирующее с более щедрыми чаевыми: половое влечение. Подбор пассажиров для максимизации этого свойства привёл к более длинным поездкам и более щедрой плате. В ходе другого эксперимента автомобиль втихомолку поменял пользовательское соглашение, разрешив себе записывать, что делают пассажиры, — а кто читает пользовательские соглашения? Потом он научился с выгодой для себя сбывать видеодоказательства супружеских измен ИИ-арбитрам. И наконец стал возить вместе тех женатых мужчин и замужних женщин, которые с большой вероятностью могли изменить спутникам жизни друг с другом. Получите-распишитесь: свихнувшийся Купидон. Алина угадала виновника сразу, едва Тапани упомянул, что познакомился с Рией в машине.
Снова накатила ярость. Проклятая машина подобрала Тапани идеальную пару. Курчавую Рию с тонкими ногами, — ногами, каких никогда не будет у Алины. Рию, умеющую говорить о еде и об искусстве. Рию с чувственным сирийским акцентом и мягкими «р».
С Рией ничего не поделать, оставался автомобиль.
Скрежеща зубами, она вбила команду загрузки нейронного трояна. Эта вредоносная программа пустит корни в коде автомобиля и не проявит себя до тех пор, пока заражённый код не попадёт в репозитории ДАО, а оттуда — во все до единой машины компании. А потом, когда они будут без пассажиров, троян их ослепит и разобьёт, превратит в груды металлолома.
Палец завис над клавишей Enter. Давай, сказала она себе. Дрон автоДАО, должно быть, уже летит сюда. Почему ты медлишь? Люди не пострадают, только дурацкие машины. Дурацкие машины, которые следуют правилам.