← all guides

FCMP++ объяснение — апгрейд приватности, заменяющий ring signatures Monero

Десятилетие приватность Monero on-chain держалась на ring signatures: каждая трата прячется среди 15 ложных подписей, выбранных из цепочки — наблюдатель имеет шанс 1 к 16 угадать настоящую. FCMP++ убирает эту схему: anonymity set прыгает с 16 на каждый тратимый output, существующий на цепочке. Это крупнейший апгрейд приватности со времён RingCT, протокольная инженерия идёт поэтапно весь 2026 год. Ниже: что такое FCMP++, что меняется для вас и что — нет.

Короткий ответ

FCMP++ заменяет 16-decoy ring signature Monero на одно zero-knowledge доказательство, которое говорит: «output, который я трачу, находится где-то в этом огромном множестве», а множество — это все тратимые outputs цепочки. Для обычных пользователей видимо ничего не меняется: те же кошельки, тот же UX, тот же XMR. Под капотом anonymity set растёт с 16 до десятков миллионов, и ряд давних атак на выбор decoy перестают работать в принципе.

Почему decoy-кольца пора было заменить

Ring signatures были изящным трюком 2016 года: спрятать настоящую трату среди decoy, заставить верификатор принять любую из них как правдоподобную. Загвоздка: выбор decoy — эвристический; кошелёк выбирает их по возрасту в цепочке, кривым recency и другим сигналам. Исследователи показали цепочку атак, смещающих вероятность от 1/16:

  • EAE-атака (Eve-Alice-Eve) — биржа, отслеживающая ваши депозиты и выводы, сужает настоящую трату пересечением обоих концов.
  • Несовпадение распределения decoy — если ваш кошелёк выбирает decoy по чуть другой кривой, чем сеть в среднем, настоящая трата выделяется статистически.
  • Смещение к более новым outputs — настоящая трата чаще оказывается самой новой в кольце; chain-analysis вендоры это эксплуатируют.

По отдельности это не ломает Monero, но в недружественных условиях размывает 1/16 до 1/4 или хуже. Сообщество годами увеличивало размер кольца и улучшало decoy-selection; FCMP++ — структурное исправление.

Как работает FCMP++ на самом деле

FCMP — это Full-Chain Membership Proof. Вместо случайного выбора 15 decoy, тратящий формирует одно компактное zero-knowledge доказательство: «один из outputs в этом Merkle-tree-committed множестве — тот, к которому у меня есть spend key». Множество — это commitment всех тратимых outputs блокчейна Monero, начиная с высоты форка.

«++» — конкретная конструкция, предложенная Luke «kayabaNerve» Parker в 2024 году: proof-система в стиле Bulletproof+ над схемой обязательств на алгебраическом groupe action, быстрая для верификатора и компактная по размеру proof, чтобы помещаться в блок Monero. Прежние full-chain предложения (Seraphis, Lelantus, варианты RingCT-Spark) были либо слишком большими per-tx, либо слишком медленными в верификации; FCMP++ — первое предложение, достаточно дешёвое для mainnet.

Тратимый output становится криптографически неотличим от всего тратимого множества. «Размера кольца» больше нет; anonymity set — это сама цепочка.

Что меняется для обычных пользователей

Видимо — почти ничего. Вы по-прежнему:

  • Открываете Cake / Feather / Monero GUI как обычно
  • Генерируете те же адреса + субадреса
  • Платите те же комиссии (на полях чуть меньше — proof компактнее)
  • Ждёте те же ~20 минут на 10 подтверждений

О чём больше не надо беспокоиться:

  • Качество decoy-selection у кошелька (тревога «правильно ли мой кошелёк выбирает decoy?» уходит — decoy больше нет)
  • «Churning» — переводить себе же средства, чтобы нарастить эффективный set. Set уже максимален.
  • Опасения, что прирост ring size зажимается со временем. У FCMP++ нет размера кольца.

Carrot — апгрейд адресации, который едет вместе

