Объединить мелкие остатки в один перевод и настроить уведомления — две половины одной операции: сначала собираете свои выходы в транзакцию на собственный адрес, затем учите канал оповещений отличать такой самоперевод от настоящего расхода. Без второй половины объединение выглядит как кража. Наблюдатель видит списание всей суммы с ваших адресов и присылает тревогу, а учёт записывает реализацию, которой не было. Правило строится на обоих концах транзакции, а не на движении по адресу.
Под какой сценарий подбирается кошелёк
Сценарий такой: остатков много, тратить их по одному дорого, а за кошельком следит оповещение. Нужен инструмент, который знает весь набор своих адресов и умеет показывать сальдо транзакции, а не отдельные стороны. Кошелёк, считающий каждый адрес самостоятельным счётом, для этой работы непригоден.
Второе требование — метки. Транзакция объединения должна получить пометку сразу после отправки, иначе через месяц её не отличить от платежа. В обращениях читателей это типовая беда: человек находит в истории крупное списание, не помнит операции и час выясняет, не взломан ли кошелёк. Третье требование — экспорт истории в файл, с которым работает учёт. Разбор того, какую ответственность даёт самостоятельное хранение, стоит перечитать перед первой чисткой остатков: вести учёт здесь никто, кроме владельца, не станет.
Сравнение типов: что меняется для пользователя
Схемы наблюдения различаются тем, что принимают за событие. Разница видна ровно на объединении остатков.
| Схема наблюдения | Что считает событием | Как ведёт себя при объединении |
|---|---|---|
| Подписка на список отдельных адресов | Любое движение по каждому адресу из списка | Присылает столько тревог, сколько входов попало в транзакцию, плюс одну на адрес сдачи |
| Подписка на описание кошелька целиком | Изменение сальдо по всем ветвям сразу | Одно уведомление об изменении на величину комиссии — честная картина |
| Выгрузка истории адреса из обозревателя | Записи в списке транзакций адреса | Отдаёт по странице: публичный интерфейс возвращает до 50 транзакций из мемпула и 25 подтверждённых за запрос |
| Индекс траты выходов на своём узле | Факт, что конкретный выход потрачен и чем именно | Показывает транзакцию-потребителя целиком, то есть доказывает самоперевод |
Последняя строка — ответ на вопрос «кто потратил мой выход». В Bitcoin Core 31.0 для этого добавили настройку txospenderindex, а вызов gettxspendingprevout научили отдавать полную транзакцию-потребителя. Это и есть машинное доказательство самоперевода: обе стороны сходятся без доверия к чужому серверу.
Настройка шаг за шагом
- Соберите полный перечень своих адресов и ветвей до объединения — правило «оба конца мои» без этого перечня не работает.
- Переведите наблюдение с отдельных адресов на описание кошелька: уведомление должно приходить на изменение сальдо, а не на движение по адресу.
- Зафиксируйте ожидание. Перед отправкой запишите число входов, адрес сдачи и расчётную плату — это контрольный отпечаток операции.
- Отправьте объединение и дождитесь оповещения. Сверьте пришедшую цифру с ожиданием: расхождение больше платы означает чужое вмешательство.
- Пометьте транзакцию в истории как внутреннее перемещение и выгрузите историю в учёт тем же днём.
- Через сутки повторите выгрузку: подтверждённая транзакция должна попасть в неё один раз, а не двумя записями.

