Что такое подтверждения транзакции и сколько ждать

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

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

В Bitcoin блоки появляются в среднем раз в десять минут, а безопасность растёт с каждым подтверждением; давняя договорённость — считать транзакцию надёжной после шести подтверждений, хотя для небольших сумм многие сервисы довольствуются меньшим. В сетях с детерминированной финальностью важнее не число блоков, а момент, когда блок признан финальным: в Ethereum после перехода на Proof-of-Stake это происходит через две эпохи, порядка тринадцати минут; в Solana у транзакций есть уровни processed, confirmed и finalized; в TON финальность наступает за секунды.

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

Типичные ошибки интеграции: выдавать товар по факту появления транзакции в мемпуле, доверять одному узлу (он может отставать или ошибаться), не обрабатывать ситуацию, когда транзакция была в блоке, а после реорганизации пропала.

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

Что учесть при интеграции

  • Не выдавайте товар по неподтверждённой транзакции.
  • Задавайте порог подтверждений отдельно для каждой сети.
  • Сверяйте данные минимум с двумя источниками.
  • Показывайте клиенту статус «платёж найден, ждём подтверждения».

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

Почему платёж виден в обозревателе, но ещё не зачислен?

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

Сколько подтверждений нужно для Bitcoin?

Классический ориентир — шесть, но каждый сервис выбирает порог сам с учётом суммы и риска.

Может ли подтверждённая транзакция пропасть?

При малом числе подтверждений в сетях с вероятностной финальностью — теоретически да, при реорганизации. После финализации — нет.

Где это пригодится

Связанные термины

Начните принимать оплату сегодня

Аккаунт и первый проект за минуту, без абонентской платы.

Создать аккаунт