Стелс-адреса Monero: как это работает
Стелс-адреса Monero: как это работает
Откройте любой блок-эксплорер Monero и попробуйте найти адрес, на который вы только что отправили платёж. У вас не получится. Пролистайте тысячи транзакций — и вы ни разу не увидите в цепочке публичный адрес получателя. Ни одного. Именно это отличает Monero от Bitcoin, где каждый платёж становится постоянной и легко находимой связкой между отправителем и получателем. Механизм, который заставляет адрес «исчезать», называется стелс-адресом, и он молча отрабатывает в каждой транзакции — в том числе в тех, что проходят через MoneroSwapper, когда вы меняете другую монету на XMR.
Стелс-адрес — это не та длинная строка, начинающаяся с «4», которую вы копируете, чтобы получить средства. Эта публичная строка распространяется свободно: её можно опубликовать на сайте, напечатать на визитке или раздать тысяче клиентов. А вот в блокчейн попадает совсем другое — свежий одноразовый ключ назначения, сгенерированный отправителем, математически привязанный к вам, но нечитаемый ни для кого постороннего. В этой статье мы разберём, как именно это устроено, почему стелс-адрес лежит в основе модели приватности Monero и как он взаимодействует с двумя другими опорами протокола — кольцевыми подписями и RingCT, — обеспечивая настоящую взаимозаменяемость монет.
Почему приватность получателя — самая сложная задача
Большинство людей считают, что самое опасное в прозрачном блокчейне — это сумма перевода. Это не так. Куда серьёзнее утечка через граф адресов: паутину связей «кто кому платил», которую аналитические компании восстанавливают, чтобы деанонимизировать пользователей, объединять кошельки в кластеры и помечать «грязные» монеты. В Bitcoin повторное использование одного адреса превращает всю вашу финансовую историю в публичную таблицу, открытую для любого желающего.
Monero решает три разные проблемы видимости тремя разными инструментами, и их полезно не путать:
- Скрытие получателя: стелс-адрес гарантирует, что ни один из двух платежей в ваш адрес не попадёт на один и тот же ончейн-выход, поэтому наблюдатель не сможет связать их между собой.
- Скрытие отправителя: кольцевые подписи (а с 2020 года — алгоритм CLSAG) подмешивают ваш реальный вход к ложным, поэтому неясно, какая именно монета была потрачена.
- Скрытие суммы: RingCT, защищённый доказательствами диапазона, шифрует значения переводов, но при этом сеть по-прежнему может проверить, что ничего не было создано из воздуха.
Стелс-адреса решают первую задачу, и на стороне получателя они делают это бесплатно: вам не нужно вручную генерировать новый адрес под каждый платёж, как это рекомендуют делать заботящимся о приватности пользователям Bitcoin. Протокол справляется автоматически, миллиарды раз, без какой-либо координации между отправителем и получателем — кроме того единственного публичного адреса, которым вы уже поделились.
Как стелс-адрес работает на самом деле
В основе лежит обмен ключами по схеме Диффи-Хеллмана на эллиптической кривой ed25519 — той же семьи кривых, что используется в современных цифровых подписях. Схему Monero иногда называют протоколом двухключевого стелс-адреса (Dual-Key Stealth Address Protocol), потому что ваш публичный адрес кодирует два ключа, а не один.
Две ваши пары ключей
Когда вы создаёте кошелёк Monero из мнемонической seed-фразы, кошелёк выводит две пары ключей:
- Ключи траты (b, B): приватный ключ траты
bразрешает расходование средств; его публичная параB— это половина вашего адреса. - Ключи просмотра (a, A): приватный ключ просмотра
aпозволяет обнаруживать входящие средства; его публичная параA— вторая половина вашего адреса.
Ваш публичный адрес — та самая строка из 95 символов — это по сути B и A, упакованные вместе с сетевым байтом и контрольной суммой. Принципиальный момент: ключ просмотра можно передать аудитору или бухгалтеру, и тот сможет видеть ваши входящие платежи, но не сможет потратить ни одного пиконеро. Ключ траты — это тот, что вы бережёте как зеницу ока.
Что вычисляет отправитель
Когда кто-то платит вам, его кошелёк автоматически и за доли секунды делает следующее:
- Генерирует случайный секретный скаляр
rтолько для этой транзакции. - Публикует соответствующий публичный ключ транзакции
R = r·Gвнутри самой транзакции (G — базовая точка кривой). - Вычисляет общий секрет с помощью вашего публичного ключа просмотра:
H(r·A), где H — хеш на базе Keccak. - Выводит одноразовый ключ назначения
P = H(r·A)·G + Bи записываетPв блокчейн как адрес выхода.
Этот ключ P и есть стелс-адрес. Он уникален для данной транзакции. Заплатите одному и тому же человеку дважды — и получите два совершенно непохожих друг на друга выхода, потому что r каждый раз новый. Никакой сторонний наблюдатель не сможет связать P с вашим опубликованным адресом: для этого ему понадобился бы либо ваш приватный ключ просмотра, либо решение задачи дискретного логарифмирования.
Отправитель записывает в блокчейн совершенно новый адрес для каждого отдельного платежа — а получателю даже не приходится об этом просить. В этом и заключается тихая гениальность стелс-адреса.
Как вы находите собственные деньги
Вот часть, которая удивляет новичков: раз ваш настоящий адрес никогда не появляется в цепочке, как кошелёк понимает, что платёж пришёл? Он сканирует. Кошелёк берёт опубликованный в каждой транзакции R и вычисляет H(a·R)·G + B, используя ваш приватный ключ просмотра a. По математике Диффи-Хеллмана a·R = a·r·G = r·a·G = r·A, поэтому получается ровно тот же P, что создал отправитель. Если результат совпадает с одним из выходов транзакции — этот выход ваш.
Именно поэтому синхронизированному кошельку Monero приходится проверять каждую транзакцию в цепочке: он не может спросить у сервера «какой у меня баланс?», не выдав, какие выходы его интересуют. Стоимость этого сканирования — это и есть цена приватности получателя, и именно из-за неё кошельки только для просмотра и инструменты вроде официального monero-wallet-cli тратят время на «обновление».
Чтобы реально потратить полученный выход, кошелёк вычисляет одноразовый приватный ключ x = H(a·R) + b, для чего нужен приватный ключ траты b. Этот одноразовый ключ также порождает уникальный образ ключа (key image) — значение, по которому сеть выявляет двойные траты, не раскрывая, какой именно выход расходуется.
Стелс-адреса против других подходов к приватности
Полезно посмотреть, где находится автоматический, заложенный в сам протокол подход Monero рядом с альтернативами, к которым тянутся пользователи прозрачных блокчейнов.
| Подход | Приватность получателя | Недостаток |
|---|---|---|
| Повторное использование адреса Bitcoin | Нет — полностью публично и связываемо | Вся история раскрыта |
| Новый адрес Bitcoin на каждый платёж | Частичная; ломается при объединении выходов | Ручная работа, легко ошибиться, утечка при трате |
| CoinJoin / миксеры | Вероятностная, по желанию | Эвристики и тайминг-анализ, часто кастодиальны |
| Стелс-адрес Monero | Обязательная, на каждую транзакцию, автоматическая | Кошелёк обязан сканировать цепочку |
Ключевое отличие в том, что приватность Monero — это не функция, которую вы по желанию включаете, а поведение по умолчанию для всех 100% транзакций в сети. Именно эта всеобщность и порождает взаимозаменяемость: раз ни одну монету нельзя отличить от другой или проследить до «грязного» источника, любой XMR равнозначен любому другому XMR. Миксер прячет только тех, кто им пользуется; приватность по умолчанию прячет всех — а это и делает набор анонимности по-настоящему значимым.
Где здесь субадреса
В 2018 году Monero добавил поверх механики стелс-адресов функцию субадресов (Subaddress). Субадрес позволяет генерировать фактически неограниченное число адресов для приёма (по одному на клиента, на счёт, на сценарий использования), и все они стекаются в один кошелёк — без утечки приватности, свойственной старым подходам с «payment ID». Каждый субадрес по-прежнему разворачивается в несвязываемые одноразовые выходы в цепочке: субадреса — это организационное удобство для вас, надстройка над криптографией, которая прячет данные от всех остальных.
Как стелс-адреса вписываются в общую картину Monero
Стелс-адреса — одна из трёх ножек табурета. Уберите любую — и приватность рухнет. Спрячьте получателя, но раскройте отправителя — и аналитики пройдут по графу в обратную сторону. Спрячьте обе стороны, но раскройте суммы — и характерные значения превратятся в отпечатки пальцев. Именно эта эшелонированная защита объясняет, почему Monero устоял, пока отдельные сервисы микширования один за другим закрывали или взламывали в течение 2024 и 2025 годов.
Технология при этом не застыла. Долго готовившееся обновление CLSAG заменило более старые кольцевые подписи MLSAG, сократив размер транзакции и время проверки, а Bulletproofs, а следом Bulletproofs+ резко урезали размер доказательств диапазона, защищающих суммы. В перспективе инициатива доказательств членства по всей цепочке (FCMP++) ставит целью полностью заменить кольцевые подписи единым доказательством, охватывающим весь блокчейн, — расширяя набор анонимности отправителя с 16 ложных входов фактически до каждого выхода, когда-либо созданного. Параллельно новые схемы адресации Seraphis и Jamtis призваны модернизировать работу стелс-адресов и функций ключа просмотра, включая более гибкие уровни ключей просмотра и более быстрое сканирование кошельком.
Ни один из этих пунктов дорожной карты не отменяет стелс-адреса — они уточняют и развивают ту же базовую идею. Принцип, сформулированный ещё в техническом документе CryptoNote 2014 года, — что назначением платежа должен быть одноразовый ключ, который не распознает никто, кроме получателя, — остаётся фундаментом.
Разбор на практике: получаем обмен
Представьте, что вы меняете немного Litecoin на Monero через MoneroSwapper и вставляете в заявку свой обычный адрес XMR. Вот что происходит за кулисами:
- Вы делитесь своим публичным адресом — одной строкой, которую можно безопасно использовать сколько угодно раз.
- Отправляющий кошелёк генерирует свежий случайный
r, вычисляет ваш одноразовый ключ выходаPи транслирует транзакцию в мемпул. - Транзакция подтверждается, и
Pзаписывается в цепочку. Для любого наблюдателя это анонимный выход среди множества других, без какой-либо связи с вами. - Ваш кошелёк, сканируя новые блоки, заново вычисляет
Pс помощью приватного ключа просмотра, распознаёт выход и зачисляет средства на баланс.
Ни в один момент ваш настоящий адрес не касался блокчейна. Если на следующей неделе вы получите второй обмен на тот же адрес, два выхода не будут иметь между собой никакой видимой связи. Это и есть повседневная реальность использования Monero: приватность невидима, автоматична и не требует от вас ничего, кроме сохранения seed-фразы в безопасности.
Приватность Monero и российский контекст
Для русскоязычного пользователя у этой темы есть и сугубо практическая сторона. Регулирование криптовалют в России остаётся жёстким: ЦБ РФ исторически выступал против свободного оборота частных цифровых валют, а с точки зрения налогов ФНС рассматривает доход от операций с криптоактивами как объект декларирования. На этом фоне приватные монеты регулярно вылетают из листинга крупных площадок, а сами биржи всё чаще требуют прохождения KYC. Стелс-адрес здесь работает на стороне пользователя: даже после вывода монет на собственный кошелёк ваш публичный адрес не становится точкой, по которой можно связать все ваши поступления воедино.
Важно различать две вещи. Приватность на уровне протокола — это про то, что видно в блокчейне; она не отменяет требований законодательства о декларировании доходов. Стелс-адреса прячут граф адресов от блокчейн-аналитики, но не освобождают вас от обязанностей перед ФНС. Грамотный подход — пользоваться криптографией Monero по назначению и при этом честно вести учёт операций для целей налогообложения, не смешивая техническую анонимность с уклонением от закона.
Частые вопросы
Мой адрес Monero — это и есть стелс-адрес?
Нет. Адрес, который вы копируете и которым делитесь (строка из 95 символов, начинающаяся с «4»), — это ваш публичный адрес. Стелс-адрес — это одноразовый ключ, который отправитель выводит из него и записывает в блокчейн. Сам ваш публичный адрес никогда не появляется в цепочке — туда попадают только несвязываемые одноразовые выходы.
Можно ли безопасно повторно использовать адрес Monero?
Да. В отличие от Bitcoin, повторное использование адреса Monero ничего не раскрывает, потому что каждый входящий платёж попадает на отдельный стелс-адрес, который наблюдатель не может связать ни с вашим опубликованным адресом, ни с другими платежами. Многие всё же предпочитают субадреса для упорядочивания входящих средств, но это удобство, а не требование приватности.
Если адреса скрыты, как кошелёк видит входящие средства?
Кошелёк использует ваш приватный ключ просмотра, чтобы сканировать каждую транзакцию и проверять, не предназначен ли каждый выход именно вам. Поэтому кошелькам нужно «синхронизироваться» или «обновляться» — нет сервера, который сообщил бы вам баланс, не заставив раскрыть, какие выходы вас интересуют. Ключ просмотра позволяет обнаруживать средства; чтобы реально ими распоряжаться, нужен отдельный ключ траты.
Если я передам ключ просмотра, смогут ли украсть мои монеты?
Нет. Приватный ключ просмотра даёт лишь возможность видеть входящие транзакции — это удобно для аудитора, бухгалтера или налоговой отчётности. Для траты нужен приватный ключ траты, которого у держателя ключа просмотра нет. Держите в секрете полную мнемоническую seed-фразу, поскольку из неё можно восстановить оба ключа.
Уберут ли FCMP++ или Seraphis стелс-адреса?
Нет. Эти обновления нацелены соответственно на приватность отправителя и системы доказательств, а также на уровень адресации. Базовая концепция одноразовых несвязываемых ключей назначения сохраняется. Seraphis и Jamtis призваны улучшить ключи просмотра и скорость сканирования, а не раскрыть адреса получателей.
Заключение
Стелс-адреса — причина того, почему адрес Monero может быть одновременно публичным и приватным: вы транслируете одну строку всему миру, но каждый платёж в её адрес превращается в изолированный, неузнаваемый выход в цепочке. В сочетании с кольцевыми подписями, скрывающими отправителя, и RingCT, скрывающим сумму, они дают Monero модель приватности, которая обязательна, автоматична и одинаково применяется к каждой транзакции, — а это и есть условия, при которых возможна настоящая взаимозаменяемость.
Если вы хотите получить такую защиту с самого момента поступления монет, способ приобретения XMR — без логов и без аккаунта — значит не меньше, чем сама криптография. Вы можете купить Monero анонимно или обменять имеющийся баланс через MoneroSwapper, а механика стелс-адресов тихо сделает всё остальное — сгенерирует одноразовое назначение, которое ни один блок-эксплорер, биржа или аналитик никогда не сможет проследить до вас.
🌍 Читать на