Data·6 мин чтения

Реорги и подтверждения: сколько блоков считать безопасным

Любой бэкенд, зачисляющий депозит, обязан ответить на один вопрос: когда транзакция достаточно финальна, чтобы на неё действовать? Сочтёте блок финальным слишком рано — и реорг сотрёт депозит, который вы уже зачислили. Прождёте слишком долго — раздражите пользователей. Правильный ответ — свой для каждой сети.

Почему реорги вообще случаются

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

Модели финальности различаются

Proof-of-work сети вроде Bitcoin имеют вероятностную финальность: чем глубже подтверждения, тем экспоненциально ниже шансы отката, но никогда ровно ноль. Ethereum после Merge добавляет экономическую финальность через чекпоинты примерно каждые две эпохи (~13 minutes), после которых откат требует слэшинга трети стейка. L2 наследуют собственную поверхность реоргов от секвенсера плюс уровня расчётов. Один порог не подходит всем.

Практические пороги

Типовые продовые настройки: Bitcoin 3–6 подтверждений в зависимости от суммы, Ethereum 12–32 блока (или ждать тег finalized), высоконагруженные EVM-сети — пропорционально больше блоков, потому что время блока короче. Для чего угодно высокостоимостного опирайтесь на тег finalized/justified, а не на сырое число блоков, — так вы наследуете собственную гарантию финальности сети.

Как детектить реорг в своём бэкенде

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

1st Node Engineering

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

Могу ли я просто подождать подольше, чтобы быть полностью в безопасности?

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

Реоргаются ли L2?

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

Похожее

Пополнили, получили ключ, запустили.

Полное самообслуживание. Оплата криптой или картой. Тарификация в кредитах — тяжёлые примитивы дороже, простые дёшевы.

Получить API-ключ