34 / 736WATCH

Watch-only Wallet

Кошелёк только для наблюдения

Watch-only Wallet показывает поступления и баланс и может подготовить неподписанную транзакцию. Приватных ключей для расходования средств в нём нет. Корректное отображение требует полных правил кошелька и надёжных данных блокчейна.

Watch-only Wallet позволяет смотреть платежи и баланс, не храня приватные ключи для расходования средств. Он также может подготовить платёж, который должно подписать другое устройство или программа. Это удобно, если нужен обзор на телефоне или компьютере, а ключи вы держите отдельно. Сама надпись watch-only не говорит, у кого находятся ключи и верны ли показанные сведения.

Алиса хранит ключи в аппаратном кошельке и хочет проверить поступление с телефона. Она переносит в телефон публичную конфигурацию кошелька, а не слова восстановления. По ней приложение распознаёт нужные адреса и находит их платежи в сети. Алиса видит поступление 20 000 sat, наименьших единиц биткоина, и его подтверждения, хотя подписывающее устройство лежит дома выключенным. Телефон не получил права потратить эти деньги. Так же продавец может предоставить бухгалтеру обзор платежей, не передавая ключи. Важно, что именно было импортировано: ввод Seed Phrase, то есть слов для восстановления ключей, отменил бы это разделение. [12]

В приложение для наблюдения можно добавить и чужой публичный адрес. Сумма на экране не доказывает, что пользователь может её потратить, а тем более погасить все долги. Приложение суммирует найденные UTXO — выходы прошлых платежей, которые ещё не потрачены. Но находит лишь то, что соответствует импортированным данным и доступной истории. Пропущенные адреса, незавершённый поиск или ненадёжный сервер могут дать неполную картину. Ноль на экране сам по себе не означает потерю биткоинов: сначала проверьте охват наблюдения и источник данных. [8] [9]

Когда Алиса хочет заплатить, приложение выбирает доступные UTXO и указывает получателя, сумму и комиссию. Неиспользованная часть входа может вернуться в её кошелёк как сдача, или change. Эти данные можно передать в PSBT — формате частично подписанной биткоин-транзакции, определённом в BIP174. Отдельное устройство получает нужные для подписи сведения без собственной базы UTXO. Алиса должна проверить на его доверенном экране настоящего получателя, сумму, комиссию и сдачу. Взломанное приложение может подготовить другой платёж, не соответствующий её намерению. Важна и настройка sighash: она определяет, какие части транзакции охватывает подпись. Лишь после проверки и подписания итоговую транзакцию, соответствующую одобренному предложению и правилам кошелька, отправляют в сеть. [2] [10]

Расширенный публичный ключ xpub позволяет вывести другие публичные ключи в определённой ветви кошелька; сам он платёж не подпишет. Но тот, кто получит его вместе с правилами кошелька, может связать доступные для вывода адреса, прошлые и будущие платежи и балансы. Это раскрывает гораздо больше, чем один адрес для одного поступления. Сторонний сервер может собрать похожую картину из повторяющихся запросов приложения. Собственный Full Node, который сам проверяет блокчейн, ограничивает такое раскрытие; зашифрованное или иное приватное соединение не скрывает запросы от конечного сервера. Экспортируйте только нужную учётную запись, ограничивайте копии и защищайте метки, связывающие адреса с именами или назначением платежей. [1] [13] [14]

Далее приведена техническая справка по настройке и восстановлению. Скрипт задаёт условия расходования, а Output Descriptor записывает эти правила и данные для вывода адресов. HD Wallet создаёт дерево ключей из seed — секретных исходных данных для их получения. Вывод non-hardened позволяет получать новые публичные ключи из xpub, тогда как hardened требует приватного ключа. Multisig добавляет заранее заданное количество необходимых подписей. Импорт адреса отслеживает только его скрипт, а не будущие адреса получения и сдачи. Публичный ключ охватывает разные типы скриптов, только если программа явно их выводит. xpub учётной записи позволяет получать потомков non-hardened, но не задаёт P2PKH, SegWit, Taproot, внутреннюю ветвь или порог подписей Multisig. Это дополняет дескриптор. Экспортируйте его из нужной учётной записи подписывающего устройства с верной сетью и типом скрипта; не угадывайте путь деривации, то есть последовательность шагов от исходного ключа. [1] [4] [7]

