Стелс-адреса Monero: как они устроены и как работают
Стелс-адреса Monero: как они устроены и как работают
Если вы вставите свой публичный адрес Monero в любой блок-эксплорер, вы не увидите ни одной входящей транзакции. Это не ошибка и не пропавший индекс — эксплорер действительно не может связать ваш адрес с теми выходами, которые принадлежат вам. За этой контринтуитивной особенностью скрывается одно из самых элегантных решений прикладной криптографии во всей индустрии цифровых валют: стелс-адрес. На дворе 2026 год, и даже такие компании сетевого надзора, как Chainalysis и TRM Labs, публично признают, что не могут стабильно отслеживать получателей XMR. Стелс-адреса по-прежнему остаются тихим рабочим механизмом, защищающим каждого пользователя Monero — от розничного покупателя через MoneroSwapper до журналиста, принимающего анонимные пожертвования. В этой статье мы детально разбираем, что такое стелс-адреса, как они математически выводятся, почему каждая транзакция порождает уникальный одноразовый выход и от каких угроз они защищают, а от каких — нет.
Почему приватность получателя — самая сложная задача в крипте
Bitcoin решил задачу децентрализованного консенсуса, но почти не затронул проблему конфиденциальности получателя. Когда Алиса отправляет Бобу 0.1 BTC, весь мир видит, что адрес Боба пополнился на 0.1 BTC. Стоит Бобу повторно использовать этот адрес — и все прошлые и будущие платежи связываются между собой. Эвристики вроде common-input-ownership и кластеризации адресов превратили Bitcoin в одну из самых наблюдаемых финансовых систем в истории. В 2025 году исследователи из IMDEA Networks Institute показали, что более 71% обычных Bitcoin-кошельков можно деанонимизировать только по публичным он-чейн данным, даже без утечек из KYC-сервисов.
Monero занимает противоположную позицию: каждый выход обязан быть несвязываемым с публичным адресом получателя. Эту гарантию обеспечивают три кита:
- Стелс-адреса скрывают получателя — внешний наблюдатель не может определить, какому публичному адресу принадлежит конкретный выход.
- Кольцевые подписи и CLSAG скрывают отправителя — настоящий плательщик растворён среди 15 ложных кандидатов.
- RingCT и Bulletproofs+ скрывают сумму — её знают только отправитель и получатель.
Стелс-адреса — это та «нога штатива», которая отвечает за сторону получателя. Без них одних только кольцевых подписей было бы недостаточно: место назначения всё равно бы протекало, а гарантии приватности рушились бы. Именно благодаря стелс-адресам публичный адрес Monero можно безопасно публиковать на сайте, печатать на визитке или раздавать тысячам жертвователей: сколько бы платежей на него ни пришло, каждый создаёт совершенно новый, математически несвязанный с предыдущими выход в блокчейне.
Математика: как именно генерируется стелс-адрес
Публичный адрес Monero — это не хэш, как в Bitcoin. Это конкатенация двух открытых ключей на эллиптической кривой Ed25519: публичного ключа траты (большая B) и публичного ключа просмотра (большая A). Соответствующие приватные ключи обозначаются маленькими b и a. Когда отправитель хочет передать вам XMR, его кошелёк не вставляет ваш адрес в транзакцию — это полностью разрушило бы саму идею. Вместо этого выполняется следующая последовательность вычислений.
Шаг 1. Отправитель генерирует случайный транзакционный ключ
Кошелёк отправителя выбирает свежий случайный скаляр r для каждой транзакции. Из него вычисляется публичный транзакционный ключ R = r·G, где G — базовая точка кривой Ed25519. Значение R записывается в открытом виде в поле extra транзакции, но само по себе ничего о получателе не раскрывает.
Шаг 2. Отправитель вычисляет общий секрет
Используя ваш публичный ключ просмотра A, отправитель вычисляет общий секрет r·A. Это классический обмен по схеме Диффи-Хеллмана на эллиптической кривой. Благодаря симметрии операции вы — и только вы — можете получить то же самое значение как a·R, используя свой приватный ключ просмотра. Никто другой в сети не способен это сделать, потому что никто другой не владеет a.
Шаг 3. Отправитель выводит одноразовый ключ выхода
Тот самый одноразовый публичный ключ P, который попадает в блокчейн, рассчитывается так:
P = Hs(r·A || i)·G + B
Здесь Hs — это скалярная хэш-функция на базе Keccak, i — индекс выхода внутри транзакции (чтобы мульти-выходные транзакции тоже давали уникальные ключи), а B — ваш публичный ключ траты. Значение P записывается в блокчейн как адрес назначения. Со стороны это выглядит как обычный 32-байтный ключ, неотличимый от любого другого выхода в любой другой транзакции. Принципиально важно: P — это новая, никогда раньше не встречавшаяся точка на кривой. Даже если один и тот же отправитель тысячу раз заплатит одному и тому же получателю, все эти платежи будут выглядеть как тысяча независимых выходов.
Шаг 4. Получатель сканирует блокчейн и находит свои выходы
Ваш кошелёк скачивает каждый блок и для каждого выхода вычисляет Hs(a·R || i)·G + B, затем сравнивает результат с тем, что записано на цепочке. Если значения совпали — выход принадлежит вам. Именно поэтому синхронизация Monero-кошельков на мобильных устройствах часто кажется медленной: кошелёк обязан проверить каждый недавний выход против вашего ключа просмотра. По этой же причине одного только ключа просмотра достаточно, чтобы видеть входящие транзакции, но недостаточно, чтобы тратить средства — он умеет вычислять общий секрет, но не умеет получать одноразовый приватный ключ для подписи.
Чтобы фактически потратить выход, нужно скомбинировать свой приватный ключ траты b с тем же самым хэшем и получить одноразовый приватный ключ x = Hs(a·R || i) + b, который соответствует точке P. Без b никакой объём данных просмотра не позволит никому переместить средства. Именно эта чистая разделённость и позволяет давать аудиторам, бухгалтерам или налоговому софту доступ «только для чтения» к Monero-кошельку, не создавая рисков по тратам.
Стелс-адрес, субадрес и интегрированный адрес — в чём разница
На самом деле Monero поставляет три связанных конструкции на стороне получателя. Их часто путают даже опытные пользователи, поэтому имеет смысл сравнить их прямо в одной таблице.
| Конструкция | Что это | Когда использовать | Компромисс по приватности |
|---|---|---|---|
| Стелс-адрес (одноразовый выход) | Автоматически генерируется на каждую транзакцию; повторно не используется | В каждой транзакции — пользователь его не видит | Никакого — это базовый уровень |
| Субадрес | Детерминированный потомок основного адреса; позволяет одному кошельку держать множество независимых меток для приёма | Выставление счетов клиентам, учёт пожертвований, депозиты на биржи | Каждый субадрес внешне не связан ни с другими, ни с основным адресом |
| Интегрированный адрес | Основной адрес плюс зашифрованный 64-битный идентификатор платежа | Legacy — большинство сервисов перешли на субадреса в 2018-2019 годах | Payment ID шифруется в цепочке, но всё равно добавляет метаданные; для новых интеграций устарел |
| Ключ просмотра | Приватный ключ, способный сканировать, но не тратить | Аудит, налоговая отчётность, watch-only кошельки | Даёт держателю полную видимость входящих — делитесь аккуратно |
Главное: генерация стелс-адресов происходит на уровне протокола, автоматически, для каждого выхода — независимо от того, что подставил отправитель: основной адрес, субадрес или интегрированный адрес. Вручную вы никогда не вводите стелс-адрес именно потому, что никогда его и не видите — кошелёк выводит его из того адреса, который вставил отправитель.
Пошагово: реальный платёж от отправителя к получателю
Допустим, вы покупаете приватный VPS-хостинг у российского провайдера, который принимает XMR. Вот что в точности происходит между моментом, когда вы нажимаете «отправить», и моментом, когда продавец видит баланс.
- Вы вставляете основной адрес или субадрес продавца (длинная строка, начинающаяся с 4 или 8) в окно отправки кошелька и указываете сумму.
- Ваш кошелёк генерирует случайный приватный транзакционный ключ r и вычисляет R = r·G. Это публичный ключ, который будет сопровождать транзакцию.
- Для каждого выхода-получателя кошелёк выводит одноразовый стелс-адрес P = Hs(r·A || i)·G + B, используя ключи просмотра и траты получателя. Выход сдачи, возвращающейся обратно к вам, формируется аналогично — но уже на ваших собственных ключах.
- Кошелёк подбирает 15 ложных выходов того же класса деноминации из прошлых блоков и собирает кольцевую подпись CLSAG так, чтобы любой из 16 кандидатов мог оказаться настоящим плательщиком.
- Суммы шифруются общим секретом Диффи-Хеллмана, а Bulletproofs+ доказывают, что все суммы положительны, не раскрывая самих чисел.
- Транзакция распространяется через Dandelion++, что прячет IP-адрес её источника от сетевых наблюдателей и интернет-провайдеров.
- После майнинга кошелёк продавца сканирует блок, вычисляет общий секрет a·R для R каждой транзакции, проверяет, совпадают ли выведенные P с записями в выходах, и тихо обновляет баланс.
Весь цикл занимает порядка 20 секунд вычислений плюс среднее время блока в 2 минуты. Снаружи транзакция выглядит идентично любой другой Monero-транзакции в цепочке: тот же размерный класс, тот же размер кольца, та же структура доказательств. У третьей стороны — биржи, ISP, аналитика цепочки — нет способа взглянуть на блокчейн и определить, что продавец получил средства, не говоря уже о сумме.
Продавец может десять лет подряд публиковать один и тот же Monero-адрес на каждой странице своего сайта — и ни разу не скомпрометировать свою приватность. Каждый платёж приземляется на свежий, несвязываемый одноразовый выход, который блокчейн не ассоциирует с публичным адресом.
От чего стелс-адреса НЕ защищают
Криптографическая приватность необходима, но не достаточна. Стелс-адреса защищают он-чейн связываемость, но не способны защитить от ошибок пользователя и от утечек по сторонним каналам. Понимание границ инструмента — часть его правильного использования.
- KYC на on-ramp. Если вы покупаете XMR на централизованной бирже, которая провела вашу идентификацию, биржа знает R-значение вашей транзакции вывода. Они не видят, куда вы отправили монеты дальше, но у них есть очень крепкая отправная точка. Использование no-KYC сервисов вроде MoneroSwapper изначально исключает посадку этого корня в землю.
- Повторное использование адреса вне цепочки. Стелс-адреса предотвращают он-чейн связь, но если вы публикуете один и тот же основной адрес в Telegram-канале, на GitHub и в форумном профиле, любой желающий может скоррелировать ваши реальные личности — даже не имея возможности скоррелировать транзакции.
- Утечка ключа просмотра. Если вы поделились ключом просмотра для аудита, а машина аудитора потом была скомпрометирована, все прошлые и будущие входящие транзакции на этот кошелёк становятся видны атакующему. Используйте отдельный кошелёк под любую проверку с view-key.
- Корреляция по времени и сумме. Структура, контролирующая одновременно и биржу, и магазин, не сможет связать он-чейн выход, но сможет сопоставить время и приблизительную сумму вывода с последующим платежом. Поэтому Monero рекомендует ждать минимум 10 подтверждений (около 20 минут), прежде чем считать средства финальными, а суммы платежей не должны быть уникальными «отпечатками» — избегайте отправлять 0.12345678 XMR, если счёт продавца был ровно 0.12345678 EUR.
- Метаданные на уровне IP. Стелс-адреса живут на криптографическом уровне. Приватность на уровне сети обеспечивается Dandelion++ и сильно усиливается, если вы запускаете собственную ноду через Tor или I2P. Кошелёк, по умолчанию подключающийся к удалённой ноде третьей стороны, сливает оператору этой ноды связку «IP → кошелёк».
Практический пример: анонимный приём пожертвований
Представьте независимую журналистку, ведущую блог о расследованиях в конце 2025 года. Она хочет принимать пожертвования читателей, не деанонимизируя ни их, ни себя. Её рабочий процесс выглядит так.
Она публикует один-единственный основной Monero-адрес в подвале сайта, в PGP-подписанной биографии и в конце каждой статьи. За шесть месяцев она получает 412 пожертвований размером от 0.001 до 4.3 XMR. На блокчейне ни один из этих платежей не связывается с её опубликованным адресом. Ни один не связывается ни с каким другим. Блок-эксплореры вроде xmrchain.net показывают 412 транзакций на 412 различных одноразовых выходов, разбросанных по тысячам блоков, без какой-либо возможности кластеризации.
Когда она захочет конвертировать часть в фиат на жизнь, она не отправит монеты на KYC-биржу — это создало бы бумажный след, связывающий активность кошелька с её личностью. Вместо этого она использует no-KYC обмен, чтобы конвертировать XMR в приватность-уважающий стейблкоин или в BTC, который потом тратит через некастодиальный канал. От начала и до конца ни один централизованный посредник не хранит запись о связи между опубликованным адресом и её реальной личностью. Это и есть модель угроз, под которую проектировались стелс-адреса; и это же та модель, которую расширяет no-account-обмен MoneroSwapper, гарантируя, что точки входа в Monero и выхода из него сами по себе не становятся векторами деанонимизации.
Будущее: FCMP++ и что меняется для стелс-адресов
Вывод стелс-адресов входит в Monero ещё с оригинальной статьи CryptoNote 2014 года и за десятилетие принципиально не менялся. Что меняется в 2026 году и далее — так это слой приватности на стороне отправителя. Full-Chain Membership Proofs (FCMP++), ожидаемые к активации в одном из хардфорков 2026 года, заменят текущую кольцевую подпись на 16 участников доказательством с нулевым разглашением о том, что потраченный выход — один из всех существующих подходящих выходов в цепочке. Это эффективно превращает анонимный набор из 16 в множество из десятков миллионов.
Для стелс-адресов математика остаётся прежней. Одноразовый выход всё так же выводится как P = Hs(r·A || i)·G + B. Получатель всё так же сканирует через a·R. Меняется лишь то, что при последующей трате этого выхода доказательство владения больше не привязывается к 15 конкретным ложным кандидатам. В сочетании с Seraphis и форматом адресов Jamtis на более далёкой дорожной карте стелс-адреса станут ещё гибче: Jamtis вводит address-теги, позволяющие легковесным кошелькам сканировать эффективнее, не ослабляя гарантию несвязываемости. Эта закономерность, при которой математические исследования превращаются в работающую приватность, — одна из причин, почему Monero и в 2026 году остаётся эталонной реализацией приватности получателя.
Часто задаваемые вопросы
Видно ли третьей стороне, сколько XMR получил мой адрес?
Нет. В отличие от Bitcoin, где баланс любого адреса публично виден, у основного адреса Monero вообще нет он-чейн баланса. Баланс вычисляется кошельком владельца путём сканирования выходов на совпадение со стелс-адресным выводом. Третья сторона, владеющая только вашим публичным адресом, не может определить ни количество транзакций, ни их суммы, ни даты.
Безопасно ли повторно использовать один и тот же адрес Monero?
Технически — да. Каждый платёж на один и тот же адрес всё равно порождает уникальный он-чейн стелс-адрес, и транзакции не связываются между собой. Тем не менее для учёта и операционной приватности хорошей практикой считается генерировать отдельный субадрес под каждого контрагента: если вы когда-нибудь поделитесь ключом просмотра или один контрагент окажется скомпрометирован, ущерб ограничится только этим субадресом.
В чём разница между ключом просмотра и стелс-адресом?
Ключ просмотра — это приватный ключ, принадлежащий вашему кошельку и позволяющий находить входящие платежи путём пересчёта вывода стелс-адресов. Стелс-адрес — это он-чейн одноразовый выход, который ключ просмотра помогает найти. Ключ просмотра их читает, но не создаёт.
Делают ли стелс-адреса Monero устойчивым к квантовым атакам?
Нет. Стелс-адреса опираются на допущение дискретного логарифма на кривой Ed25519, которое квантовый компьютер достаточной мощности сломает алгоритмом Шора. Исследовательская лаборатория Monero держит в долгосрочной дорожной карте несколько постквантовых предложений, включая решёточные замены текущей схемы, но в 2026 году ни одно из них не развёрнуто. Если ваша модель угроз включает реалистичного квантового противника, стелс-адреса вам не помогут.
Если я отправляю XMR сам себе, мой кошелёк тоже создаёт стелс-адрес?
Да. Каждый выход — даже сдача, возвращающаяся обратно к отправителю — это стелс-адрес, выведенный из ваших собственных ключей просмотра и траты. Именно поэтому выходы сдачи тоже не связываются с вашим основным адресом, и именно поэтому свежий кошелёк, в котором был всего один self-send, выглядит на блокчейне как два независимых получателя.
Может ли суд или ФНС принудить стелс-адрес раскрыть владельца?
Ни одна сторона, владеющая только он-чейн данными, не может сопоставить стелс-адрес обратно с публичным адресом без ключа просмотра. Судебное решение или запрос ФНС может обязать владельца кошелька (если он установлен) выдать свой ключ просмотра, но не может обязать сеть или третью сторону выполнить обратное преобразование — математически такого преобразования не существует.
Заключение
Стелс-адреса — это тихая половина приватности Monero. Кольцевые подписи и RingCT собирают большую часть внимания, потому что защищают отправителя и сумму, но без одноразовых ключей выхода на каждую транзакцию эта защита была бы пустой: получатель всё равно утекал бы, а сетевые аналитики продолжали бы кластеризовать получателей. То, что CryptoNote правильно угадал в 2014 году, и что Monero пронесла через десятилетие апгрейдов, — это понимание того, что приватность получателя структурна, а не опциональна. Она должна быть встроена в каждую транзакцию автоматически, без требований к пользователю что-либо включать. Именно этот структурный выбор делает публикацию XMR-адреса для пожертвований безопасной — в отличие от публикации BTC-адреса.
Если вы приходите из Bitcoin и хотите воспользоваться этим свойством на практике, самый чистый первый шаг — приобрести XMR без создания привязанной к личности точки входа. MoneroSwapper позволяет обменивать BTC, ETH, LTC, USDT и десяток других активов на Monero без аккаунта, без KYC и без хранения логов, которые впоследствии разрушили бы те самые гарантии, о которых шла речь выше. Как только монеты приземлятся в ваш собственный кошелёк, всю остальную работу стелс-адреса сделают автоматически — каждый полученный вами платёж будет несвязываем с любым другим, и единственный человек, способный доказать владение любым из них, — это вы сами.
🌍 Читать на