Viewing Key
Экранированные адреса позволяют вам проводить транзакции, раскрывая как можно меньше информации в блокчейне Zcash. Но что происходит, когда вам нужно показать определённой стороне, чем вы владеете или что отправили? У каждого экранированного адреса есть viewing key, предоставляющий доступ для чтения, но не возможность тратить средства. Viewing key были представлены в ZIP 310 и добавлены в протокол с обновлением сети Sapling.
Viewing key — это инструмент выборочного раскрытия: вы выбираете, кто и что увидит, и при этом никогда не передаёте полномочия на расходование средств.
Кратко
Ключ просмотра предоставляет только для чтения доступ к активности экранированного Zcash адреса или учётной записи: любой, кто им обладает, может видеть входящие (а для полных ключей просмотра — и исходящие) транзакции, но никогда не может тратить средства.
- Что это: инструмент выборочного раскрытия данных экранированных пулов. Представлен в ZIP 310, добавлен в протокол в рамках обновления сети Sapling.
- Что он предоставляет: обнаружение депозитов (
uivk… входящие ключи) или полную видимость входящих и исходящих операций для учётной записи (uview… унифицированные полные ключи просмотра), а также устаревшие ключи Sapling zxviews….
- Чего он не предоставляет: право расходования средств. Ничто из того, что делает владелец ключа просмотра, не может переместить средства.
- Где это работает сегодня: экспорт/импорт в Zallet (v0.1.0-beta.2+,
z_exportviewingkey / z_importviewingkey) и учётные записи только для просмотра в кошельках, таких как Zkool; актуальную матрицу поддержки смотрите на странице Кошельки.
- Практическое правило: отдавайте предпочтение наиболее ограниченному ключу, который отвечает на поставленный вопрос, и помните, что выданный ключ нельзя отозвать — его можно лишь пережить, переместив средства.
Зачем использовать viewing key?
В материалах Electric Coin Company по этой теме изложены наиболее часто возникающие ситуации, и сегодня они остаются типичными:
- Биржа отслеживает депозиты. Биржа загружает incoming viewing key на подключённый к интернету узел обнаружения, чтобы замечать депозиты клиентов на экранированный адрес, в то время как ключ расходования средств остаётся на оборудовании, которое никогда не подключается к сети.
- Кастодиан подтверждает свои активы. Кастодиан передаёт аудитору полный viewing key для каждого экранированного адреса. Аудитор может проверить эти балансы и изучить прошлую активность по этим адресам и с них, но не может делать ничего другого.
- Комплексная проверка контрагента. Если бирже необходимо изучить экранированную историю клиента в рамках усиленной комплексной проверки, она может запросить viewing key, а не средства.
Что viewing key раскрывает, а что — нет
Существует несколько типов ключей, и различие между ними определяет объём раскрываемой информации.
| Ключ | Префикс | Предоставляет |
|---|
| Unified full viewing key (UFVK) | uview… | Позволяет видеть входящие и исходящие транзакции во всех пулах учётной записи |
| Unified incoming viewing key (UIVK) | uivk… | Позволяет видеть только входящие транзакции во всех пулах учётной записи |
| Sapling extended full viewing key | zxviews… | Позволяет видеть входящую и исходящую активность Sapling для адресов ключа |
Ни один из них не позволяет тратить средства. Все они постоянны в важном смысле: выданный ключ нельзя отозвать; его можно лишь сделать неактуальным, переместив средства на учётную запись, ключами которой другая сторона не располагает.
Перед тем как чем-либо поделиться, следует знать о двух ловушках раскрытия информации.
Incoming не означает узко ограниченный. Унифицированный incoming viewing key относится ко всей учётной записи, а не к одному адресу, о котором вас спросили. Экспорт UIVK для одного адреса Sapling всё равно предоставляет видимость входящих транзакций во всех пулах этой учётной записи, поэтому раскрывает больше, чем адрес, который он обозначает. В книге Zallet это указано прямо.
Опубликованный адрес уже раскрывает свой incoming viewing key будущему противнику. В ZIP 326 отмечается, что противник с квантовым компьютером сможет восстановить incoming viewing key из опубликованного диверсифицированного адреса; это осуществимо в отличие от восстановления nullifier key. Публикация адреса сегодня не равнозначна публикации viewing key, но на достаточно долгом горизонте они становятся значительно ближе друг к другу.
Viewing key после Ironwood
NU6.3 представил экранированный пул Ironwood и сделал пул Orchard предназначенным только для расходования, поэтому со временем средства перемещаются из одного в другой. О самом обновлении см. Ironwood и Турникет.
Viewing key, выданный до Ironwood, продолжает работать после миграции. ZIP 326 определяет, что получатель и соответствующий ему incoming viewing key относятся к протоколу Orchard, а не к пулу: один и тот же incoming viewing key пробно расшифровывает шифротексты примечаний как пула Orchard, так и пула Ironwood. Zallet реализует это именно так, описывая примечания Ironwood как имеющие форму Orchard и пробно расшифровываемые viewing key Orchard учётной записи в домене шифрования примечаний Ironwood.
Три последствия для каждого, кто хранит или выдаёт ключ:
- Балансы перемещаются между пулами, и наблюдатель видит это. ZIP 318 задаёт миграцию как серию небольших намеренно единообразных транзакций Orchard-to-Ironwood, транслируемых по рандомизированному расписанию; каждая из них тратит одно примечание Orchard и создаёт один выход Ironwood канонического номинала. Аудитор, наблюдающий с помощью viewing key, видит, как активы перемещаются из одного пула в другой поэтапно в течение недель, а не одним переводом. Кошелёк может восстановить собственный ход миграции из данных цепочки, используя свои viewing key.
- Каждый этап миграции раскрывает перемещаемую стоимость. Это неотъемлемо при прохождении через турникет и именно это делает миграцию аудируемой. Разделение баланса на канонические номиналы означает, что ни одна транзакция не раскрывает весь баланс пула Orchard.
- Учётные записи, созданные после Ironwood, могут выводить свои ключи иначе. ZIP 2005 добавляет флаг
use_qsk для квантово-восстанавливаемых ключей и изменяет способ вывода incoming, outgoing и diversifier ключей, поэтому ключи с use_qsk = true действительно являются другими ключами. ZIP 326 требует, чтобы флаг был единообразным для всей учётной записи, и запрещает генерировать ключи с use_qsk = true до активации NU6.3 в Mainnet. Поэтому ключ, экспортированный из учётной записи, существовавшей до Ironwood, является ключом use_qsk = false и остаётся корректным для этой учётной записи. Не предполагайте, что ключ, экспортированный из одной учётной записи, описывает другую.
Экспорт viewing key
Zallet
Zallet — это кошелёк полного узла, заменивший кошелёк внутри zcashd. Экспорт и импорт viewing key появились в v0.1.0-beta.2 (28 июля 2026 года), поэтому сначала проверьте версию; в более ранних сборках этих методов нет. Каждый аргумент после имени метода должен быть корректным JSON, то есть строковые значения сохраняют собственные двойные кавычки. Краткое справочное руководство Zallet описывает общий стиль команд.
Выведите список того, что хранит кошелёк:
Code-highlight
zallet rpc listaddresses
Экспортируйте унифицированный полный viewing key учётной записи, передав унифицированный адрес:
Code-highlight
zallet rpc z_exportviewingkey '"<unified address>"'
Вместо этого экспортируйте унифицированный incoming viewing key учётной записи, используя необязательный аргумент ivk:
Code-highlight
zallet rpc z_exportviewingkey '"<unified address>"' true
Передача адреса Sapling возвращает расширенный полный viewing key Sapling этой учётной записи (zxviews…), что соответствует прежнему поведению zcashd. Существуют два задокументированных ограничения: адреса Sprout отклоняются, а расширенный полный viewing key Sapling нельзя экспортировать из учётной записи, которая сама была импортирована только для просмотра, поскольку кошелёк не может его восстановить. Однако форма с ivk работает для импортированных учётных записей только для просмотра.
Кошельки, экспортирующие viewing key через собственный интерфейс
На странице Кошельки отслеживается поддержка viewing key и готовность к Ironwood для каждого кошелька. На момент написания кошельки, в которых указаны и поддержка viewing key, и Ironwood: Ready, включают ZODL, Zingo!, Zkool, Cake, Zallet, zecd и Nozy. Прежде чем полагаться на какой-либо конкретный кошелёк, проверяйте эту страницу, а не данную, поскольку статус готовности меняется.
Импорт viewing key как учётной записи только для просмотра
Zkool
Zkool — наиболее гибкий вариант здесь, поскольку он принимает как унифицированные, так и устаревшие ключи. В его README описаны учётные записи только для просмотра, созданные из унифицированного viewing key или расширенного viewing key Sapling, наряду с устаревшими экранированными расширенными ключами, экспортированными из zcashd. Добавьте новую учётную запись, выберите путь только для просмотра и вставьте ключ uview… или zxviews…; затем учётная запись синхронизируется и сообщает о балансах и истории без полномочий на расходование средств.
Поддержка протокола Ironwood и миграция Orchard-to-Ironwood появились в Zkool 6.24.0 (20 июля 2026 года), а в 6.26.1 (2 августа 2026 года) было исправлено обнаружение транзакций Ironwood в mempool. Используйте версию 6.26.1 или новее.
Zallet
Code-highlight
zallet rpc z_importviewingkey '"<zxviews… key>"' '"whenkeyisnew"' 0
Второй аргумент — политика повторного сканирования: "whenkeyisnew" (по умолчанию), "yes" или "no". Третий — высота блока, с которой следует выполнить повторное сканирование. Zallet импортирует ключ как учётную запись только для просмотра и отслеживает входящие и исходящие транзакции для её адресов без полномочий на расходование средств.
Zallet импортирует только расширенные полные viewing key Sapling. Он не импортирует унифицированный полный viewing key uview…, хотя может его экспортировать. Чтобы предоставить доступ для чтения ко всей унифицированной учётной записи, экспортируйте UFVK из Zallet и импортируйте его в кошелёк, принимающий унифицированные ключи, например Zkool.
Чтобы преобразовать импортированный ключ в полный файл истории транзакций с txid, комиссиями и мемо, см. Экспорт истории транзакций из Viewing Key.
Что изменилось и что больше не следует искать
Если вы следовали более старой версии этой страницы или её переводу, три способа больше не работают.
zcash-cli z_exportviewingkey и z_importviewingkey. zcashd достиг остановки поддержки 18 июля 2026 года и больше не запускается. Одноимённые методы Zallet являются заменой; см. руководство по миграции.
- Инструкцию для Ywallet. На странице кошельков Ywallet отмечен как Ironwood: Not Ready, поэтому это не тот кошелёк, который следует рекомендовать для viewing key эпохи Ironwood. Zkool от того же разработчика принимает тот же диапазон ключей и отмечен как Ready.
- zcashblockexplorer.com/vk. Сервис возвращает HTTP 503 с недействительным сертификатом и был удалён без замены. Вставка viewing key на веб-сайт передаёт всю вашу историю транзакций тому, кто управляет этим сайтом, что всегда было самым слабым из трёх вариантов на старой странице. Вместо этого импортируйте ключ в кошелёк, которым управляете вы.
Визуальное представление / аналогия
Окно аудитора
Представьте защищённый аккаунт как сейфовую комнату в банке:
- Ключ трат — это ключ от комнаты. Тот, кто им владеет, может открывать ящики и забирать их содержимое.
- Ключ просмотра — это окно аудитора в эту комнату. Аудитор может наблюдать, как каждый ящик вносят и выносят, читать ярлыки и вести учётную книгу — но у окна нет ручки. Человек, смотрящий через него, не может перемещать ничего внутри комнаты.
Чего не может показать окно
Окно выходит в комнату, а не во внешний мир. Оно показывает экранированную активность отслеживаемого аккаунта; оно не превращает наблюдателя в наблюдателя всей блокчейн-сети и не позволяет ему сопоставлять активность аккаунта с неэкранированной историей кого-либо ещё. А поскольку окно устанавливается на уровне аккаунта, передача кому-то глазка для одной банковской ячейки (одного адреса) всё равно даёт ему полный обзор входящих операций во всей комнате — именно поэтому существует правило самого узкого ключа.
Почему нельзя вернуть окно обратно
Ключ просмотра — это информация, а не запись о разрешении. После копирования он существует до тех пор, пока средства не покинут отслеживаемый им аккаунт. Практическое решение — ротация: переведите балансы на новый аккаунт, ключи которого другая сторона никогда не получала, и старое окно будет смотреть в пустую комнату.
Подробный разбор
Пробная расшифровка: как на самом деле работает просмотр
Каждая экранированная транзакция шифрует открытые тексты своих notes для предполагаемого получателя. Кошелёк, имеющий ключ просмотра, выполняет пробное расшифрование: для каждой транзакции, найденной в цепочке, он пытается расшифровать шифротексты notes с помощью ключа. Успешные попытки раскрывают значение note, диверсификатор получателя и memo; неудачные ничего не стоят. Поэтому один и тот же incoming viewing key продолжает работать в пулах Orchard и Ironwood — ZIP 326 привязывает receiver к протоколу Orchard, поэтому шифротексты notes Ironwood имеют форму Orchard и пробно расшифровываются с помощью ключей просмотра Orchard учётной записи в домене шифрования notes Ironwood.
Полный или входящий: что определяет вывод
Полный ключ просмотра может выводить возможность просмотра исходящих операций, позволяющую аудитору восстановить сторону отправителя перевода после расшифровки транзакции. Входящий ключ просмотра намеренно ограничен: он обнаруживает и расшифровывает входящие записи, но не может восстановить связь с исходящими операциями. Вывод между этими возможностями однонаправленный — входящий ключ выводится из полного ключа, но никогда не наоборот, — поэтому «только входящий» является настоящим понижением возможностей, а не обещанием. Флаг use_qsk из ZIP 2005 изменяет сам механизм вывода, поэтому ключи, восстанавливаемые квантовыми вычислениями, представляют собой совершенно другое семейство ключей, а не вариант старого.
Как миграция выглядит для наблюдателя
Поскольку миграция ZIP 318 представляет собой рандомизированную последовательность небольших однородных транзакций из Orchard в Ironwood, наблюдатель, владеющий ключом, видит лестницу: множество ступеней канонических номиналов вместо одного скачка. Ни одна отдельная ступень не раскрывает общий мигрируемый баланс, но шаблон распознаваем — что и является предполагаемым компромиссом проверяемого турникета.
Практические последствия
- Для бирж и платёжных процессоров: загрузите входящий ключ просмотра аккаунта (или UFVK для полного охвата) на узел обнаружения и автоматически сверяйте клиентские депозиты — точно так же, как при работе с прозрачным адресом, — но ключ расходования клиента никогда не покидает холодное хранилище.
- Для аудиторов и подтверждения резервов: полный ключ просмотра превращает «поверьте нам» в «проверьте сами»: балансы и полная история транзакций отслеживаемых аккаунтов без какой-либо возможности ими распоряжаться. Объедините его с Раскрытие информации о платежах для разовых доказательств, касающихся отдельного платежа.
- Для комплексной проверки: передайте контрагенту ключ от аккаунта, относящегося к сотрудничеству, а не от всего кошелька. Если отношения заканчиваются, смените аккаунт.
- Для выбора инструментов: Zallet экспортирует UFVK и импортирует Sapling расширенные полные ключи просмотра; Zkool принимает унифицированные и устаревшие ключи в качестве аккаунтов только для наблюдения. Проверьте страницу Кошельки, чтобы узнать текущую матрицу готовности Ironwood, прежде чем стандартизировать использование какого-либо кошелька.
- Цена раскрытия постоянна: каждый дополнительный держатель ключа — это постоянная линия приватности, которую нельзя закрыть. Выдавайте ключи для каждых отношений отдельно, ограничивайте их одним аккаунтом и документируйте, кто чем владеет.
Распространённые ошибки
| Распространённое убеждение | Как обстоят дела на самом деле |
|---|
| «Ключ просмотра может потратить средства, если он утечёт». | Не может. Ключи просмотра не дают полномочий на расходование; в худшем случае утечка раскрывает историю. |
| «Я могу позже отозвать ключ просмотра». | Не можете. Переданный ключ работает, пока средства не будут переведены на аккаунт, ключами которого другая сторона не располагает. |
| «Экспорт UIVK для одного адреса показывает только этот адрес». | Ключи просмотра привязаны к аккаунту. UIVK показывает входящую активность для каждого пула в аккаунте. |
«zcash-cli z_exportviewingkey всё ещё работает». | Нет. Поддержка zcashd завершилась 18 июля 2026 года; вместо него используйте z_exportviewingkey / z_importviewingkey от Zallet. |
| «Вставлять ключ просмотра в веб-инструмент безопасно, поскольку он предназначен только для чтения». | Только для чтения всё равно означает, что вся история транзакций этого аккаунта передаётся тому, кто управляет сайтом. Импортируйте ключ в кошелёк, которым управляете сами. |
| «Zallet может импортировать любой ключ просмотра, который может экспортировать Zallet». | Нет. Zallet импортирует только расширенные полные ключи просмотра Sapling; унифицированные ключи uview… необходимо импортировать в кошельки, принимающие унифицированные ключи, такие как Zkool. |
Связанные страницы
Ресурсы
Используйте viewing key по мере необходимости и выбирайте наиболее узкий ключ, отвечающий на поставленный вопрос.