Резервная копия и проверка восстановления
Резервная копия семени восстанавливает ключи. Метки она не восстанавливает. После переустановки кошелька история возвращается обезличенной: суммы на месте, пометка «внутреннее перемещение» исчезла, и объединение снова читается как расход. Поэтому копия для этой задачи состоит из двух частей — семени и файла с метками, выгруженного из кошелька.
Проверку делают так. Восстановите кошелёк на чистом устройстве. Подгрузите файл меток. Сверьте, что транзакция объединения помечена. Сравните итоговое сальдо с выгрузкой учёта за тот же период. Описание того, как устроен расширенный публичный ключ в мультиподписи, помогает понять, почему для наблюдения хватает открытой части, а для меток нужен отдельный файл: ключи и смыслы живут в разных местах.
Типовые ошибки, которые стоят денег
Вторая ошибка — тянуть в объединение чужие присылки. Мелочь неизвестного происхождения приходит с целью, и разбор того, как распознать пылевую атаку на кошелёк, объясняет механику: потратив такую крошку вместе со своими остатками, владелец публично связывает адреса. Уведомление об этом не предупредит, оно придёт по факту.
Третья ошибка — считать учёт по уведомлениям. Канал оповещений теряет сообщения, дублирует их и молчит при обрыве; источником записи он быть не может. Четвёртая — выгружать историю по одному адресу и забывать про страницы. Запрос вернёт первые записи, остальное останется за кадром. Пятая — помечать транзакцию «потом». Потом не наступает.
Что делать при утере доступа
Утеря доступа к кошельку и утеря доступа к каналу оповещений — разные аварии. Первая решается восстановлением из копии, вторая — пересборкой наблюдения заново. Во втором случае средства целы, но история наблюдения обрывается, и промежуток между потерей канала и новой подпиской остаётся непросмотренным. Закрывают его выгрузкой истории за период, а не догадками.
Если утрачены и кошелёк, и метки, порядок такой: восстановить ключи, выгрузить историю из обозревателя по описанию кошелька, разметить внутренние перемещения по признаку «входы и выходы в одном наборе адресов». Признак машинный, разметка восстановима. Регламент хранения активов на годы стоит сразу дополнить пунктом о копии меток — он дешёвый, а спасает часы работы.
Чек-лист
- Перечень своих адресов и ветвей составлен до объединения
- Уведомление настроено на сальдо кошелька, а не на отдельные адреса
- Ожидание записано: число входов, адрес сдачи, расчётная плата
- Пришедшее оповещение сверено с ожиданием в тот же день
- Транзакция помечена как внутреннее перемещение
- История выгружена с учётом постраничной отдачи, без потери записей
- Копия меток лежит рядом с резервной копией семени
- Прогон восстановления показал сохранность и баланса, и пометок
Частые вопросы
Почему после объединения пришло сразу несколько уведомлений?
Потому что правило следит за отдельными адресами. Каждый вход транзакции — движение по своему адресу, и каждое из них канал считает отдельным событием. Добавьте к этому оповещение о поступлении на адрес сдачи. Лечится переходом на подписку по описанию кошелька: тогда событие одно, на величину комиссии.
Как доказать себе, что списание — это моё объединение?
Сверьте транзакцию с записанным заранее ожиданием: число входов, адрес сдачи, размер платы. Если все выходы транзакции ведут на ваши адреса, перед вами самоперевод. На своём узле это подтверждает индекс траты выходов, который показывает транзакцию-потребителя целиком.
Можно ли вести учёт прямо по сообщениям из канала?
Нет. Канал оповещений — сигнализация, а не бухгалтерская книга: сообщения теряются, повторяются и приходят с задержкой. Источником записи остаётся выгрузка истории из кошелька или обозревателя, сверенная с цепочкой. Уведомление нужно, чтобы вовремя посмотреть, а не чтобы считать.
Нужно ли уведомлять о самопереводах вообще?
Нужно, но отдельным правилом и с мягким сигналом. Самоперевод подтверждает, что объединение прошло, и расхождение суммы с ожиданием укажет на проблему. Смешивать его с тревогой о расходе не стоит: разные события требуют разной реакции и разного тона сообщения.
Материалы по теме:
- Что такое самостоятельное хранение и какую ответственность оно даёт — кто ведёт учёт при своём хранении
- Как устроен расширенный публичный ключ в мультиподписи — что даёт открытая часть для наблюдения
- Как распознать пылевую атаку на кошелёк и что делать с полученной мелочью — какую мелочь не объединять
- Как организовать хранение криптовалюты, если держите активы годами — регламент и копии
Первоисточники: примечания к выпуску Bitcoin Core 31.0 и описание программного интерфейса публичного обозревателя.
Вердикт
Объединение остатков ломает наивную сигнализацию — и это хорошо, потому что ломает её на безопасной операции, а не на реальной атаке. Переведите наблюдение на сальдо кошелька до первой чистки остатков, запишите ожидание перед отправкой и пометьте транзакцию в тот же день. Из редакционной практики: именно ложные тревоги приучают людей не читать уведомления. Сигнал должен приходить редко. Тогда ему верят.
Разборы по кошелькам и наблюдению публикуем в Telegram-канале Cryptium.
Обсуждение
Добавить комментарий