Почему зависают транзакции в сети Биткоин и что делать если ваша транзакция зависла 23.11.2017

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

Как обрабатываются транзакции в сети Биткоин

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

Как обрабатываются транзакции в сети Биткоин

После этого транзакция попадает в блок с другими транзакциями и становиться в очередь на обработку майнерами.

Как обрабатываются транзакции в сети Биткоин

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

Как обрабатываются транзакции в сети Биткоин

Как обрабатываются транзакции в сети Биткоин

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

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

Майнеры выбирают блоки из очереди, выбирая сначала блоки, в которых установлена максимальная комиссия за обработку, так называемый Transaction Fee. Те блоки, у которых комиссия ниже, остаются ждать в очереди, пока обработаются блоки с более высокой комиссией.

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

Как обрабатываются транзакции в сети Биткоин

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

Как обрабатываются транзакции в сети Биткоин

Оптимальным считается количество подтверждений равное 6 при котором проведенная вами транзакция уже «плотно» фиксируется в блокчейне.

В конечном итоге вы, как один из узлов сети ожидаете сначала обработку вашей транзакции майнером, а после этого ожидаете что соседние с вами узлы включат обработанный блок с вашей транзакцией в свой основной блокчейн. Именно это время – время обработки майнером + время включения вашего блока в блокчейн вы и ожидаете при отправке денег. И именно из-за этого возникают «зависания» транзакций Биткоин. Причем даже блоки с максимальной комиссией за обработку могут зависать из-за того что даже в верхнем «эшелоне» самых дорогих транзакций возникают очереди.

Как обрабатываются транзакции в сети Биткоин

Скорость обработки транзакции майнером и скорость подтверждения транзакций

Скорость обработки транзакции майнером

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

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

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

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

Скорость подтверждения транзакций

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

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

Очередь транзакций в сети Биткоин

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

Очередь транзакций в сети Биткоин

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

Могут ли биткоины пропасть навсегда?

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

Большинство узлов сети отслеживают неподтвержденные транзакции только несколько дней, а затем удаляют их из пула памяти. На данный момент для Bitcoin Core время до удаления неподтвержденной транзакции составляет 14 дней.

Проявите терпение. Не поднимайте сразу панику.

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

Что делать если транзакция биткоин зависла?

Ниже расположен список возможных действий в порядке убывания.

  • Проявить терпение и подождать. Часто зависание транзакций связано с загруженностью сети и майнеров, а не с ошибками в вашей транзакции. Если же нет объективных причин увеличения загруженности сети – резкая смена курса, появление новых криптовалют ит.д. то возможно причина в низкой комиссии за обработку. Ищем на странице вашей транзакции на сервисе blockchain.info (а также bitaps.com, blocktrail.com/BTC или аналогичного) строку "Плата за байт" ("Fee per byte") и запоминаем число, которое там стоит. Затем, пользуясь этим или этим сервисом, оцениваем свое место в очереди и делаем выводы.
  • Использовать «ускорители» транзакций. Можно воспользоваться сервисами ускорителями от крупных майнинговых пулов, например вот некоторые из ускорителей: pool.viabtc.com/tools/txaccelerator , antpool.com, github.com/achow101/FeeBooster,. Можно воспользоваться услугами третьих лиц, например на форуме forum.bits.media и bitcointalk.org есть люди, которые занимаются ускорением транзакций. Некоторые делают это бесплатно, некоторые платно. Вот, например одна из тем по ускорению
  • Сделать Double-Spend или двойную трату для того, чтобы обогнать предыдущую вашу транзакцию. Хоть звучит это страшно, но на самом деле деньги, отправленные в зависшей транзакции вернуться вам на счет. Если же зависшая транзакция после отправки второй все же успеет подтвердиться, то тогда уже вторая транзакция вернется вам на счет. Для выполнения двойной траты поищите в интернете, как его выполнить именно для вашего кошелька - Bitcoin Core, Electrum и т.д. Вот ссылка на одну из пошаговых инструкций по двойной трате
  • Использовать функцию replace-by-fee. С помощью этого метода можно повторно отправить ту же самую транзакцию, но с более высокой комиссией. Но для этого ваш кошелек должен поддерживать функцию replace-by-fee. Если эта функция не поддерживается, то при повторной отправке той же транзакции это уже будет двойная трата и механизм работы двойной траты отличается. Когда ваша транзакция помечается как replaceable то вы, по сути, сообщаете сети о возможности повторной отправки этой транзакции позднее, но с более высокой комиссией. В результате большинство узлов Биткоина принимают новую транзакцию вместо старой; таким образом, новая транзакция перепрыгивает очередь. В настоящее время, функцию Opt-InRBF поддерживают как минимум два кошелька: Electrum и GreenAddress. В Bitcoin Core она поддерживается при обработке транзакций, однако создавать собственные RBF транзакции возможно только с помощью сторонних скриптов
  • Child Pays for Parent – дочерняя транзакция платит за родительскую. Для этого метода ваш кошелек должен поддерживать CPFP. Основная идея метода – отправленная транзакция имеет «сдачу» еще до подтверждения и вы можете отправить эту сдачу самому себе, создав новую транзакцию, но указав в новой транзакции высокую комиссию. Майнер заберет весь комплект транзакций, зависшую и новую и новая транзакция своей комиссией сможет компенсировать зависшую, протолкнув ее в очереди.

Рекомендуемая комиссия (Transaction Fee) для перевода Биткоина

Для того, чтобы обезопасить себя от зависания транзакций желательно выполнять 2 вещи:

  1. Выставлять адекватную комиссию
  2. Включить в кошельке механизм replace-by-fee и помечать все транзакции как replaceable, если ваш кошелёк его поддерживает. (electrum поддерживает, bitcoin core не поддерживает). Это позволит при возникновении проблемы очень легко повысить комиссию

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

Для ручной оценки комиссии открываем этот сервис и видим, что сервис уже автоматически рассчитывает оптимальную комиссию для транзакции. 0.00143 BTC за килобайт или 143 сатоши за байт.

Рекомендуемая комиссия (Transaction Fee) для перевода Биткоина

Видим, что комиссия составляет 143 сатоши за байт или 0.00143 BTC за килобайт. Соответственно если ваш кошелек рассчитывает комиссию в сатоши за байт, вписываем первое число, если BTC за килобайт, то второе. Суммарная комиссия будет равна размеру транзакции, умноженного на комиссию.

Если например ваша транзакция имеет размер 373 байта, то суммарная комиссия должна получиться 373*143=53339 сатошей в первом случае или (373/1000)*0,00143 = 0.00053339 BTC за килобайт (необходимо было поделить 373 на 1000 чтобы перевести байты в килобайты. Если размер транзакции уже в килобайтах, то не нужно делить на 1000).

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

Рекомендуемая комиссия (Transaction Fee) для перевода Биткоина

Проводим все вычисления, как и в предыдущем примере и получаем рекомендуемую комиссию.

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

Курс биткоина к доллару/рублю

Текущие курсы валют

BTC -
BCH -
LTC -
ETH -
ETC -
ZEC -
XRP -
DASH -