
Застрявшие транзакции: почему это происходит и как вытаскивает замена по комиссии
Вы отправили платёж. Кошелёк говорит «в ожидании». Проходит час. Потом три. Обозреватель блоков показывает вашу транзакцию сидящей в мемпуле, неподтверждённой, судя по всему, навсегда.
Ничего не сломано и ничего не потеряно. Вы просто недоставили на аукционе, а аукцион всё ещё идёт.
Комиссии — это аукцион, а не цена
Место в блоке дефицитно и останется таким всегда. Каждый блок вмещает ограниченный объём данных транзакций, и майнеры выбирают, какие транзакции включить. Выбирают по ставке комиссии — сатоши за виртуальный байт, — потому что именно это максимизирует их выручку.
Значит, прикреплённая вами комиссия — это не цена за услугу. Это ставка на непрерывном аукционе против всех остальных, кто пытается попасть в следующий блок.
Отсюда следуют два вывода, и оба контринтуитивны:
Ваша комиссия значима только относительно чужих. Та же комиссия, что подтвердилась за десять минут в прошлый вторник, может пролежать двое суток в оживлённые выходные. В вашей транзакции ничего не изменилось; изменилась конкуренция.
Никакого тайм-аута не существует. Транзакция с заниженной ставкой не истекает и не проваливается. Она ждёт в мемпуле, пока её обгоняют те, кто ставит больше, и ждать может бесконечно. Узлы со временем выбрасывают очень старые транзакции из своих мемпулов — обычно недели через две, — но это местная настройка уборки, а не правило протокола, и полагаться на неё как на аварийный выход нельзя.
Именно второй пункт делает застрявшие транзакции такими мучительными. Ни сообщения об ошибке, ни возврата, ни очевидного действия. Только крутящийся индикатор, который никогда не завершается.
Почему застряла ваша
Оценка комиссии устарела. Оценщики читают недавние условия. Если мемпул заполняется между вашей оценкой и вашей рассылкой — крупная биржа консолидирует средства, идёт минт NFT, накатывает волна ordinals, — ваша ставка мгновенно оказывается ниже рынка.
Вы выбрали экономный уровень и получили ровно то, что просили. Уровни низкого приоритета — это прямая ставка на то, что затор рассосётся. Обычно так и есть. Иногда нет.
Ваша транзакция физически велика. Ставка считается за байт, поэтому транзакция, тратящая много мелких входов, стоит дороже в подтверждении, чем простая на ту же сумму. Кошельки с обилием пыли натыкаются на это постоянно.
Вы тратите неподтверждённый вход. Если вы тратите сдачу от неподтверждённой транзакции, ваша новая не подтвердится, пока не подтвердится родительская. Один застрявший платёж способен тихо посадить на мель всё, что идёт следом.
Замена по комиссии: настоящее решение
Замена по комиссии, описанная в BIP 125, позволяет разослать замену неподтверждённой транзакции, платящую более высокую комиссию. Узлы отбрасывают исходную и передают новую; майнеры берут ставку получше. Подтвердиться может лишь одна из двух — они тратят одни и те же входы, а значит по построению взаимно исключают друг друга.
Это не второй платёж. Это тот же платёж, переставленный.
На практике важны две детали.
Транзакция должна быть заранее помечена как заменяемая. RBF включается по желанию: он сигнализируется установкой номера последовательности входа ниже 0xfffffffe. Соглашение Bitcoin Core — 0xfffffffd, и именно это ставит SSP: буквально 0xffffffff - 2 в построителе транзакций. Если при создании транзакцию не пометили заменяемой, большинство узлов замену отвергнет, и ваши возможности заметно сузятся.
Замена должна перешагнуть порог, и самый очевидный порог — неверный. Четвёртое правило BIP 125 требует, чтобы замена платила по крайней мере исходную комиссию плюс собственный размер по минимальной ставке пересылки. Здесь и спотыкаются: подъём с «экономного» на «обычный» может повысить ставку, тогда как размер почти не меняется, и если арифметика не дотянет, узел отвергнет замену, а вы не добьётесь ничего. SSP считает этот порог явно, ещё до сборки замены, так что новая комиссия гарантированно проходит правило 4, а не отклоняется сетью втихую.
В SSP неподтверждённая заменяемая транзакция показывает в списке транзакций действие Заменить по комиссии. Оно подставляет того же получателя и ту же сумму и переносит комиссию заменяемой транзакции, чтобы порог можно было вычислить, а затем проводит вас через подписание замены на обоих устройствах — точно так же, как любой другой платёж. Вторая подпись по-прежнему обязательна: замена — это новая транзакция, а ничто не подписывается одним устройством.
Не всякая сеть это позволяет
RBF — это выбор политики, а не универсальная возможность, и поддерживаемые SSP сети действительно различаются:
| Сеть | Заменяемо в SSP |
|---|---|
| Bitcoin | Да |
| Litecoin | Да |
| Dogecoin | Да |
| Ravencoin | Да |
| Bitcoin Cash | Нет |
| Zcash | Нет |
| Flux | Нет |
Исключение Bitcoin Cash — намеренное решение самой сети: BCH убрал RBF, чтобы платежи без подтверждений были надёжнее в торговых точках. Это настоящий компромисс, а не недосмотр: вы выигрываете в доверии к неподтверждённым платежам и теряете возможность исправить недоставленный. Zcash и Flux замены тоже не передают.
В этих сетях транзакцию с заниженной ценой приходится пересиживать. Что и есть сильнейший довод в пользу того, чтобы не занижать ставку изначально в сети, которая не даст вам отыграть назад.
Что делать, когда это случилось
Сначала немного подождите. Заторы в мемпуле идут всплесками. Транзакция, которая в девять вечера выглядит обречённой, часто подтверждается за ночь, когда очередь рассасывается. Загляните в визуализатор мемпула, прежде чем тратить деньги на решение.
Если она заменяема и вы спешите — замените. Выбирайте ставку выше текущей ставки нижнего края следующего блока, а не просто выше вашей первоначальной. Ставить чуть больше проигравшей ставки — верный способ проделать всё это дважды.
Не рассылайте второй платёж. Если первый в итоге подтвердится, вы заплатите дважды. Замена безопасна именно потому, что взаимно исключает исходную; отдельная транзакция — нет.
Не тратьте сдачу от застрявшей транзакции. Вы прицепите к первой вторую застрявшую.
Если заменить нельзя — ждите. В сетях без RBF транзакция либо подтвердится, когда затор спадёт, либо со временем выпадет из мемпулов, после чего монеты снова станут тратимыми. Не пробуйте сервисы «отмены»; такого не бывает.
Как не попасть в это снова
Смотрите на комиссию, а не только на ярлык уровня. «Эконом» значит одно в тихое воскресенье и совсем другое во время всплеска комиссий. Большинство кошельков, включая SSP, показывают фактическую ставку.
Честно соотносите срочность и комиссию. Платёж, которому и правда всё равно подождать сутки, должен идти по низкой комиссии — в этом весь смысл уровня. Платёж, который вы будете тревожно обновлять, — не должен.
Держите набор UTXO в порядке. Объединение мелких входов, когда комиссии низкие, делает всякую будущую транзакцию меньше и дешевле. Это самое действенное, что долгосрочный держатель может сделать в отношении комиссий, и лучшее время для этого — когда место в блоке больше никому не нужно.
Выбирайте сети и моменты осознанно. Стратегия комиссий — настоящий навык, и по большей части она сводится к тому, чтобы замечать: в одни моменты место в блоке дешевле, чем в другие.
Застрявшая транзакция — одна из немногих по-настоящему безобидных криптопроблем. Ваши монеты ни разу не покидали ваш контроль, никакого атакующего здесь нет, а лекарство — чётко описанная возможность протокола. Всё это ощущается чрезвычайной ситуацией лишь потому, что интерфейс не предлагает никакого утешения, — и это само по себе повод понимать, что происходит внизу.


