Уроки · Платёж и его статус

Как потерянный ответ может привести к повторной выплате

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

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

Между платежом и сведениями о нём

В октябре 2026 года разработчики BTCPay Server исправили ошибку именно на этой границе — между самим платежом и сведениями о нём.

BTCPay сохранял идентификатор Lightning-выплаты, чтобы впоследствии уточнить её состояние. Однако если очередной запрос не находил платёж, программа могла отменить запись о выплате и удалить сохранённые сведения. Отсутствие ответа фактически превращалось в утверждение: платёж не состоялся.

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

Повторить запрос — не значит повторить платёж

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

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

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

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

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

  1. Исправление BTCPay Server #7679 ↗
  2. Обсуждение разработчиков #7603 ↗

Разбор исправления программного учёта, а не сообщение о подтверждённом хищении. Принятие изменения в основную ветку не означает его наличие во всех установках.

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

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