Перейти к содержанию

Восстановление Bitcoin-кошелька: сверка баланса

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

Это сценарий на бумаге. Узел, кошелёк и база не поднимаются, архивы не загружаются, команды не выполняются. Ожидаемые результаты помогают заранее определить, что потребуется подтвердить при отдельном разрешённом запуске.

Сначала идентичность среды

Восстановитель определяет сеть, профиль инструмента и выделенный каталог данных. Если учебная копия regtest загрузилась к источнику другой сети, красивый пустой баланс не является доказательством потери. Сначала сверяется контекст, затем данные.

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

Восстановление секретов выполняется уполномоченным подписантом, а наблюдающий сервер получает только необходимый публичный материал. Авария не должна становиться поводом перенести все ключи в веб-процесс ради временного удобства. Граница полномочий остаётся прежней.

Политика и диапазон

Из описи извлекаются все дескрипторы получения, сдачи и исторических условий. Диапазоны покрывают максимальные выданные индексы. Время или высота начала сканирования относятся к исходной истории, а не к сегодняшней дате восстановления.

Сверяем контрольные адреса: определённый индекс должен приводить к ранее согласованному назначению. Если результат отличается, проверяем сеть, путь и форму условия. Нельзя считать различие просто новым визуальным форматом, пока не установлено, что скрипт совпадает.

Этап Ожидаемое основание перехода
Конфигурация Сеть и профиль совпали с описью
Политика Контрольные назначения совпали
Диапазон Покрыты выданные адреса обеих ветвей
История Доступны данные от нужной точки

Эти основания сохраняются в восстановительном отчёте. Они позволяют отличить неполную работу от действительного отсутствия поступления. Сам факт успешного запуска процесса не заполняет таблицу автоматически.

Поиск истории

Узел проверяет и получает необходимые данные по выбранному профилю. Затем кошелёк обрабатывает относящуюся историю. Если старые блоки сокращены хранением, определяется источник их восстановления. Текущий набор UTXO может помочь обнаружить доступные выходы, но не вернуть все уже израсходованные платежи.

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

Поступления заново идентифицируются по сети, txid и vout. Если журнал уже содержит такой объект, обновляются сведения включения. Новая обработка старых блоков не создаёт вторую самостоятельную оплату того же выхода.

Сопоставление базы

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

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

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

Расходование и остатки

Сверяем текущие доступные выходы с сохранённой историей расходов. Исходящие транзакции могли быть отправлены перед аварией, но ответ сервера не успел сохраниться. В таком случае новая независимая отправка может привести к повторному возврату. Сначала выясняется судьба конкретного кандидата и выбранных входов.

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

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

Возобновление сайта

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

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

Приостановленное возобновление

Восстановление может завершиться по сетевой части раньше, чем по коммерческой. Например, кошелёк полностью нашёл выходы, но таблица последних счетов доступна лишь из старого снимка. Тогда можно вернуть внутреннее наблюдение и показывать общую задержку сверки, однако автоматическую выдачу по несопоставленным платежам оставляем приостановленной. Это конкретная ограниченная готовность, а не полный отказ всех функций.

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

Методы представлены в restorewallet и rescanblockchain. Теперь у библиотеки есть последовательный восстановительный маршрут с основаниями каждого этапа. Последний урок соберёт весь курс в досье кошелька, которое можно передать другому оператору без потери смысла.

Оглавление серии