Ключі перегляду
Екрановані адреси дозволяють здійснювати транзакції, розкриваючи якомога менше інформації в блокчейні Zcash. То що відбувається, коли вам усе ж потрібно показати конкретній стороні, чим ви володієте або що надіслали? Кожна екранована адреса має ключ перегляду, який надає доступ для читання, але не можливість витрачати кошти. Ключі перегляду було представлено в ZIP 310 і додано до протоколу в оновленні мережі Sapling.
Ключ перегляду — це інструмент вибіркового розкриття: ви самі обираєте, хто що бачить, і ніколи не передаєте для цього повноваження на витрачання.
Коротко
Ключ перегляду надає лише для читання доступ до активності екранованої Zcash адреси або облікового запису: той, хто ним володіє, може бачити вхідні (а для повних ключів перегляду — також вихідні) транзакції, але ніколи не зможе витратити кошти.
- Що це: інструмент вибіркового розкриття даних екранованих пулів. Представлений у ZIP 310, доданий до протоколу в оновленні мережі Sapling.
- Що він надає: виявлення депозитів (
uivk… вхідні ключі) або повну видимість надходжень/витрат для облікового запису (uview… уніфіковані повні ключі перегляду), а також застарілі ключі Sapling zxviews….
- Чого він не надає: повноважень на витрачання. Жодна дія власника ключа перегляду не може перемістити кошти.
- Де це працює сьогодні: експорт/імпорт у Zallet (v0.1.0-beta.2+,
z_exportviewingkey / z_importviewingkey) та облікові записи лише для перегляду в гаманцях, таких як Zkool; дивіться сторінку Гаманці для актуальної матриці підтримки.
- Практичне правило: надавайте перевагу найвужчому ключу, який відповідає на поставлене запитання, і пам’ятайте: виданий ключ неможливо відкликати — його можна лише пережити, перемістивши кошти.
Навіщо використовувати ключ перегляду?
Текст Electric Coin Company на цю тему описує ситуації, які трапляються найчастіше, і вони досі залишаються типовими:
- Біржа відстежує депозити. Біржа завантажує вхідний ключ перегляду на доступний з інтернету вузол виявлення, щоб помічати депозити клієнтів на екрановану адресу, тоді як ключ витрачання залишається на обладнанні, яке ніколи не підключається до мережі.
- Кастодіан підтверджує свої активи. Кастодіан передає аудитору повний ключ перегляду для кожної екранованої адреси. Аудитор може перевірити ці баланси й переглянути минулу активність до та з цих адрес, але не може робити нічого іншого.
- Комплексна перевірка контрагента. Якщо біржі потрібно перевірити екрановану історію клієнта в межах поглибленої комплексної перевірки, вона може попросити ключ перегляду замість коштів.
Що ключ перегляду розкриває, а що — ні
Існує кілька видів ключів, і різниця між ними визначає, скільки ви розкриваєте.
| Ключ | Префікс | Надає доступ |
|---|
| Unified full viewing key (UFVK) | uview… | Переглядає вхідні та вихідні транзакції для кожного пулу в обліковому записі |
| Unified incoming viewing key (UIVK) | uivk… | Переглядає лише вхідні транзакції для кожного пулу в обліковому записі |
| Sapling extended full viewing key | zxviews… | Переглядає вхідну та вихідну активність Sapling для адрес ключа |
Жоден із них не дозволяє витрачати кошти. Усі вони є постійними в суттєвому сенсі: ключ, який ви передали, неможливо відкликати; його можна лише пережити, перемістивши кошти до облікового запису, ключів якого інша сторона не має.
Перш ніж щось передавати, варто знати про дві пастки розкриття інформації.
Вхідний не означає вузько обмежений. Уніфікований вхідний ключ перегляду прив’язаний до всього облікового запису, а не до однієї адреси, про яку вас запитали. Експорт UIVK для однієї адреси Sapling усе одно надає видимість вхідних транзакцій у кожному пулі цього облікового запису, тож він розкриває більше, ніж адреса, яку називає. У Zallet Book це прямо зазначено.
Опублікована адреса вже відкриває її вхідний ключ перегляду для майбутнього зловмисника. У ZIP 326 зазначено, що зловмисник із квантовим комп’ютером може відновити вхідний ключ перегляду з опублікованої диверсифікованої адреси; це можливо на відміну від відновлення ключа нуліфікатора. Публікація адреси сьогодні не є тим самим, що публікація ключа перегляду, але в достатньо віддаленій перспективі ці речі стають ближчими.
Ключі перегляду після Ironwood
NU6.3 представив екранований пул Ironwood і зробив пул Orchard доступним лише для витрачання, тому з часом кошти переходять з одного до іншого. Див. Ironwood та Турнікет щодо самого оновлення.
Ключ перегляду, виданий до Ironwood, продовжує працювати після міграції. У ZIP 326 зазначено, що одержувач і відповідний йому вхідний ключ перегляду прив’язані до протоколу Orchard, а не до пулу: той самий вхідний ключ перегляду пробно розшифровує шифротексти нот як із пулу Orchard, так і з пулу Ironwood. Zallet реалізує це саме так, описуючи ноти Ironwood як такі, що мають форму Orchard, і пробно розшифровуються ключами перегляду Orchard облікового запису в домені шифрування нот Ironwood.
Три наслідки для кожного, хто зберігає або видає ключ:
- Баланси переміщуються між пулами, і переглядач це бачить. У ZIP 318 міграцію визначено як послідовність невеликих, навмисно однакових транзакцій з Orchard до Ironwood, що транслюються за рандомізованим розкладом; кожна витрачає одну ноту Orchard і створює один вихід Ironwood канонічного номіналу. Аудитор, який спостерігає за допомогою ключа перегляду, бачить, як активи поступово переходять з одного пулу до іншого протягом тижнів, а не одним переміщенням. Гаманець може відновити власний прогрес міграції з даних ланцюга за допомогою своїх ключів перегляду.
- Кожен крок міграції розкриває переміщувану вартість. Це властиво перетину турнікета, і саме це робить міграцію придатною для аудиту. Поділ балансу на канонічні номінали означає, що жодна окрема транзакція не розкриває весь баланс пулу Orchard.
- Для облікових записів, створених після Ironwood, ключі можуть виводитися інакше. ZIP 2005 додає прапорець
use_qsk для ключів, які можна відновити квантовим способом, і змінює спосіб виведення вхідних, вихідних і диверсифікаційних ключів, тож ключі use_qsk = true справді є іншими ключами. ZIP 326 вимагає, щоб прапорець був однаковим для всього облікового запису, і забороняє генерувати ключі use_qsk = true до активації NU6.3 у Mainnet. Отже, ключ, експортований з облікового запису, що існував до Ironwood, є ключем use_qsk = false і залишається коректним для цього облікового запису. Не припускайте, що ключ, експортований з одного облікового запису, описує інший.
Експорт ключа перегляду
Zallet
Zallet — це гаманець повного вузла, який замінив гаманець усередині zcashd. Експорт та імпорт ключів перегляду з’явилися у v0.1.0-beta.2 (28 липня 2026 року), тому спершу перевірте свою версію; у попередніх збірках цих методів немає. Кожен аргумент після назви методу має бути дійсним JSON, тобто рядкові значення зберігають власні подвійні лапки. Загальний стиль команд описано в Zallet Короткому довіднику.
Перегляньте, що містить гаманець:
Code-highlight
zallet rpc listaddresses
Експортуйте уніфікований повний ключ перегляду облікового запису, передавши уніфіковану адресу:
Code-highlight
zallet rpc z_exportviewingkey '"<unified address>"'
Натомість експортуйте уніфікований вхідний ключ перегляду облікового запису, використавши необов’язковий аргумент ivk:
Code-highlight
zallet rpc z_exportviewingkey '"<unified address>"' true
Передавання адреси Sapling повертає розширений повний ключ перегляду Sapling цього облікового запису (zxviews…), що відповідає старій поведінці zcashd. Є два задокументовані обмеження: адреси Sprout відхиляються, а розширений повний ключ перегляду Sapling неможливо експортувати з облікового запису, який сам було імпортовано лише для перегляду, оскільки гаманець не може його відновити. Форма ivk працює для імпортованих облікових записів лише для перегляду.
Гаманці, що експортують ключі перегляду через власний інтерфейс
Сторінка Гаманці відстежує підтримку ключів перегляду та готовність до Ironwood для кожного гаманця. На момент написання гаманці, у яких зазначено підтримку ключів перегляду та Ironwood: Ready, включають ZODL, Zingo!, Zkool, Cake, Zallet, zecd і Nozy. Перш ніж покладатися на будь-який окремий гаманець, перевіряйте саме цю сторінку, оскільки готовність змінюється.
Імпорт ключа перегляду як облікового запису лише для спостереження
Zkool
Zkool — найгнучкіший варіант тут, оскільки він приймає як уніфіковані, так і застарілі ключі. У його README задокументовано облікові записи лише для перегляду, створені з уніфікованого ключа перегляду або розширеного ключа перегляду Sapling, а також застарілі екрановані розширені ключі, експортовані з zcashd. Додайте новий обліковий запис, виберіть варіант лише для перегляду та вставте ключ uview… або zxviews…; після цього обліковий запис синхронізується та повідомляє баланси й історію без повноважень на витрачання.
Підтримка протоколу Ironwood і міграція Orchard до 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 імпортує лише розширені повні ключі перегляду Sapling. Він не імпортує уніфікований повний ключ перегляду uview…, хоча може його експортувати. Щоб передати доступ для читання до цілого уніфікованого облікового запису, експортуйте UFVK з Zallet та імпортуйте його в гаманець, що приймає уніфіковані ключі, наприклад Zkool.
Щоб перетворити імпортований ключ на повний файл історії транзакцій із txid, комісіями та мемо, див. Експорт історії транзакцій з Viewing Key.
Що змінилося і що більше не варто шукати
Якщо ви користувалися старішою версією цієї сторінки або її перекладом, три способи більше не працюють.
zcash-cli z_exportviewingkey і z_importviewingkey. zcashd досяг припинення підтримки 18 липня 2026 року й більше не працює. Однойменні методи Zallet є заміною; див. посібник із міграції.
- Інструкція для Ywallet. На сторінці «Гаманці» Ywallet позначено як Ironwood: Not Ready, тому це не той гаманець, який слід рекомендувати людям для ключів перегляду епохи Ironwood. Zkool від того самого розробника приймає той самий діапазон ключів і позначений як Ready.
- zcashblockexplorer.com/vk. Сервіс повертає HTTP 503 із недійсним сертифікатом, і його вилучено без заміни. Вставлення ключа перегляду на вебсайт передає всю вашу історію транзакцій тому, хто керує цим вебсайтом, що завжди було найслабшим із трьох варіантів на старій сторінці. Натомість імпортуйте ключ у гаманець, яким керуєте ви.
Візуалізація / Аналогія
Вікно аудитора
Уявіть захищений обліковий запис як кімнату з сейфовими скриньками в банку:
- Ключ витрачання — це ключ від кімнати. Той, хто ним володіє, може відкривати коробки й забирати їхній вміст.
- Ключ перегляду — це вікно аудитора в цю кімнату. Аудитор може спостерігати за кожною коробкою, що потрапляє до кімнати чи виходить із неї, читати етикетки та вести облік — але вікно не має ручки. Людина, що дивиться крізь нього, не може перемістити нічого з того, що є всередині кімнати.
Що не може показати вікно
Вікно виходить у кімнату, а не у зовнішній світ. Воно показує захищену активність облікового запису, за яким ведеться спостереження; воно не перетворює спостерігача на спостерігача за всім блокчейном і не дозволяє йому зіставляти активність облікового запису з незахищеною історією будь-кого іншого. А оскільки вікно встановлюється на рівні облікового запису, надання комусь оглядового вічка для однієї депозитної скриньки (однієї адреси) все одно дає йому повний огляд усіх надходжень до кімнати — саме тому існує правило найвужчого ключа.
Чому ви не можете повернути вікно назад
Ключ перегляду — це інформація, а не запис дозволу. Щойно його скопійовано, він існує доти, доки кошти не покинуть обліковий запис, за яким він спостерігає. Практичний засіб — ротація: перемістіть баланси на новий обліковий запис, ключі якого інша сторона ніколи не отримувала, — і старе вікно виходить на порожню кімнату.
Поглиблений огляд
Пробне розшифрування: як насправді працює перегляд
Кожна екранована транзакція шифрує відкриті тексти своїх нотаток для призначеного отримувача. Гаманець, що має ключ перегляду, виконує пробне розшифрування: для кожної транзакції, яку він знаходить у ланцюгу, він намагається розшифрувати шифротексти нотаток за допомогою ключа. Збіги розкривають вартість нотатки, диверсифікатор отримувача та пам’ятку; промахи нічого не коштують. Саме тому той самий вхідний ключ перегляду продовжує працювати в пулах Orchard та Ironwood — ZIP 326 прив’язує отримувача до протоколу Orchard, тож шифротексти нотаток Ironwood мають форму Orchard і пробно розшифровуються ключами перегляду Orchard облікового запису в домені шифрування нотаток Ironwood.
Full проти вхідного: що визначає деривація
Повний ключ перегляду може виводити можливість перегляду вихідних операцій, що дає аудитору змогу відтворити сторону відправника переказу після розшифрування транзакції. Вхідний ключ перегляду навмисно обмежений: він виявляє та розшифровує вхідні ноти, але не може відтворити зв’язок із вихідними операціями. Виведення між цими можливостями є одностороннім — вхідний ключ виводиться з повного ключа, але ніколи навпаки, — саме тому «лише для вхідних» є справжнім обмеженням, а не обіцянкою. Прапорець 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. |
Пов’язані сторінки
Ресурси
Використовуйте ключі перегляду лише за потреби та надавайте перевагу найвужчому ключу, який відповідає на поставлене запитання.