Безопасность · Синхронизация кошелька

Кошелёк сообщил об успехе, но не закончил проверку

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

РЕДАКЦИОННЫЙ ОБЗОР · Подготовлен редакцией проекта на основе указанных источников.

Ошибка соединения, которую не показали

Два октябрьских исправления Bitcoin Development Kit, набора библиотек для создания кошельков, показали разные способы возникновения такой ситуации.

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

Из-за этого уже потраченный выход мог продолжать считаться непотраченным в локальном состоянии кошелька. Исправление приняли 18 октября: транспортные ошибки больше не должны исчезать незаметно.

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

Проверка, которая ничего не запросила

Во втором случае причиной становился нулевой параметр количества запросов. При определённых настройках компоненты Electrum и Esplora могли пропустить обращения к серверу и вернуть внешне успешный пустой результат.

Исправление приняли 19 октября: такие значения теперь обрабатываются как единица, а не как повод незаметно не выполнять запросы.

Речь идёт о конкретных библиотеках и путях работы, а не обо всех Bitcoin-кошельках. По этим сообщениям нельзя объявить любой неверный баланс следствием найденных ошибок.

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

Источники и проверка

  1. BDK #2325: обработка транспортных ошибок ↗
  2. BDK #2360: параметры синхронизации ↗

Материал о конкретных библиотеках и путях синхронизации. Это не изменение правил Bitcoin и не утверждение об уязвимости всех кошельков.

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

← Вернуться к рубрике