MoneroSwapper MoneroSwapper

Monero: ключ просмотра против ключа траты

MoneroSwapper · · · 1 min read · 14 views

Ключ просмотра и ключ траты Monero: подробный разбор

Если вы хоть раз пытались показать бухгалтеру поступление XMR, не отдавая при этом контроль над всем кошельком, вы уже сталкивались с задачей, ради которой эти два ключа существуют. В отличие от Bitcoin, где один приватный ключ управляет и балансом, и расходами, Monero намеренно разделяет полномочия между ключом просмотра и ключом траты. Именно это разделение позволяет приватной криптовалюте оставаться проверяемой по требованию, поддерживать страницы для пожертвований с публичным балансом и питать лёгкие мобильные кошельки, которые никогда не получают доступа к вашим средствам. При этом большинство новичков путают эти ключи, вставляют их не в те поля или считают, что раскрытие одного автоматически раскрывает второй. В 2026 году, когда FCMP++ уже стоит в дорожной карте тестовой сети, а площадки вроде MoneroSwapper обрабатывают тысячи обменов без KYC ежедневно, понимать разницу между ключами — уже не академическое упражнение. Это граница между чистым аудиторским отчётом и опустошённым кошельком. В этом руководстве разбираем, что именно умеет каждый ключ, чего он не умеет и почему криптографические примитивы Monero превращают эту пару в нечто, что односложная модель Bitcoin воспроизвести не может.

Почему Monero использует два приватных ключа вместо одного

Учётная модель Monero происходит от CryptoNote — протокола 2013 года, который принёс в криптовалюты кольцевые подписи и одноразовые скрытые адреса. Чтобы эти примитивы работали, кошельку нужно выполнять две принципиально разные задачи: просматривать весь блокчейн в поисках выходов, адресованных ему, и санкционировать траты этих выходов. Авторы CryptoNote заметили, что роль наблюдателя и роль распорядителя средств можно развести на два независимых скаляра, каждый из которых получен из 32-байтного зерна, но криптографически не связан с другим по своим публичным следствиям.

В итоге личность кошелька складывается из четырёх чисел — приватного ключа траты, приватного ключа просмотра и двух их публичных «соседей», — которые склеиваются и кодируются в base58, давая знакомый 95-символьный адрес Monero. У такого разделения есть три практических плюса:

  • Избирательная прозрачность: ключ просмотра можно передать налоговому органу (например, ФНС), отделу комплаенса биржи или аудитору благотворительного фонда, чтобы они подтвердили поступления, при этом не получив никакой возможности шевелить монеты.
  • Лёгкие клиенты: мобильным кошелькам и наблюдательным узлам для показа баланса нужен только ключ просмотра, поэтому хранение ключа траты в холоде на изолированной машине становится комфортным в повседневном сценарии.
  • Эшелонированная защита: компрометация ключа просмотра вскрывает историю транзакций, но не сами средства; кража устройства превращается в инцидент по приватности, а не в финансовую потерю.

Ничего из этого нельзя получить в UTXO-модели Bitcoin без доверенных посредников или внешних надстроек с доказательствами с нулевым разглашением. Monero встраивает это в сам протокол — поэтому любой кошелёк, от официального CLI до встроенного движка обменов MoneroSwapper, выдаёт оба ключа как полноценные объекты, которые можно отдельно экспортировать, импортировать и проверять.

Приватный ключ просмотра в деталях

Приватный ключ просмотра — это 32-байтный скаляр, который в утилитах вроде monero-wallet-cli или Feather Wallet отображается как строка из 64 шестнадцатеричных символов. Его единственная криптографическая задача — вычислять общий секрет между отправителем и получателем каждой транзакции, которая потенциально принадлежит кошельку. Когда вам отправляют XMR, отправитель формирует одноразовый скрытый адрес из вашего публичного ключа траты, вашего публичного ключа просмотра и свежего случайного ключа транзакции. Для любого стороннего наблюдателя получившийся выход выглядит как шум — кроме вас, ведь ваш приватный ключ просмотра позволяет восстановить тот же самый общий секрет и опознать выход как «свой».

Что ключ просмотра умеет