FCMP++ выходит вместе с Carrot — новой схемой адресации и сканирования. Carrot решает отдельную проблему: в текущих view-only кошельках атакующий с вашим приватным view key видит все входящие транзакции к вашему адресу. Carrot переделывает криптографию так, что view-only кошельки видят входящие, не владея мастер-ключом, который раскрывал бы всю историю аккаунта.

Практический эффект: передача view key бухгалтеру, разработчику, интегрирующему платежи, или watch-only mobile-приложению перестаёт быть односторонним раскрытием на всю жизнь. View keys в Carrot можно ограничивать, ротировать, передавать — без потери исторической приватности.

Carrot также приносит view tags — небольшие подсказки на каждой транзакции, позволяющие сканеру кошелька пропускать большую часть цепочки. Итог: время синхронизации на медленных устройствах заметно падает, особенно для новых кошельков, восстанавливающихся из seed.

Под капотом (можно пропустить)

  • Размер proof: ~2 КБ на input (vs ~1.5 КБ у нынешнего RingCT-Bulletproofs+). Per-tx overhead чуть растёт.
  • Стоимость верификации: быстрее на input, чем нынешнее кольцо при batch verification. Ноды быстрее верифицируют блоки в сумме.
  • Sync кошелька: view-tags Carrot позволяют сканеру пропускать ~95% outputs. Восстановление 5-летнего кошелька из seed на телефоне станет заметно быстрее.
  • Совместимость с pruned-узлами: сохраняется — Merkle commitment мал относительно данных цепочки.
  • Только через hard fork: «soft» FCMP++ нет — каждый узел обязан обновиться на высоте форка.

Сроки (плавающие — последняя сверка 2026-05-18)

FCMP++ в активной инженерии, на момент написания пока не в testnet. Лучшие публичные оценки от Luke Parker и Monero Research Lab:

  • Q2-Q3 2026: reference implementation + testnet
  • Q4 2026 / Q1 2027: hard fork в mainnet — самое раннее правдоподобное окно
  • Carrot: обычно идёт в одном форке (отдельный код, общий релиз)

Даты сдвигались и раньше. Канонический источник — Issues tracker MRL. Следите за monero-project/research-lab и monero core repo по инженерным вехам.

Что делать прямо сейчас

  • Срочного — ничего. Ваш XMR форкнётся автоматически. Кошельки делают миграцию, вам не надо иначе обращаться с ключами.
  • Следите за changelog вашего кошелька по мере приближения форка — Feather, Cake, Monerujo и Monero GUI отметят релиз FCMP++/Carrot. Обновляйтесь до высоты форка, не после.
  • Если вы публиковали view key (донат-адреса, view-only доступ для бизнеса), ожидайте, что после Carrot её придётся обновить. Планируйте обновление как разовое дело, не как аварию.
  • Не churn-ите заранее. Как только FCMP++ активирован, максимум anonymity set уже достигнут. Тратить до или после форка — после апгрейда приватность та же.

Как это вписывается в более широкий privacy-tech ландшафт

Другие приватные сети идут другими путями: Zcash использует zk-SNARKs (proofs меньше, приватность opt-in, trusted setup), Mimblewimble-сети (Beam, Grin) используют другую commitment-модель, семейство CoinJoin Bitcoin — opt-in mixing поверх прозрачной цепочки, Lelantus-Spark (Firo) — Monero-подобный ZK-подход с другой proof-системой. FCMP++ — это Monero, говорящий: «мы не переходим на zk-SNARKs и не идём в territory trusted-setup — мы масштабируем существующую privacy-by-default модель до максимально возможного anonymity set». Параллельное сравнение — в FCMP++ vs другие privacy-tech.

Авторитет

FCMP++ — это в основном работа Luke «kayabaNerve» Parker при peer-review Monero Research Lab. Этот текст — простая версия от xmr.club; за каноном идите сюда:

xmr.club не заменяет ни один из этих источников по криптографии. Наша роль — переводить research в «что это значит для того, кто держит Monero в этом году». За математикой — к постам Luke.