Теневые перепроверки
Любая схема проверки обязана ответить на неудобный вопрос: что мешает майнеру аккуратно и честно считать те запросы, про которые он знает, что их проверяют, и гнать дешёвый мусор на всех остальных. Теневые перепроверки - ответ AETRON. На проверку идут обычные пользовательские запросы, поэтому никакого состояния «меня сейчас проверяют» майнер обнаружить не может и никакого момента для показательной честности у него нет.
Какую атаку это закрывает
Назовём её выборочным обманом. Майнер регистрируется с дорогой моделью, проходит все проверки, которые ему шлёт сеть, а пользователей обслуживает чем-то сильно дешевле: моделью поменьше, квантованной копией или кэшем старых ответов. Пользователь получает ответ похуже, сеть видит чистые результаты проверок, а майнер кладёт себе разницу в стоимости.
Работает эта атака только в том случае, если майнер способен отличить один вид трафика от другого. Вся суть в этом. Система проверки, построенная вокруг отдельного эндпоинта, фиксированного тестового набора или узнаваемого формата промптов, вручает атакующему ровно такую способность.
Тестовые промпты видно за версту
Опасение не теоретическое. Во внутреннем тесте реалистичные пользовательские запросы сравнили с формальными запросами валидаторского вида из стандартного набора шаблонов. Две группы разошлись по совершенно поверхностным признакам: заглавные буквы, формальная лексика против разговорной, пунктуация, наличие чисел в тексте.
Классификатор в несколько строк, собранный на этих признаках, правильно разметил все запросы в обеих выборках. Никакого машинного обучения, никаких усилий, никаких затрат для атакующего.
Вывод перешёл прямо в конструкцию протокола: любая схема, где проверяющий шлёт специально подготовленные тестовые промпты, обходится, потому что подготовленные промпты выглядят подготовленными.
Как работают теневые перепроверки
Отдельного канала проверки нет. Проверка едет на реальном трафике.
- Пользовательский запрос приходит на слой маршрутизации.
- С вероятностью
rслой маршрутизации помечает его как кандидата на теневую перепроверку. Значение по умолчанию в AETRON - 7%. - Запрос уходит майнеру как обычный запрос. Ничто в нём не говорит, что он помечен.
- Майнер генерирует ответ и артефакт проверки и возвращает оба.
- Слой маршрутизации отдаёт ответ пользователю ровно так же, как отдал бы в любом другом случае.
- Если запрос был помечен, другой майнер той же задачи независимо пересчитывает его в каноническом режиме и сравнивает свой результат с закоммиченным хэшем артефакта.
Расхождение уходит в тот же путь разбора мошенничества, который описан в статье Проверка инференса: статистическая оценка, арбитраж третьим майнером и штраф при подтверждённом вердикте.
Решение о пометке принимается уже после того, как запрос существует, в компоненте, куда у майнера нет доступа. Майнер в обоих случаях видит один и тот же запрос.
Почему это неотличимо
Неотличимость здесь - свойство конструкции, а не заявление об удачной маскировке. Кандидаты на теневую перепроверку берутся из реального пользовательского трафика, поэтому они по определению следуют его распределению. Тут нечему подражать и нечем выдать себя.
Это проверяли состязательно. Атакующей модели дали поток запросов и позволили отделять перепроверяемые от обычных по длине, энтропии символов, длине слов и доле пунктуации. Ни один признак не развёл группы сильнее, чем обычный разброс внутри одного источника трафика, а классификатор атакующего в итоге оказался хуже угадывания.
В той же симуляции майнер, подменивший модель на ухудшенную, был пойман на каждом перепроверенном запросе. Контрольный прогон с наивным выделенным эндпоинтом проверки, где классификатор атакующего опознал все проверочные запросы, дал нулевую долю обнаружения.
Арифметика поимки
Майнер вынужден делать слепую ставку. Любой запрос, на котором он схалтурил, может оказаться тем самым отобранным, и понять это по самому запросу нельзя. Обмануть раз или два можно пережить. Обманывать как бизнес - нет: шанс проскочить проверку обваливается по мере накопления мошеннических ответов, поэтому систематического обманщика ловят быстро, а не когда-нибудь.
Именно из-за этого зазора между «иногда» и «как бизнес» теневые перепроверки идут в паре со стейком. Штраф рассчитан так, чтобы потеря на одном подтверждённом случае мошенничества перевешивала заработок за те запросы, которые нужны для поимки. Это убирает выгоду и из коротких всплесков обмана, и из систематического. Пальета применяет немедленный штраф по одному подтверждённому вердикту, а также реагирует на повторные пометки внутри скользящего окна в 100 запросов.
Стоимость
Майнер за теневые перепроверки не платит ничего: лишней работы он не делает и лишнего сигнала не получает. Стоимость ложится на проверяющую сторону: при доле 7% сеть делает 7% дополнительных проходов проверки, а для языковых моделей эти проходы состоят только из prefill, то есть стоят малую долю от генерации полного ответа. Разбивка по классам моделей есть в статье Проверка инференса, а про сохранение корректности сравнений на разном железе читайте в Гетерогенном майнинге.
Приватность
Теневые перепроверки работают на реальных пользовательских запросах, поэтому на них распространяются те же правила, что и на весь путь запроса:
- Слой маршрутизации - единственный компонент, который знает, какой запрос помечен и какому майнеру он ушёл. Наружу это соответствие не отдаётся.
- Перепроверяющий майнер выбирается среди других майнеров той же задачи, и запрос доходит до него через тот же слой маршрутизации, а не через третью сторону.
- Неотобранные запросы после обслуживания удаляются. Хранятся только кандидаты на теневую перепроверку, и только до окончания проверки.
Что путь запроса раскрывает, а что нет, разобрано в статье Приватность.
Маленькие пулы: один или два майнера
Пиринговой теневой перепроверке нужен кто-то, кто перепроверит. В задаче с одним или двумя майнерами такого в осмысленном виде нет.
При одном майнере выбирать просто некого. При двух отбор формально корректен, но пара всегда проверяет только сама себя, а один оператор с обоими хоткеями превращает это в самопроверку в костюме. По-настоящему устойчивой к сговору пиринговая проверка становится, когда пул большой, примерно от десяти майнеров.
Протокол не делает вид, что маленький случай работает, а переключает режим проверки по размеру пула:
| Майнеров в задаче | Режим | Проверка |
|---|---|---|
| 1 или 2 | SmallPool | Владелец Нейронета обязан прогонять эталонные зонды с фиксированным интервалом (около суток). Без свежего вердикта владельца задача не получает эмиссию. Теневые перепроверки инициирует владелец. |
| 3 и больше | PeerVerified | Полноценные пиринговые теневые перепроверки со случайным выбором проверяющих и кросс-майнерской статистической оценкой, автоматически. |
Задача с одним майнером разрешена намеренно. Это держит порог входа на нуле и позволяет задаче вырасти с нуля, а переключение на пиринговую проверку происходит само, как только придёт третий майнер.
Владелец в этой роли разумный проверяющий: эталонные зонды он посчитал сам при регистрации задачи, и у него есть доля эмиссии задачи плюс продукт, который зависит от её выхода, так что честный результат ему нужен напрямую. Вырожденный случай, когда владелец держит единственного майнера и проверяет сам себя, проверкой, конечно, не является. Он ещё и невыгоден. Доля эмиссии задачи - это её проверенная полезная работа, делённая на сумму по сети, поэтому фиктивная задача разбавляет собственную долю, а не отнимает что-то у других. Владелец обманывает только владельца.