Имея только публичный адрес и приватный ключ просмотра, программа может пройти по цепочке и расшифровать три вещи для каждого выхода: скрытый адрес получателя (доказательство, что выход ваш), сумму (расшифровывается из обязательства RingCT) и идентификатор платежа, если он был прикреплён. Этого достаточно, чтобы собрать полную историю входящих транзакций. Бизнес использует это для отслеживания продаж, страницы пожертвований публикуют свой ключ просмотра, чтобы кто угодно мог сверить суммы в реальном времени, а налоговый софт строит на этом отчёты по себестоимости, ни разу не запросив права на расход.

Чего ключ просмотра не умеет

Ключ просмотра не умеет подписывать транзакции. Он не умеет генерировать образ ключа — а значит, не способен доказать, что какой-то выход уже потрачен. В наблюдательном кошельке исходящие транзакции остаются невидимыми до тех пор, пока пользователь не импортирует подписанный файл с образами ключей из офлайн-кошелька, отвечающего за трату; только после этого баланс сходится. Это самая наглядная демонстрация работы разделения: ключ просмотра видит, как деньги пришли, но теряет их из виду в момент ухода, пока расходная сторона не поделится образами ключей.

Типичные ошибки с ключом просмотра

Самая частая ошибка — вставить ключ просмотра в поле «восстановление кошелька», которое ждёт мнемоническую фразу. Кошелёк примет ввод, выведет из неправильной энтропии совершенно другой ключ траты и покажет вам аккуратный, но абсолютно бесполезный кошелёк, который никогда не увидит ваших средств. Вторая ловушка — публикация ключа просмотра на общедоступной странице без понимания того, что это навсегда привязывает каждое прошлое и будущее поступление к реальной личности. Ключи просмотра не ротируются: один раз утечка — навсегда утечка. Относитесь к ним как к токену с правом «только чтение» для банковской выписки: для аудитора это удобно, для сталкера — катастрофа.

Приватный ключ траты в деталях

Приватный ключ траты — это второй 32-байтный скаляр, и именно он реально управляет монетами. Из этого одного числа кошелёк выводит образ ключа для каждого принадлежащего ему выхода, подписывает каждую кольцевую подпись CLSAG и формирует доказательства диапазона Bulletproofs+, подтверждающие неотрицательность сумм без их раскрытия. Потеряли ключ траты — потеряли деньги. Здесь нет ни восстановления, ни службы поддержки, ни отката цепочки.

Как ключ траты порождает образы ключей

Для каждого полученного выхода Monero вычисляет образ ключа — детерминированный хеш, зависящий и от одноразового публичного ключа выхода, и от приватного ключа траты кошелька. Так как образ уникален для каждого выхода, но не может быть подделан без ключа траты, он служит в Monero механизмом защиты от двойной траты. Когда транзакцию транслируют в сеть, валидаторы проверяют, что ни один из её образов ключей не появлялся в цепочке ранее. Хитрость в том, что тот же образ невозможно связать обратно с кошельком, который его произвёл, потому что кольцевая подпись прячет истинного подписанта среди набора ложных.

Ключ траты и мнемоническая фраза

Большинство пользователей никогда не видят «голый» 64-символьный ключ траты. Вместо него они видят мнемоническую фразу из 25 слов (или из 16 слов Polyseed в более новых кошельках), кодирующую ключ траты плюс контрольную сумму и дату рождения кошелька. Ключ просмотра уже детерминированно получается из ключа траты: его хешируют Keccak-256 и берут по модулю порядка группы Ed25519. Именно поэтому резервной копии ключа траты (или соответствующей seed-фразы) достаточно, чтобы восстановить весь кошелёк — ключ просмотра «выпадает» сам.

Почему ключ траты не передают никому

Передать ключ траты — функционально то же самое, что одним движением отправить кому-то весь свой баланс и всю свою историю транзакций. Фишинговые сайты, просящие «ключ верификации кошелька» или «полный ключ восстановления», почти всегда охотятся именно за ключом траты или за seed-фразой. Ни одна добропорядочная биржа, обменник или аудиторская фирма не запросит его. MoneroSwapper, например, для каждого обмена генерирует свежий integrated-адрес и никогда не прикасается к ключу траты клиента: депозитную транзакцию клиент подписывает и транслирует сам из своего собственного кошелька.

Ключ просмотра и ключ траты: сравнение бок о бок

В таблице ниже сведены практические различия. Используйте её как чек-лист перед тем, как вставить любой из ключей в поле, форму или сканер QR-кодов.

