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

Лишний доступ — это любая выданная ранее возможность видеть или тратить ваши средства, которая пережила свою задачу: экспортированный публичный ключ, подключённое приложение-наблюдатель, незавершённая подпись или разрешение на списание токена.

Редакция собирает такие обращения месяцами. Картина повторяется. Человек помнит пароль и фразу, но не помнит, кому год назад отдал выгрузку для учёта.

Почему трата закрывает не всякий доступ

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

Отсюда правило. Консолидация обнуляет первую категорию. Вторую она не трогает. Разница принципиальная.

Степень риска от выданного публичного ключа описана в стандарте прямо. BIP-32 «Hierarchical Deterministic Wallets» (Pieter Wuille, создан 11 февраля 2012 года, сверено 15 октября 2026 года) в разделе Security формулирует: знание родительского расширенного публичного ключа плюс любого неукреплённого приватного ключа, произведённого от него, равносильно знанию родительского расширенного приватного ключа — и, значит, всех ключей ниже по дереву.

Инвентаризация: что выдано и кому

Опись составляют до транзакции. Порядок тут важнее скорости. Иначе процедура превратится в уборку одной полки в захламлённой комнате.

Вид доступа Что он даёт держателю Снимается ли консолидацией Чем закрывается
Фраза восстановления или её копия Полный контроль: просмотр, подпись, вывод всех средств со всех счетов дерева Нет. Трата выходов не меняет ключ и не обесценивает копию фразы Только перенос средств на новый ключ с новой фразой, записанной заново
Выданный наружу расширенный публичный ключ Видимость всех адресов счёта, сумм и полной истории поступлений и трат Нет. Новый адрес сдачи выводится из того же дерева и остаётся видимым Переход на другой укреплённый счёт дерева или на другой ключ целиком
Подключённое приложение-наблюдатель Видимость баланса и уведомления; подписывать средства оно не может Нет, если приложению отдан ключ счёта, а не отдельный адрес Удаление подключения на стороне приложения плюс смена счёта дерева
Незавершённая частично подписанная транзакция Возможность дособрать подписи и опубликовать перевод с ваших выходов Да. После траты тех же входов заготовка становится недействительной Сама консолидация; дополнительно удалите файлы заготовок с устройств
Разрешение на списание токена в счётной модели Право контракта списывать токен с вашего адреса в пределах выданного лимита Нет. В счётной модели непотраченных выходов нет, и трата ничего не отменяет Отдельная транзакция, обнуляющая лимит, по одной на каждое разрешение

Как объединить мелкие остатки в один перевод и убрать лишние доступы: порядок

  1. Выпишите все устройства и программы, где когда-либо разворачивался этот кошелёк. Старые телефоны и рабочие ноутбуки тоже считаются.
  2. Найдите все выгрузки публичных ключей. Проверьте почту, облачные папки, переписки с бухгалтером и мастерами по настройке.
  3. Соберите файлы незавершённых подписей. Расширение зависит от программы, но формат один — описан в BIP-174.
  4. Для счётной модели составьте список выданных разрешений на списание и отсортируйте по размеру лимита.
  5. Проведите консолидацию: много входов, один выход на свежий адрес вашего кошелька, пометка замены по комиссии.
  6. Снимите остальные доступы по списку. То, что снять нельзя, закройте переходом на новый счёт дерева.
Схема из шести шагов: перепись устройств, поиск выгрузок публичных ключей, сбор незавершённых подписей, список разрешений на списание, консолидация остатков, снятие оставшихся доступов
Схема из шести шагов: перепись устройств, поиск выгрузок публичных ключей, сбор незавершённых подписей, список разрешений на списание, консолидация остатков, снятие оставшихся доступов
Собирая остатки в один перевод, вы объявляете их общими публично и необратимо. В разделе 10 оригинальной работы о биткоине это сказано прямо: некоторая связность неизбежна при транзакциях со многими входами, которые по необходимости раскрывают, что их входы принадлежали одному владельцу. Если часть кусков вы не хотите связывать с остальными, их собирают отдельно.

Как устроено наблюдение по публичному ключу

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

Правило короткое. Отозвать выданный публичный ключ нельзя — у этого действия нет обратной операции. Можно лишь перестать им пользоваться, то есть перейти на другой укреплённый счёт в дереве, и укреплённая производная как раз для того и введена: утечка ключей отдельного счёта не ставит под удар мастер-ключ и соседние счета.

Резервная копия: что проверяют до уборки

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

Типовые ошибки при уборке доступов

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

Что делать при потере доступа в ходе уборки

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

Чек-лист

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

Материалы по теме:

Частые вопросы

Можно ли отозвать выданный расширенный публичный ключ?

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

Обезвреживает ли консолидация старые заготовки подписей?

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

Нужно ли менять фразу восстановления после уборки доступов?

Менять фразу имеет смысл, когда есть подозрение, что её копия попала к посторонним. В остальных случаях хватает перехода на другой счёт дерева. Смена фразы означает перенос всех средств на новый ключ, и эту операцию планируют отдельно, с проверкой новой копии до перевода.

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

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

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

Столько, сколько относится к одному источнику и одному назначению. Смешивать куски из разных контекстов ради экономии не стоит: связь между ними станет публичной навсегда. Если источников несколько, делайте несколько транзакций, даже если суммарная комиссия окажется выше.

Вердикт

Уборка доступов — работа со списком, а не с кошельком. Транзакция закрывает лишь то, что привязано к потраченным кускам; всё остальное держится на ключе и снимается только сменой счёта или ключа. Полезно развести эти два действия по времени: сначала опись и консолидация, через несколько дней — переход на новый счёт, когда список выданных ключей уже выверен и ничего не всплывает задним числом. Сверяйте перечень раз в полгода.

Первоисточники: раздел Security стандарта BIP-32 и раздел 10 оригинальной работы о биткоине.

Разборы по доступам и ключам выходят в Telegram-канале Cryptium.