Реорги и подтверждения: сколько блоков считать безопасным
Любой бэкенд, зачисляющий депозит, обязан ответить на один вопрос: когда транзакция достаточно финальна, чтобы на неё действовать? Сочтёте блок финальным слишком рано — и реорг сотрёт депозит, который вы уже зачислили. Прождёте слишком долго — раздражите пользователей. Правильный ответ — свой для каждой сети.
Почему реорги вообще случаются
Когда два валидных блока производятся почти на одной высоте, сеть временно расходится в том, где вершина. Одна ветвь побеждает по мере того, как на ней строятся новые блоки, а транзакции проигравшей ветви возвращаются в mempool. Это нормальное поведение консенсуса, а не атака. Короткие реорги в один-два блока рутинно происходят в большинстве сетей.
Модели финальности различаются
Proof-of-work сети вроде Bitcoin имеют вероятностную финальность: чем глубже подтверждения, тем экспоненциально ниже шансы отката, но никогда ровно ноль. Ethereum после Merge добавляет экономическую финальность через чекпоинты примерно каждые две эпохи (~13 minutes), после которых откат требует слэшинга трети стейка. L2 наследуют собственную поверхность реоргов от секвенсера плюс уровня расчётов. Один порог не подходит всем.
Практические пороги
Типовые продовые настройки: Bitcoin 3–6 подтверждений в зависимости от суммы, Ethereum 12–32 блока (или ждать тег finalized), высоконагруженные EVM-сети — пропорционально больше блоков, потому что время блока короче. Для чего угодно высокостоимостного опирайтесь на тег finalized/justified, а не на сырое число блоков, — так вы наследуете собственную гарантию финальности сети.
Как детектить реорг в своём бэкенде
Отслеживайте хеш блока, на который зачисляли, а не только высоту. На каждой новой вершине идите назад и подтверждайте, что хеши родителей всё ещё совпадают с записанными; расхождение означает реорг, который надо обработать откатом предварительных зачислений. Подписка на новые вершины и сверка хешей дешевле, чем отладка двойного зачисления постфактум.
Частые вопросы
Могу ли я просто подождать подольше, чтобы быть полностью в безопасности?
Ожидание дольше снижает риск, но на вероятностных сетях никогда не доходит до нуля, и это бьёт по UX. Использовать тег финальности сети там, где он есть, — рычаг лучше, чем просто наращивать число блоков.
Реоргаются ли L2?
Да. Централизованный секвенсер может переупорядочить или отбросить неподтверждённые транзакции, и L2 к тому же зависит от своего уровня расчётов. Считайте финальность L2 функцией и секвенсера, и расчётов на L1.
Похожее
Пополнили, получили ключ, запустили.
Полное самообслуживание. Оплата криптой или картой. Тарификация в кредитах — тяжёлые примитивы дороже, простые дёшевы.
Получить API-ключ