Количество транзакций в блокчейне биткоина сегодня гораздо выше, чем год назад. И чем выше активность, тем большую комиссию приходится платить майнерам, чтобы они обратили внимание на вашу транзакцию и включили её в следующий блок цепочки. Нередко бывает, что транзакция в блокчейне биткоина зависает — не завершается в течение нескольких часов или дней. Cryptonomist разобрался, что делать в такой ситуации.
Как предупредить зависание транзакции
Изначально многие биткоин-кошельки добавляли каждой исходящей транзакции комиссию по умолчанию — обычно это 10 тыс. сатоши, или 0,0001 биткоина. Майнеры начинали добавлять в новые блоки транзакции с наивысшей комиссией, но и на транзакции с низкой комиссией также хватало места.
Со временем фиксированная комиссия фактически перестала гарантировать, что транзакция будет включена в блок. Поэтому чтобы транзакция быстрее прошла, комиссию нужно повысить. Многие кошельки по-прежнему автоматически устанавливают размер комиссии. Изменить её можно либо в настройках, либо непосредственно в момент отправки транзакции.
По данным Bitinfocharts, средняя комиссия за транзакцию составляет 2,436 доллара:
Если хотите, чтобы транзакция прошла быстрее, устанавливайте более высокий размер комиссии. Если время проведения транзакции для вас не принципиально, можно ограничиться комиссией меньшего размера.
Динамические и приоритетные комиссии
Во многих биткоин-кошельках используются динамические комиссии. Кошелек самостоятельно получает данные из блокчейна биткоина и подбирает размер комиссии, чтобы транзакцию практически наверняка включили в следующий или хотя бы один из первых блоков.
Кроме того, во многих кошельках есть возможность использовать приоритетные комиссии. Они также рассчитываются динамически и позволяют с более высокой долей вероятности включить вашу транзакцию в следующий блок.
Эксперты отмечают, что если кошелек не поддерживает динамические комиссии, то он, скорее всего, устарел. Стоит обратить внимание на другие приложения или обновить кошелек до последней версии.
Чтобы сменить кошелек, необходимо будет выполнить отдельную транзакцию. Она также предполагает комиссию. Другой вариант — экспорт/импорт закрытых ключей или их инициаторов. Это быстрее, но такая функция есть не во всех старых кошельках.
Как увеличить размер комиссии
Биткоин-транзакция может «перепрыгнуть очередь», если увеличить размер комиссии. Это позволяет функция Opt-InReplace-by-Fee (Opt-InRBF). Она отправляет ту же самую транзакцию, но с повышенной комиссией.
Если просто повторно отправить ту же транзакцию с повышенной комиссией, биткоин-сеть её отвергнет. Блокчейн считает подобные транзакции двойной тратой, поэтому не принимает её.
Однако Opt-InRBF позволяет обойти это ограничение. Функция сообщает сети о возможности отправить транзакцию позднее, но с более высокой комиссией. Большинство узлов блокчейна такие транзакции принимают, и они «перепрыгивают очередь».
Кошельки Electrum и GreenAddress имеют полноценную поддержку Opt-InRBF. В Bitcoin Core она поддерживается при обработке транзакций, но создавать RBF-транзакции можно только с помощью сторонних скриптов. В других кошельках обновление Opt-InRBF в настройках меню может потребоваться до отправления первой транзакции (с более низкой комиссией).
Функция ChildPaysforParent (CPFP)
Возможность CPFP — Child Pays for Parent, то есть ребенок платит за родителя. Используя эту опцию, майнеры не всегда выбирают транзакции с самыми высокими комиссиями. Напротив, они принимают комплект транзакций с комбинированными комиссиями.
Если сильно обобщить, то значительная часть исходящих биткоин-транзакций не только отправляет биткоины получателю, но также возвращает «сдачу». Её можно потратить на следующую транзакцию.
Некоторые кошельки позволяют потратить сдачу до подтверждения транзакции. Фактически вы отправляете себе сдачу в новой транзакции.
Таким образом, при CPFP нужно в первую транзакцию включить большую комиссию (с запасом). Этот запас либо вернётся, либо будет использован для следующей транзакции. А майнер заберёт обе транзакции в новый блок и подтвердит их одновременно.
Сервисы-ускорители
Чтобы ускорить проведение зависшей транзакции, можно воспользоваться сервисом https://pushtx.btc.com/. Он запрашивает хеш транзакции и рассчитывает оптимальную комиссию. Сервис сотрудничает с крупными майнинг-пулами и позволяет доплатить за ускорение. Рекомендуемый размер комиссии можно посмотреть на отдельной странице.
Может ли что-то сделать получатель
Если кошелек получателя позволяет тратить неподтверждённые транзакции, он также может воспользоваться CPFP. Получатель должен попробовать повторно потратить неподтвержденные входящие биткоины самостоятельно, включив комиссию, достаточно высокую для компенсации изначально низкой транзакции. Если комиссия окажется достаточной, то первая (отправленная и неподтверждённая) транзакция будет подтверждена в ближайших блоках.
Кроме того, получатель может напомнить отправителю про Opt-InRBF. Если, конечно, кошелек отправителя поддерживает эту функцию.
Выводы
Всегда можно просто сидеть, ждать и надеяться, что зависшая транзакция рано или поздно пройдёт. Но чаще всего стоит взять управление ситуацией в свои руки и воспользоваться Opt-InRBF или CPFP. Но лучше изначально рассчитывать адекватный размер комиссии, чтобы избежать зависания транзакций.