HD-кошельки обычно отделяют ветвь получения /0/* от внутренней /1/* для change, то есть сдачи. Без внутренней ветви деньги после траты могут казаться исчезнувшими. Маленький range, то есть диапазон выводимых адресов, может скрыть поступления. next_index определяет следующий создаваемый адрес; несогласованные значения в двух программах могут привести к повторному использованию адреса. Согласуйте активные дескрипторы, диапазоны и индексы. Проверяйте адрес получения на экране подписывающего устройства: вредоносная программа может подменить его даже при правдоподобном балансе. [6] [9]

В Bitcoin Core команда importdescriptors использует timestamp как начало повторного сканирования. now пропускает старую историю, а 0 запрашивает поиск от Genesis Block. Важны также диапазон range и доступность старых блоков. active определяет, используется ли дескриптор для создания новых адресов; internal отмечает внутренние выходы кошелька, например сдачу. Узел с усечённой историей может не иметь нужных данных. Rescan лишь находит существующие транзакции. Сохраните дату или высоту первого использования и сравнивайте восстановление с известными адресами и транзакциями, а не только с нулём на экране. [9] [10]

BIP380 описывает язык множеств скриптов выходов. Пример wpkh([d34db33f/84h/0h/0h]xpub…/0/*)#checksum содержит тип скрипта, отпечаток главного ключа, путь происхождения, публичный ключ учётной записи, ветвь, переменный индекс и контрольную сумму. Этот пример нельзя импортировать напрямую. Taproot использует tr() по BIP386; BIP389 допускает несколько путей в одном выражении. Контрольная сумма обнаруживает ошибки копирования, но не удостоверяет автора. Дескриптор с xprv содержит секретный ключ и не должен попадать в наблюдающий координатор. [4] [5] [6] [7]

BIP32 описывает важное исключение: родительский xpub вместе с приватным ключом потомка, полученного только шагами non-hardened, позволяет вычислить родительский приватный ключ. Одного xpub недостаточно; опасно сочетание этих данных. Шаг hardened над экспортированной учётной записью не позволяет атаке пересечь эту границу. Никогда не помещайте xprv, seed и приватные ключи в наблюдающий кошелёк, его базу или сопутствующие файлы PSBT. [1]

Для наблюдения за Multisig необходимы порог подписей, тип скрипта, xpub каждого соподписанта, происхождение и порядок ключей и обе адресные ветви. Одного xpub мало. Потеря дескриптора осложняет восстановление даже с целыми seed; другой порядок или оболочка скрипта может дать другие адреса. Проверьте правила и образец адреса на всех подписывающих устройствах. Сохраните дескриптор с контрольной суммой или стандартную конфигурацию, учитывая, что она раскрывает связи между соподписантами. [4] [11]

Отдельно от приватных ключей сохраните дескрипторы обеих ветвей, происхождение ключей, сеть, дату или высоту создания, диапазоны, индексы, метки и правила Multisig. BIP329 переносит метки, но не заменяет дескриптор или историю. Испытайте восстановление в отдельном профиле или тестовой сети: импортируйте публичную конфигурацию, просканируйте историю, сравните прежние адреса обеих ветвей и ожидаемые UTXO, подготовьте PSBT и подпишите нужным устройством. Перед отправкой проверьте результат. Watch-only помогает наблюдать и готовить, но не даёт права расходовать средства. [3] [9] [12]

Для полной картины прочитайте эту статью вместе с Extended Public Key (xpub), Кошелёк, Cold Storage, Output Descriptor, PSBT, Bitcoin. На эту статью также ссылаются HD Wallet, Cold Storage, Extended Public Key (xpub), Output Descriptor.

DOC · 001BIP 32 — Hierarchical Deterministic WalletsСпецификация DOC · 002BIP 174 — Partially Signed Bitcoin Transaction FormatСпецификация DOC · 003BIP 329 — Wallet Labels Export FormatСпецификация DOC · 004BIP 380 — Output Script DescriptorsСпецификация DOC · 005BIP 386 — tr() Output Script DescriptorsСпецификация DOC · 006BIP 389 — Multipath Descriptor Key ExpressionsСпецификация DOC · 007Bitcoin Core — Output DescriptorsДокументация DOC · 008Bitcoin Core RPC — createwalletДокументация DOC · 009Bitcoin Core RPC — importdescriptorsДокументация DOC · 010Bitcoin Core — Offline Signing TutorialДокументация DOC · 011Bitcoin Core — Multisig TutorialДокументация DOC · 012Electrum — Cold StorageДокументация DOC · 013Bitcoin Optech — Output Script DescriptorsДокументация DOC · 014Sparrow Wallet — Quick Start GuideДокументация
Обновлено: Сначала источники · Не является инвестиционной рекомендацией