ВозможностьПриватный ключ просмотраПриватный ключ траты
Видеть входящие транзакцииДаДа (через производный ключ просмотра)
Видеть исходящие транзакцииТолько с импортированными образами ключейДа
Расшифровывать суммыДаДа
Подписывать и транслировать транзакцииНетДа
Генерировать образы ключейНетДа
Выводить второй ключНетДа (ключ просмотра выводится из ключа траты)
Безопасно передать аудиторуДаНикогда
Риск при утечкеПотеря приватности, средства целыПолная потеря средств
Хранится в мнемонической фразеВыводится, не хранитсяДа
Можно ротироватьНетНет (нужно перевести средства в новый кошелёк)

Обратите внимание на асимметрию в строке «Выводить второй ключ». Ключ траты способен породить ключ просмотра, но не наоборот. Именно эта односторонняя связь и делает ключ просмотра безопасным для публикации там, где раскрытие ключа траты обернулось бы катастрофой.

Как создать наблюдательный кошелёк: пошагово

Самая распространённая причина задуматься об этих ключах — собрать наблюдательный кошелёк: например, на смартфоне, который следит за балансом холодного хранилища на изолированном ноутбуке. Ниже — рабочий процесс на официальном monero-wallet-cli, хотя у Feather Wallet, Cake Wallet и MyMonero есть свои графические аналоги.

  1. На офлайн-машине откройте полный кошелёк и введите в командной строке viewkey. Скопируйте 64-символьную шестнадцатеричную строку. Введите address и скопируйте 95-символьный основной адрес. Ключ траты, seed-фразу и что-либо ещё экспортировать не нужно.
  2. Перенесите две строки на онлайн-устройство через QR-код или USB-носитель в режиме «воздушного зазора». Никогда не вводите ключ траты или seed-фразу на онлайн-машине.
  3. На онлайн-машине выполните monero-wallet-cli --generate-from-view-key <имя>. По запросу вставьте адрес и приватный ключ просмотра. Задайте надёжный пароль кошелька.
  4. Дайте кошельку синхронизироваться с высоты блока, на которой средства впервые поступили. Входящие транзакции появятся с корректными суммами. Исходящие будут отображаться как «(неизвестно отправлено)», пока вы не импортируете образы ключей.
  5. Чтобы свести исходящий баланс, периодически выполняйте export_key_images на офлайн-кошельке и import_key_images — на онлайн-кошельке. При этом расходные права не передаются — передаётся только факт того, что определённые выходы уже потрачены.
Ключ просмотра отвечает на вопрос «что пришло?». Ключ траты отвечает на вопрос «что может уйти?». Если какой-то сервис просит вас ответить на второй вопрос — уходите: ни один честный сценарий этого не требует.

Реальные сценарии использования каждого ключа

Конкретные примеры помогают разнице закрепиться в голове. Возьмём небольшой open-source-проект, принимающий пожертвования в XMR. На странице прозрачности команда публикует основной адрес и приватный ключ просмотра. Любой желающий может поднять локальный наблюдательный кошелёк, синхронизировать цепочку и независимо проверить, сколько проект собрал за квартал. Ключ траты при этом остаётся исключительно у мейнтейнеров — на аппаратном устройстве, — поэтому ни жертвователь, ни даже бывший участник команды, ушедший из проекта, не сможет опустошить фонд. Это классический паттерн прозрачных пожертвований; именно он годами используется в Monero Community Crowdfunding System.

Другой сценарий: фрилансер-журналист, живущий в юрисдикции со строгим валютным контролем, хочет показать налоговому консультанту, что её годовой доход в XMR не превышает порог декларирования. Она разворачивает наблюдательный кошелёк на ноутбуке аудитора по своему адресу и ключу просмотра, синхронизирует его до текущего блока и выгружает CSV с расшифрованными входящими суммами. Аудитор видит итоги; распорядительные права остаются у неё. Если отношения с консультантом закончатся, она переведёт средства в новый кошелёк — но только потому, что хочется чистого разделения, а не потому, что аудитор когда-либо мог монеты увести.

Третий пример — про восстановление. Допустим, у пользователя украли повседневный смартфон, а на нём стоял наблюдательный кошелёк, выведенный из ключа траты, хранящегося на аппаратном устройстве. Вор получает полную историю входящих транзакций — реальная потеря приватности, особенно если человек регулярно получает оплату от опознаваемых контрагентов, — но не может тронуть ни одного пиконеро. Пользователь ничего не «отзывает» в цепочке (в Monero нет отзыва) и просто переводит средства на свежий адрес, выведенный из нового зерна. Старый ключ просмотра остаётся валидным навсегда для тех транзакций, которые он уже видел, но для нового кошелька он слеп.

