Одна из особенностей протокола Bitcoin — ограниченная пропускная способность. В связи с ростом числа транзакций система все хуже справляется с их отправкой, и пользователи часто сталкиваются с проблемой неподтвержденных переводов. В этой статье мы подробно расскажем о том, что делать, если зависла транзакция в блокчейн и как обезопасить себя от возникновения подобных ситуаций.
Почему транзакция не подтверждается
Каждый перевод в сети Bitcoin проверяют майнеры. Если транзакция легитимна, она включается в новый блок: в этом случае говорят, что транзакция получила подтверждение. Включение в каждый последующий блок увеличивает количество подтверждений, что повышает доверие к транзакции среди всех участников сети.
В идеальном случае каждая транзакция в Bitcoin должна получить как минимум 6 подтверждений, хотя на практике часто используется и меньшее количество. Однако, ни один сервис не примет неподтвержденную транзакцию, то есть такую, которая не включена ни в один новый блок. Именно в таких случаях принято говорить, что перевод завис в блокчейне.
Проблема зависших транзакций возникает по единственной причине: недостаточный размер комиссии. Дело в том, что майнеры проверяют транзакции на конкурентной основе: чем выше комиссия, тем больше вероятность попадания перевода в очередной блок. Если комиссия слишком мала, майнеры могут долго игнорировать перевод, отдавая предпочтение транзакциям с высокой комиссией.
Современные кошельки, такие как Bitcoin Core или blockchain.info, автоматически предлагают оптимальный размер комиссии. Проблема в том, что алгоритм расчета не идеален, и может не учитывать мощные всплески активности в сети. Даже если пользователь указал рекомендуемую комиссию для своей транзакции, существует риск ее зависания в блокчейне.
Зависла транзакция в блокчейн: что делать
Во-первых, не паниковать: транзакция не может исчезнуть в блокчейне навсегда. В зависимости от загруженности сети, возможны три варианта развития событий:
- транзакция войдет в новый блок (получит подтверждение) в течение нескольких минут или часов;
- процесс подтверждения получится ускорить одним из доступных способов;
- при высокой загруженности сети и отсутствии возможности ускорения транзакции перевод просто вернется на счет отправителя в течение нескольких дней.
Первое, что необходимо сделать — получить информацию о статусе транзакции. Для этого зайдите на сайт blockchain.info и введите id транзакции (обычно обозначается как tx или txid) в текстовое поле, расположенное в правом верхнем углу. Запрос выполняется нажатием клавиши <Enter> на клавиатуре (нажимать кнопку не нужно!).
Проверьте количество подтверждений. На скриншоте показан случай, когда транзакция висит в списке неподтвержденных. Если же на месте красного поля стоит конкретное число, беспокоиться не о чем: перевод уже включен в цепь, и достаточно просто подождать еще несколько десятков минут.
В графе «Плата за байт» указан размер комиссии. Это число пригодится для дальнейшей оценки ситуации.
Далее нужно сравнить эту комиссию с текущей статистикой сети Bitcoin. Сделать это можно, просмотрев рекомендуемые комиссии на сайте bitaps.com. Если плата за байт примерно равна или превышает последнее число в поле «Recommended fee», можно надеяться на подтверждение транзакции в течение 1 – 2 часов.
Для подтверждения информации можно воспользоваться сервисом Bitcoinfees, который показывает количество неподтвержденных переводов, разделяя их по размеру комиссии.
В том случае, если комиссия за перевод значительно ниже рекомендуемой, целесообразно воспользоваться одним из методов ускорения переводов.
Способы ускорения транзакций
Если у вас возникла неподтвержденная транзакция в блокчейн, что делать дальше и как ее побыстрее «протолкнуть»? Существует несколько способов ускорения транзакций, которые могут помочь в различных ситуациях. Перечислим основные методы в порядке увеличения сложности.
Использование ускорителей майнинговых пулов
Майнинговые пулы, контролирующие большую долю мощности в системе Bitcoin, могут способствовать пользователям в ускорении транзакций. На данный момент интерес представляют сервисы двух крупных пулов:
В первую очередь стоит использовать ускоритель ViaBTC: он не требует регистрации, и все, что нужно сделать пользователю — ввести id транзакции и капчу.
Если после нескольких попыток транзакция так и не подтвердилась, следует переходить к использованию ускорителя Antpool. Для регистрации на сайте нужно указать E-mail и пароль.
Бот-ускоритель в Telegram
Telegram бот @FastTXbot создан для автоматического ускорения переводов в сети Bitcoin. Для его использования необходимо отправить номер зависшей транзакции и ждать результата. На самом деле бот использует один из предыдущих способов — ускорение через Antpool. При этом робот автоматически делает всю работу за пользователя: достаточно просто дождаться уведомления о результате процедуры, которое обычно приходит в течение 10 минут.
Данный способ не всегда срабатывает для переводов, которые используют очень низкую комиссию.
replace-by-fee
Данная возможность позволяет создать копию зависшей транзакции с повышенной комиссией. На сегодня replace-by-fee поддерживается популярными десктопными кошельками Bitcoin Core и Electrum, а также онлайн-кошельком GreenAddress. Для использования функции нужно создать перевод, содержащий точно такую же сумму, при этом увеличив комиссию до приемлемого уровня. Кроме того, при отправке транзакции нужно обязательно выбрать пункт replace-by-fee: в противном случае средства отправятся дважды. В Bitcoin Core нужная галочка спрятана в нижней части окна отправки.
CPFP (Child pays for parent)
Данный способ предназначен в первую очередь для получателя зависшей транзакции, однако в большинстве случаев может быть использован и отправителем.
Не вдаваясь в сложные технические детали, можно сказать, что способ построен на использовании средств, получение которых еще не было подтверждено в блокчейне. Многие майнинговые пулы способны увидеть связь между неподтвержденным переводом и новой транзакцией, которая связана с предыдущим адресом.
Для использования CPFP в Bitcoin Core нужно перейти в меню «Настройки» — «Опции», выбрать вкладку «Кошелек» и отметить галочки, как показано на скриншоте.
После этого останется создать новую транзакцию на вкладке «Отправить». Щелчком по кнопке «Входы» нужно выбрать сумму, которая изначально была отправлена на счет получателя. Если ускорение производит отправитель, в качестве входа нужно выбирать «сдачу», которая осталась после отправки транзакции. Увидеть размер сдачи можно при просмотре транзакции на сайте blockchain.info.
При использовании CPFP следует устанавливать комиссию, достаточную для проведения сразу двух транзакций. Например, при рекомендуемой плате 150 sat/B следует устанавливать комиссию 300 sat/B или выше.
Двойное расходование
Наиболее сложный способ, доступный только для пользователей Bitcoin Core. Рекомендуется для опытных пользователей, так как требует навыков использования командной строки и очень аккуратного обращения с входами транзакций.
Для начала необходимо запустить кошелек из командной строки с параметром -zapwallettxes. Кроме того, для современных версий Bitcoin Core требуется удаление файла mempool.dat из папки с программой. После этого можно создавать новую транзакцию, которая в точности повторит старую, за исключением увеличенной комиссии.
При двойном расходовании возникает важный нюанс: старый перевод в какой-то момент также может оказаться подтвержденным, из-за чего средства с кошелька спишутся дважды. Избежать этой ситуации можно, указав в списке входов для новой транзакции хотя бы один вход, который использовался в предыдущей транзакции.
Заключение: как защититься от неподтвержденных транзакций
Практика показывает, что ушедшая в блокчейн неподтвержденная транзакция — не такое уж и страшное явление. В большинстве случаев ситуацию можно исправить с помощью одного из методов ускорения проверки. Однако, если скорость и надежность прохождения транзакции критически важны, следует устанавливать высокую комиссию. Только так можно обезопасить себя от рисков, связанных с зависанием переводов.