Блок был. Потом его не стало. А деньги клиенту уже показали.
Бывает, что два майнера находят блок почти одновременно. Часть сети идёт за одним, часть за другим. Потом одна цепочка обгоняет — и вторую просто выкидывают. Это реорганизация, реорг.
Транзакции из выкинутого блока обычно не теряются: возвращаются в мемпул и попадают в следующий. Но если за это время кто-то успел потратить ту же монету другой транзакцией, в новой цепочке окажется она. Вот вам и двойная трата.
Поэтому одно подтверждение — это ставка, а не гарантия. Каждый новый блок сверху делает откат дороже и менее вероятным. Сколько ждать — зависит от сети и суммы. И это число должно быть в регламенте, а не в голове разработчика.
В сетях с финальностью есть момент, после которого откатить уже нельзя (про Ethereum я писал в сентябре).
А в пятницу — история, как цепочку Bitcoin однажды откатили по договорённости людей.
💬 Сколько подтверждений ждёте вы — и кто это число придумал?