Когда кошелек пишет «отправлено», деньги не обязательно уже в безопасности. В статье объясняется разница между включенной, подтвержденной и финализированной транзакцией, как с этим обстоит дело в каждой сети и сколько ждать, прежде чем полагаться на платеж.
Три стадии транзакции
Эти слова используются немного по-разному, но идея одна и та же.
- Включена (included): транзакция находится в блоке. Она видна в обозревателе. Этот блок все еще может быть заменен.
- Подтверждена (confirmed): сверху добавлены новые блоки, поэтому заменить ее сложнее. Каждый новый блок — это еще одно подтверждение (confirmation).
- Финализирована (finalized): сеть гарантирует, что блок не будет отменен, если только не сломается значительная часть системы. Не в каждой сети есть явная точка финальности.
Представьте банковский чек. Передать его — одно. Увидеть деньги на счете — другое. Знать, что он уже не вернется неоплаченным, — последний шаг.
Реорганизации: почему ожидание помогает
Блокчейнами управляют многие узлы, и иногда два допустимых блока создаются почти одновременно. Разные части сети на короткое время видят разные блоки. Вскоре одна ветка становится длиннее или получает больше голосов, а другая отбрасывается. Это реорганизация (reorganization), или reorg.
Когда ваш блок отбрасывается, транзакция возвращается в пул ожидания и обычно снова включается в один из следующих блоков. Но платеж, который вы считали завершенным, может ненадолго исчезнуть. В редких и крайних случаях кто-то может попытаться намеренно переписать более длинный участок цепочки. Чем больше блоков над вашим, тем больше работы или стейка потребуется злоумышленнику. Поэтому ожидание большего числа подтверждений делает платеж безопаснее.
Bitcoin
В Bitcoin вероятностная финальность (probabilistic finality). Нет единого момента, когда платеж становится окончательным. Каждое подтверждение делает отмену менее вероятной.
Распространенное практическое правило — 6 подтверждений, это около часа, поскольку блоки приходят в среднем примерно раз в 10 минут. Небольшие платежи часто принимают при 1–3 подтверждениях. Для крупных сумм часто ждут 6 и больше. Наблюдать за приходом блоков можно на странице Bitcoin. Подробнее о комиссиях и времени — в статье мемпул и комиссии Bitcoin.
Ethereum
Ethereum производит блок в слоте (slot) длиной 12 секунд. 32 слота образуют эпоху (epoch). Валидаторы голосуют за блоки, и сеть может пометить блок как обоснованный (justified), а затем финализированный (finalized).
Финальность наступает примерно через две эпохи, это около 13 минут. После этого отмена блока потребовала бы уничтожения большого количества застейканных ETH, поэтому она крайне маловероятна. До этого транзакция, включенная в блок, обычно безопасна для обычных платежей, но реорганизация недавнего блока возможна. См. Ethereum.
Solana
Solana использует уровни подтверждения (commitment levels), которые можно запросить при чтении данных:
- Processed: узел увидел транзакцию в блоке. Она все еще может быть отброшена.
- Confirmed: значительное большинство стейка проголосовало за блок. Он редко отменяется.
- Finalized: блок укоренен (rooted), то есть поверх него построено много следующих блоков, и его нельзя отменить.
Слоты Solana длятся около 400 миллисекунд, поэтому confirmed наступает за секунды, а finalized занимает заметно дольше, но оба быстры по сравнению с Bitcoin. Обозреватели и кошельки обычно показывают состояние confirmed или finalized. См. Solana.
Сети layer 2
В роллапах вроде Arbitrum, Base и Optimism есть несколько уровней.
- Мягкое подтверждение секвенсором. В L2 есть компонент, упорядочивающий транзакции, — секвенсор (sequencer). Когда он принимает вашу транзакцию, вы видите ее включенной за секунду-две. Это быстро, но опирается на обещание секвенсора.
- Опубликовано в Ethereum (L1). Пакеты секвенсора публикуются в Ethereum. Когда пакет попадает в блок Ethereum, данные становятся публичными, и любой может восстановить состояние L2.
- Окончательно после финальности L1. Когда блок Ethereum с пакетом финализирован, транзакция L2 становится такой же окончательной, как сам Ethereum.
7-дневное окно относится к выводу средств
У оптимистичных роллапов есть окно оспаривания около 7 дней. Его часто путают с финальностью, но это другое. Оно действует, когда вы выводите средства из L2 обратно в Ethereum через официальный мост. Система ждет, чтобы любой мог оспорить неверное утверждение. При обычном использовании L2, например отправке и обмене, 7 дней ждать не нужно. Быстрые мосты и биржи могут сократить ожидание, за плату и с собственными рисками. См. роллапы: optimistic и zero-knowledge и мосты и их риски.
Почему биржи ждут подтверждений
Когда вы вносите криптовалюту на биржу, она может сообщить, что нужно определенное число подтверждений. Биржа хочет избежать зачисления денег, которые могут исчезнуть при реорганизации, а затем быть потрачены или выведены. Требуемое число зависит от сети, риска и суммы. Обычно оно выше в сетях с вероятностной финальностью, таких как Bitcoin, чем в сетях с быстрой явной финальностью.
Если вы ждете зачисления, можно самому следить за числом подтверждений. Найдите хеш транзакции в поиске в шапке ChainMonitor и посмотрите блок и статус. См. как прочитать транзакцию.
Практическое руководство
| Сеть | Разумное ожидание для обычного платежа |
|---|---|
| Bitcoin | 1–3 подтверждения для небольших сумм, 6 для крупных |
| Ethereum и его L2 | Несколько блоков для небольших сумм, финализация (около 13 минут) для крупных |
| Solana | Confirmed для небольших сумм, finalized для крупных |
Это ориентиры, а не правила. Разумное ожидание растет вместе с суммой под риском. Если сомневаетесь, ждите финальности.
Часто задаваемые вопросы
Сколько подтверждений достаточно для Bitcoin?
Шесть — обычное практическое правило для крупных платежей, это занимает около часа. Небольшие платежи часто принимают и с меньшим числом.
Через сколько транзакция Ethereum становится финальной?
Финальность наступает примерно через две эпохи, около 13 минут. Для небольших платежей транзакция обычно безопасна гораздо раньше.
Финальна ли транзакция в Base сразу?
Секвенсор принимает ее за секунды, чего достаточно для большинства повседневных случаев. Она становится такой же окончательной, как Ethereum, после того как ее пакет опубликован в Ethereum и этот блок финализирован.
Что такое реорганизация блокчейна?
Реорганизация происходит, когда сеть отбрасывает несколько последних блоков и переключается на другую допустимую ветку. Транзакции из отброшенных блоков возвращаются в пул ожидания и обычно включаются снова.
Относится ли 7-дневное ожидание к каждой транзакции L2?
Нет. Оно относится к выводу из оптимистичных роллапов в Ethereum через официальный мост. Обычные переводы в L2 так долго не ждут.