Во всех трёх сценариях действует одно и то же свойство: ключ просмотра отвечает на исторические и текущие вопросы о полученных деньгах, а только ключ траты отвечает на вопрос, куда деньги могут уйти дальше. Схема обменов MoneroSwapper держится на том же свойстве — клиенты получают XMR на адреса, которыми полностью владеют сами, и ни на одном шаге платформа не запрашивает ключ, который позволил бы ей расходовать средства от имени клиента.

FAQ

Могут ли украсть мои XMR, если знают только ключ просмотра?

Нет. Ключ просмотра даёт видимость входящих транзакций и сумм, но не позволяет ни подписывать, ни генерировать образы ключей, ни делать что-либо ещё, что двигает средства. Утечка ключа просмотра — это проблема приватности (каждое прошлое и будущее поступление становится видно тому, у кого ключ), но сами средства по-прежнему контролирует только ключ траты.

Почему наблюдательный кошелёк не видит исходящие транзакции?

Потому что исходящие определяются по совпадению образов ключей, а сами образы можно сгенерировать только из приватного ключа траты. Наблюдательный кошелёк видит, что выход существует, но не может сказать, был ли он уже потрачен. Импорт подписанного файла с образами ключей из расходного кошелька закрывает этот разрыв и сводит баланс.

Ключ просмотра выводится из ключа траты или они независимы?

В стандартных кошельках Monero ключ просмотра детерминированно выводится из ключа траты: его хешируют Keccak-256 и берут результат по модулю порядка группы Ed25519. Поэтому мнемоническая фраза из 25 слов хранит только ключ траты — ключ просмотра «вытекает» автоматически. В некоторых продвинутых конфигурациях используют независимый ключ просмотра, но все потребительские кошельки идут по производной схеме.

Нужно ли делать отдельную резервную копию обоих ключей?

Бэкапа seed-фразы (или «голого» ключа траты) достаточно, потому что ключ просмотра всегда можно восстановить из него. Тем не менее многие пользователи отдельно хранят копию ключа просмотра в месте, доступном аудитору, ровно потому, что это никак не ослабляет защиту. Относитесь к seed-фразе как к наличным, а к ключу просмотра — как к выписке по счёту в режиме «только чтение».

Можно ли ротировать ключ просмотра, если он утёк?

Сам по себе — нет. Ключ просмотра математически привязан к адресу, поэтому «ротация» сводится к созданию нового кошелька (новое зерно, новый ключ траты, новый адрес) и переводу средств. Закладывайте утечку ключа просмотра как пожизненное событие приватности для этого кошелька и заранее планируйте миграцию, если уровень раскрытия станет неприемлемым.

Аппаратные кошельки Ledger или Trezor работают с ключом траты иначе?

Да. На Ledger или Trezor с приложением Monero ключ траты никогда не покидает защищённый элемент. Компьютер-хост держит у себя только ключ просмотра (чтобы сканировать цепочку) и отправляет неподписанные транзакции на устройство, которое подписывает их внутри. Это самое чистое физическое воплощение разделения ключей: ключ просмотра живёт там, где живёт удобство, а ключ траты — там, где живёт безопасность.

Заключение

Ключ просмотра и ключ траты — это не две половинки одного секрета, а два разных секрета с двумя разными задачами; самые полезные свойства протокола рождаются именно из того, что он отказывается их склеивать. Как только разделение «щёлкает» в голове, наблюдательные кошельки, аудиторские процессы, прозрачность пожертвований и архитектура аппаратных кошельков перестают казаться остроумными хаками и начинают выглядеть очевидным следствием продуманного дизайна. Если вы прямо сейчас настраиваете новый кошелёк — запишите seed-фразу офлайн, выведите ключ просмотра для тех устройств, которым не нужно тратить, и никогда не вставляйте ни одно из этих значений в поле, назначение которого вы не понимаете на сто процентов. Когда вы будете готовы пополнить такой кошелёк, MoneroSwapper предложит обмен без KYC из основных активов прямо на адрес, которым владеете вы, и при этом ни на одном шаге не запросит никакого ключа — что после прочтения этого руководства и есть ровно то поведение, которого стоит ждать от любого сервиса, заслуживающего использования.

Поделиться статьей

Похожие статьи

Анонимный Обмен Monero

Без KYC • Без регистрации • Мгновенный обмен

Обменять сейчас