С каждым годом, если не месяцем, количество транзакций в сети Биткоина растёт. Это ведёт к переполнению блоков. А поскольку немедленно включить все транзакции в блокчейн невозможно, из не вошедших в блок транзакций у майнеров формируется «пул памяти» (mempool) - своего рода «очередь из транзакций».

Обычно майнеры выбирают транзакции с самыми высокими комиссиями и включают их в блоки первыми. Транзакции с более низкими комиссионными «перебиваются» высокими и остаются в пулах памяти майнеров до обнаружения нового блока. Если же после нахождения блока ожидающую подтверждения транзакцию снова перебивает транзакция с более высокой комиссией, приходится ждать следующего блока, и так далее.

Вся эта ситуация неблагоприятно сказывается на взаимодействии с пользователем. На подтверждение транзакций с низкими комиссиями может потребоваться несколько часов и даже дней, а иногда подтверждение и вовсе не происходит.

Что же можно сделать, чтобы транзакция не зависла?

При отправке транзакции

В первые годы существования Биткоина большинство кошельков добавляли исходящим транзакциям фиксированную комиссию: обычно она составляла 0.1 мBTC (10 000 сатоши). Поскольку в блоках майнеров в любом случае присутствовало свободное пространство, они обычно включали эти транзакции в первый добытый блок (большинство транзакций с низкими комиссионными или совсем без них также включались в блок).

По мере увеличения борьбы за пространство блока, фиксированной платы в 0.1 мBTC для гарантированного включения транзакции в первый блок стало не хватать. Её перебивали транзакции с более высокими комиссиями. И, несмотря на то, что в конечном итоге подтверждение получали и транзакции с низкими комиссионными, на это требовалось время. 

Попробовать повысить комиссию

Если вы хотите, чтобы транзакция подтвердилась быстрее, очевидным решением будет повышение комиссии.

Если ваш кошелёк (по умолчанию) использует недостаточную комиссию, можно попробовать настроить её размер вручную – либо в настройках кошелька, либо при отправке транзакции (или и то, и другое).

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

Если вы хотите, чтобы платёж прошёл в ближайших блоках, необходимо заплатить более высокую комиссию. Для менее срочных платежей можно включать более низкие комиссии, однако на их подтверждение потребуется немного больше времени.

Использовать динамические комиссии

Большинство кошельков сейчас работают с динамическими комиссиями. В зависимости от данных, получаемых из сети Биткоина, такие кошельки автоматически добавляют комиссию, необходимую для включения транзакции в следующий блок, или хотя бы в один из первых блоков.

Некоторые кошельки также позволяют выбирать приоритетные комиссии. И вновь, более высокие комиссии способствуют быстрому подтверждению транзакций, а низкие требуют времени.

Если транзакции из вашего кошелька часто задерживаются в часы пик, и у вас нет возможности перейти на более высокие приоритетные комиссии, ваш кошелёк, скорее всего, устарел. Проверьте его на возможность обновления или перейдите на новый кошелёк.

Не бойтесь менять кошельки

В случае перехода на новый кошелёк вам необходимо будет перевести средства со старого кошелька. Если вы не торопитесь и не против оплатить за это комиссию, можно просто отправить средства со старого кошелька на новый через сеть Биткоин. 

Если же вы спешите, некоторые кошельки позволяют экспортировать закрытые ключи или их инициаторы, а затем импортировать их в новый кошелёк. Для этого не требуется транзакция в сети Биткоина. Вы можете немедленно начать отправлять транзакции из нового кошелька.

После отправления транзакции

Если вы уже отправили транзакцию, и она зависла, в некоторых случаях можно попробовать «перепрыгнуть очередь».

Функция Opt-In Replace-by-fee

Самый простой способ заставить вашу транзакцию перепрыгнуть очередь – использование опции под названием Opt-InReplace-by-Fee (Opt-InRBF). С её помощью можно повторно отправить ту же самую транзакцию, но с более высокой комиссией.

Без этой функции, когда транзакция в сети отправляется повторно с повышенной комиссией, сеть отвергает новую транзакцию. Узлы Биткоина обычно относят новую транзакцию к двойной трате и поэтому не принимают или задерживают её.

Однако, отправляя транзакцию при помощи Opt-InRBF, вы, по сути, сообщаете сети о возможности повторной отправки этой транзакции позднее, но с более высокой комиссией. В результате большинство узлов Биткоина принимают новую транзакцию вместо старой; таким образом, новая транзакция перепрыгивает очередь.

Включится ли ваша транзакция именно в следующий блок, зависит от того, какой майнер добудет новый блок: не все майнеры используют Opt-InRBF. Так или иначе, данную опцию поддерживает достаточное количество майнеров, чтобы ваша транзакция была включена в следующие несколько блоков.

В настоящее время, функцию Opt-InRBF поддерживают как минимум два кошелька: Electrum и GreenAddress. В Bitcoin Core она поддерживается при обработке транзакций, однако создавать собственные RBF транзакции возможно только с помощью сторонних скриптов. В зависимости от кошелька, может потребоваться обновление Opt-InRBF в настройках меню до отправления (первой) транзакции. 

Child Pays for Parent (ребенок платит за родителя)

Если ваш кошелёк не поддерживает Opt-InRBF, всё немного усложняется.

Здесь на помощь может прийти функция ChildPaysforParent (CPFP). Применяя CPFP, майнеры не обязательно выбирают транзакции с самыми высокими комиссиями, а, наоборот, выбирают комплект транзакций с комбинированными комиссиями.

Если не вдаваться в технические детали, большинство исходящих транзакций не только отправляют биткоины получателю, но также возвращают «сдачу». Эту сдачу можно потратить на следующую транзакцию.

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

Если ваш кошелёк не позволяет выбрать, какие именно входы потратить, то есть вы не можете потратить именно неподтверждённую сдачу, можно попытаться потратить все средства в кошельке – в них должна войти и сдача.

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

Другие варианты

Если отсутствует возможность применить Opt-InRBF или CPFP, технически можно попробовать отправить оригинальную транзакцию с более высокой комиссией. Обычно это называют «full replace-by-fee», и некоторые майнеры такую возможность допускают. Хотя публичные кошельки пока эту опцию не поддерживают.

Другой вариант - просто подождать подтверждения транзакции или повторного появления биткоинов в вашем кошельке. Не забывайте, что технически до подтверждения транзакции биткоины всё ещё находятся в вашем кошельке – просто в действительности так не происходит. На самом деле биткоины не «зависают» в сети и потеряться не могут. 

Со стороны получателя

Конечно, зависшая транзакция представляет проблему и в том случае, если вы её получатель.

Если ваш кошелёк позволяет тратить неподтверждённые транзакции, это тоже можно решить при помощи CPFP. Аналогично описанному ранее, вы можете повторно потратить неподтвержденные входящие биткоины самостоятельно, включив комиссию, достаточно высокую для компенсации изначально низкой транзакции. Если новой комиссии будет достаточно, она будет подтверждена в ближайших блоках.

Единственный дополнительный вариант – спросить отправителя, использовал ли он Opt-InRBF. В таком случае он сможет повторно отправить транзакцию с более высокой комиссией.