Любое приложение-кошелёк объединяет в одном интерфейсе две совершенно разные задачи: показать вам, чем вы владеете, и распорядиться этим. Watch-only кошелёк разделяет их. Он импортирует только публичную информацию — список адресов или расширенный публичный ключ (xpub) — и вовсе не хранит закрытых ключей. Это даёт ему ровно половину возможностей кошелька: он может показывать балансы, отслеживать историю, генерировать адреса для приёма и даже готовить транзакцию к подписи. Чего он не может никогда — так это подписывать. Никакая, даже самая полная, компрометация watch-only кошелька не породит действительной подписи, потому что материала, который для подписи нужен, там попросту нет.
Звучит как ограничение — и это действительно ограничение, причём намеренное. Разделение наблюдения и подписи — незаметный каркас любой серьёзной схемы холодного хранения: устройство, обращённое к интернету, знает всё и не может ничего, тогда как ключи живут на устройстве, которое не обращено ни к чему. Разберём, как работает watch-only кошелёк, что он может и чего не может, какая единственная оговорка о приватности застаёт людей врасплох и как это разделение выглядит в повседневной практике.
Одна seed-фраза, два вида ключей
Всё держится на асимметрии, которую легко сформулировать и трудно переоценить. Закрытый ключ создаёт подписи; парный ему публичный ключ способен лишь их проверять. Вычислить публичный ключ из закрытого — мгновенно; пройти обратный путь — та самая трудная задача, на которой построена вся система. Адреса, в свою очередь, выводятся из публичных ключей, поэтому информация течёт строго в одну сторону — seed, закрытые ключи, публичные ключи, адреса — и никогда не поднимается обратно по цепочке.
Иерархические детерминированные кошельки — стандарт BIP32, представленный в 2012 году и сегодня почти повсеместный — распространяют эту асимметрию с отдельных ключей на кошельки целиком. Один seed порождает дерево пар ключей, и у этого дерева есть собственная публичная половина: расширенный публичный ключ, или xpub. Из xpub можно вывести любой адрес для приёма, который когда-либо понадобится кошельку, но нельзя вывести ни одного закрытого ключа. Импортируйте этот xpub в другое приложение — и вы восстановите всю публичную сторону кошелька: каждый адрес, каждый баланс, каждую транзакцию, прошлую и будущую, — без чего-либо внутри, что способно тратить. Это и есть watch-only кошелёк: полная карта с изъятым двигателем.
Что он умеет — и где останавливается
Если конкретно, watch-only кошелёк, собранный из xpub, может:
- Показывать балансы и историю по каждому производному адресу, обновляя их по мере поступления и подтверждения платежей.
- Генерировать новые адреса для приёма, чтобы принимать пополнения, ни на шаг не приближаясь к закрытому ключу.
- Составлять неподписанные транзакции — выбирать монеты, задавать комиссию, указывать получателя — упакованные в стандартный формат (в Bitcoin это обычно PSBT), который отдельный подписант может прочитать и одобрить.
- Транслировать подписанную транзакцию, как только подпись придёт откуда-то извне.
И это полный список. Он не может ни подписать, ни потратить, ни смести подчистую средства, ни что-либо авторизовать — ни при каких обстоятельствах. Он способен подготовить транзакцию до последнего байта, но решающее действие всегда происходит в другом месте. Украдите телефон, на котором он работает, — и вы украдёте лишь возможность наблюдать. Название точное, а не скромное: такой кошелёк действительно только наблюдает.
Watch-only режим превращает самое уязвимое из ваших устройств в наименее опасное.
Почему холодное хранение построено на этом разделении
В основе холодного хранения лежит противоречие. Весь смысл в том, что закрытые ключи никогда не касаются машины, подключённой к интернету, — и всё же вам нужно видеть балансы, принимать пополнения и рано или поздно тратить, а всё это связано с сетью. Что-то должно встать посередине, и это что-то — watch-only кошелёк.
Стандартный цикл выглядит так. Watch-only режим на онлайн-устройстве составляет неподписанную транзакцию и передаёт её через воздушный зазор — обычно в виде QR-кода или файла. Офлайн-подписант, у которого есть ключи и нет сетевого соединения, показывает то, что его просят одобрить, подписывает и отдаёт назад одну лишь подпись. Наблюдающая половина затем транслирует её. Ключи не перемещаются ни в ту, ни в другую сторону; неподписанные транзакции идут в одну сторону, подписи — в другую. Что особенно важно, seed-фразу никогда не приходится вводить, восстанавливать или даже показывать машине, которая бывала в сети, — а поскольку seed-фраза — единая точка отказа, держать её полностью в стороне от подключённого к сети оборудования стоит небольшой церемонии.
Аппаратные кошельки — та же архитектура в другой упаковке. Приложение-компаньон на вашем компьютере функционально представляет собой watch-only кошелёк, а устройство на кабеле — подписант; в обеих формах это грамотное решение. Различаются они транспортом (USB или Bluetooth против QR-кодов, которые легче проверить в момент передачи) и тем, покупаете ли вы специальное оборудование вообще. Сценарий холодного кошелька Ownbit реализует вариант с QR-кодами на двух обычных смартфонах — подробнее об этом ниже.
Оговорка о приватности: xpub — это карта
Безопасность watch-only режима в части трат делает людей беспечными по отношению к xpub, и это стоит поправить. Любой, у кого есть ваш xpub, видит каждый адрес, который ваш кошелёк использовал или когда-либо будет использовать, — полный баланс, полную историю, обновляющиеся бесконечно. Взять ничего нельзя, но наблюдать можно за всем, а для многих владельцев это почти столь же чувствительно. Утёкший xpub нельзя тихо заменить: единственный реальный выход — перевести средства в новый кошелёк, построенный из новой seed-фразы.
Поэтому относитесь к xpub как к конфиденциальным данным, хотя технически это материал публичного ключа. Передавайте контрагентам отдельные адреса, но никогда — сам xpub. Импортируйте его только в те приложения и сервисы, которым вы доверили бы всю свою финансовую историю: трекер портфеля удобен, но это ещё и постоянное раскрытие данных тому, кто им управляет. Единственное место, где широкий обмен xpub действительно неизбежен, — это мультиподпись, где со-подписанты должны обменяться xpub, чтобы собрать общий кошелёк; это ограниченное, осознанное раскрытие между людьми, которые и так делят хранение.
Для чего люди на самом деле используют watch-only кошельки
Связка с холодным хранением — флагманский сценарий, но этот приём оправдывает себя и в обычных ситуациях:
- Мониторинг долгосрочных накоплений. Следите за сбережениями с телефона в кармане, не нося при себе право ими распоряжаться.
- Проверка поступлений. Убедитесь, что вывод с биржи или оплата счёта действительно дошли, не разблокируя ничего, что способно двигать деньги.
- Доступ на чтение без доступа на трату. Бухгалтер, аудитор или сооснователь может следить за историей казначейства, не имея ни малейшей возможности к нему притронуться, — чтение и запись становятся раздельными правами, какими и должны были быть всегда.
- Наблюдение за общей мультиподписью. Каждый участник мультиподписи 2-из-3 может отслеживать кошелёк в реальном времени, тогда как для траты по-прежнему нужен кворум. Видимость всеобщая; полномочия остаются пороговыми.
Как Ownbit связывает Watch Wallet с офлайн-телефоном
Ownbit встраивает это разделение как полноценный сценарий, а не как функцию для экспертов. Запасной телефон, оставленный офлайн навсегда, становится подписантом: он генерирует стандартную seed-фразу BIP39, хранит её и никогда ни к чему не подключается. Ваш повседневный телефон запускает Watch Wallet — watch-only половину, — который знает адреса кошелька, показывает балансы и составляет неподписанные транзакции. Чтобы потратить, Watch Wallet показывает неподписанную транзакцию в виде QR-кода; офлайн-телефон сканирует его, показывает ровно то, что собирается подписать, подписывает и выводит подпись ещё одним QR-кодом, который онлайн-телефон считывает обратно и транслирует. Через зазор не проходит ничего, кроме этих двух QR-кодов, и никакого дополнительного оборудования не требуется. Если у вас уже есть Ledger или Trezor, ту же мнемоническую фразу можно импортировать в офлайн-телефон, чтобы завести существующие ключи в холодную мультиподпись.
Границы доверия применимы к нам ровно так же, как ко всем остальным. Серверы Ownbit координируют подписание, но никогда не хранят пользовательских ключей; каждый ключ — это стандартная seed-фраза BIP39; а модель безопасности устроена так, что восстановление работает даже без серверов Ownbit. Watch-only режим, который вы не можете проверить самостоятельно, — это просто ещё один экран, которому вас вынуждают доверять; смысл этой архитектуры в том, что вас не вынуждают.
Часто задаваемые вопросы
Можно ли взломать watch-only кошелёк?
Его можно скомпрометировать, но злоумышленник получит возможность наблюдать, а не средства: красть нечего — материала закрытого ключа там нет, поэтому подделать подпись невозможно. Реальная опасность — обман: вредоносная программа на онлайн-устройстве может показать подменённый адрес для приёма или подтасованную транзакцию. Именно поэтому важен офлайн-подписант, который показывает истинные детали транзакции до подписания, и именно поэтому крупные пополнения заслуживают проверки адреса на устройстве для подписи.
Безопасно ли делиться своим xpub?
С точки зрения трат — безопасно, с точки зрения приватности — чувствительно. С помощью xpub нельзя двигать средства, но всякий, у кого он есть, бесконечно видит каждый адрес, который выводит ваш кошелёк, с полными балансами и историей. Передавайте контрагентам отдельные адреса, а xpub приберегите для устройств, сервисов и со-подписантов, которым доверяете всю свою финансовую картину.
Можно ли отправить криптовалюту из watch-only режима?
Сам по себе — нет. Watch-only кошелёк может составить неподписанную транзакцию и транслировать подписанную, но подпись должна прийти с устройства, где хранятся закрытые ключи, — офлайн-телефона, аппаратного кошелька или другого подписанта. Полноценный сценарий траты получается именно из связки этих двух половин.
В чём разница между watch-only режимом и холодным кошельком?
Это две половины одной конструкции. Холодный кошелёк — офлайн-устройство, которое хранит ключи и подписывает; watch-only кошелёк — онлайн-окно, которое не хранит ключей, но берёт на себя всё, что требует сеть: балансы, адреса для приёма, неподписанные транзакции, трансляцию. Вместе они позволяют ключам оставаться офлайн навсегда, не жертвуя повседневным удобством.
Если хотите попробовать это разделение, ничего не покупая, сценарий холодного кошелька Ownbit превращает запасной телефон в офлайн-подписанта в паре с Watch Wallet на вашем повседневном телефоне: неподписанные транзакции — на вход, подписи — на выход, ключи никогда не в сети. Более широкая модель безопасности построена на том же принципе минимизированного доверия, и ваши ключи остаются вашими независимо от подписки. Каждый новый пользователь получает 7-дневный бесплатный пробный период.