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

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

Под какой сценарий подбирается кошелёк

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

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

Сравнение типов: что меняется для пользователя

Схемы наблюдения различаются тем, что принимают за событие. Разница видна ровно на объединении остатков.

Схема наблюдения Что считает событием Как ведёт себя при объединении
Подписка на список отдельных адресов Любое движение по каждому адресу из списка Присылает столько тревог, сколько входов попало в транзакцию, плюс одну на адрес сдачи
Подписка на описание кошелька целиком Изменение сальдо по всем ветвям сразу Одно уведомление об изменении на величину комиссии — честная картина
Выгрузка истории адреса из обозревателя Записи в списке транзакций адреса Отдаёт по странице: публичный интерфейс возвращает до 50 транзакций из мемпула и 25 подтверждённых за запрос
Индекс траты выходов на своём узле Факт, что конкретный выход потрачен и чем именно Показывает транзакцию-потребителя целиком, то есть доказывает самоперевод

Последняя строка — ответ на вопрос «кто потратил мой выход». В Bitcoin Core 31.0 для этого добавили настройку txospenderindex, а вызов gettxspendingprevout научили отдавать полную транзакцию-потребителя. Это и есть машинное доказательство самоперевода: обе стороны сходятся без доверия к чужому серверу.

Настройка шаг за шагом

  1. Соберите полный перечень своих адресов и ветвей до объединения — правило «оба конца мои» без этого перечня не работает.
  2. Переведите наблюдение с отдельных адресов на описание кошелька: уведомление должно приходить на изменение сальдо, а не на движение по адресу.
  3. Зафиксируйте ожидание. Перед отправкой запишите число входов, адрес сдачи и расчётную плату — это контрольный отпечаток операции.
  4. Отправьте объединение и дождитесь оповещения. Сверьте пришедшую цифру с ожиданием: расхождение больше платы означает чужое вмешательство.
  5. Пометьте транзакцию в истории как внутреннее перемещение и выгрузите историю в учёт тем же днём.
  6. Через сутки повторите выгрузку: подтверждённая транзакция должна попасть в неё один раз, а не двумя записями.
Ориентиры на 15 октября 2026 года. Публичный интерфейс обозревателя отдаёт по адресу до 50 транзакций из мемпула и 25 подтверждённых за один запрос, а точность оценки платы доходит до 0,1 сат/вБ. Настройка txospenderindex и расширенный ответ gettxspendingprevout появились в Bitcoin Core 31.0 — выпуск от 19 апреля 2026 года. Порог пыли для адреса SegWit при политике 3000 сат/квБ составляет 294 сатоши.
Схема из пяти шагов: перечень своих адресов, подписка на сальдо кошелька, запись ожидания до отправки, сверка оповещения с ожиданием, пометка внутреннего перемещения
Схема из пяти шагов: перечень своих адресов, подписка на сальдо кошелька, запись ожидания до отправки, сверка оповещения с ожиданием, пометка внутреннего перемещения

Резервная копия и проверка восстановления

Резервная копия семени восстанавливает ключи. Метки она не восстанавливает. После переустановки кошелька история возвращается обезличенной: суммы на месте, пометка «внутреннее перемещение» исчезла, и объединение снова читается как расход. Поэтому копия для этой задачи состоит из двух частей — семени и файла с метками, выгруженного из кошелька.

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

Типовые ошибки, которые стоят денег

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

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

Третья ошибка — считать учёт по уведомлениям. Канал оповещений теряет сообщения, дублирует их и молчит при обрыве; источником записи он быть не может. Четвёртая — выгружать историю по одному адресу и забывать про страницы. Запрос вернёт первые записи, остальное останется за кадром. Пятая — помечать транзакцию «потом». Потом не наступает.

Что делать при утере доступа

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

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

Чек-лист

  • Перечень своих адресов и ветвей составлен до объединения
  • Уведомление настроено на сальдо кошелька, а не на отдельные адреса
  • Ожидание записано: число входов, адрес сдачи, расчётная плата
  • Пришедшее оповещение сверено с ожиданием в тот же день
  • Транзакция помечена как внутреннее перемещение
  • История выгружена с учётом постраничной отдачи, без потери записей
  • Копия меток лежит рядом с резервной копией семени
  • Прогон восстановления показал сохранность и баланса, и пометок

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

Почему после объединения пришло сразу несколько уведомлений?

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

Как доказать себе, что списание — это моё объединение?

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

Можно ли вести учёт прямо по сообщениям из канала?

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

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

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

Вердикт

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

Разборы по кошелькам и наблюдению публикуем в Telegram-канале Cryptium.