Биткоин транзакции. Ответы на популярные вопросы

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

Почему биткоин транзакция не подтверждается?

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

Неподтвержденная транзакция - лишь намерение передать монеты, а не его реализация.

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

Как проверить блокчейн транзакцию

Для того что бы отследить блокчейн транзакцию нужно убедиться, что ваша транзакция действительно ожидает подтверждения. Для этого копируем id вашей транзакции, вставляем в строку поиска blockchair.com (или blockchain.com, или bitaps.com). Далее ищем глазами строку "нет подтверждений" ("unconfirmed"). Нашли? Значит, транзакция ждет подтверждения.

Сервис поиска транзакций

Я поставил рекомендуемую комиссию, транзакция зависла

Есть только рекомендуемая кем-то комиссия. Этот кто-то может ошибиться. Ошибочные рекомендации иногда выдаёт большинство кошельков (в том числе bitcoin core).

Куда попадет криптовалюта с зависших транзакций

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

Как узнать, время обработки транзакции?

После того как ввели данные своей транзакции в сервис blockchair.com, такую строку "Priority: 14498/22321" ("В очереди: 14498/22321"). Первое число - ваше текущее место в очереди, второе - общая длина очереди. В блоке (раз в 10 минут в среднем) обычно 2-3 тысячи транзакций. Можно примерно оценить время в очереди.

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

Биткоин транзакция не подтверждается что делать и как ускорить

Бывают ситуации когда при отправке биткоинов и других криптовалют транзакция зависает. Для того что бы ее ускорить есть несколько вариантов:

  • Использовать replace-by-fee. Это может сделать только отправитель и если в кошельке стояла галочка до отправки; не все кошельки поддерживают; недорого, несложно.
  • Использовать CPFP (child pays for parent). Это может сделать получатель и обычно отправитель, немного дороже, не очень сложно.
  • сделать даблспенд (двойную трату). Может сделать только отправитель, нужен доступ к приватным ключам или hd seed (12/24 слова), недорого, относительно сложно.
  • использовать бесплатный "ускоритель транзакций" от viabtc. Может сделать кто угодно, бесплатно, несложно, но сервис часто перегружен и есть ограничения на транзакцию (комиссия дожна быть не менее 10 сат/байт). Этот сервис приносит прямые убытки своим создателям и может в любой момент прекратить работу. Ещё есть аналогичный "ускоритель транзакций" от antpool (необходим аккаунт на antpool.com). Иногда не работает.
  • использовать один из платных ускорителей транзакций от пулов viabtcbtc.com. Может использовать кто угодно, но относительно дорого.
  • использовать один из бесплатных/платных ускорителей в телеграмме. Те из них, что работают - переиспользуют ускорители от пулов. Ещё попадаются фальшивые ускорители типа такого: bitaccelerate.com. Они вообще ничего не ускоряют, а только рассылают вашу транзакцию. Как правило, это не имеет смысла.

Как использовать replace-by-fee?

Просто нажать кнопку в кошельке. Для Bitcoin core: открываем вкладку с транзакциями, правой кнопкой по проблемной транзакции, затем "Increase transaction fee".

Как использовать CPFP? Как быть, если я получатель транзакции?

Такой способ есть и он подходит для получателей; для отправителя он также подойдёт, если у вашей транзакции была "сдача" (обычно она есть). Этот способ немного дороже. Можно попробовать задействовать механизм CPFP (child pays for parent). Для этого вы должны потратить один из выходов проблемной транзакции с комиссией, которой хватит на обе транзакции сразу - новую и старую.

Будьте внимательны. Если одна из транзакций - "предков" вашей тоже ещё не подтверждена, то комиссию надо будет рассчитывать на три (или более) транзакции.

То есть просто создаёте транзакцию с одним входом (это должен быть один из выходов проблемной, например - сдача) и пересылаете биткоины себе же. Комиссию ставите такую, чтобы её хватило на обе сразу: для этого суммируете их размеры, умножаете на число из пункта "Как выбрать адекватную комиссию?", делите на размер новой в килобайтах и вписываете в графу "custom transaction fee" при отправке транзакции. Пример для кошелька Bitcoin Core:

  • Пусть вы получатель и должны получить 0.08500148 btc.
  • Для того, чтобы воспользоваться CPFP, в Bitcoin Core нажимаем "Настройки" -> "Параметры" -> "Бумажник" ("Settings" -> "Options" -> "Wallet"); ставим галочки у "включить управление входами" ("Enable coin control features") и "тратить неподтвержденную сдачу" ("Spend unconfirmed change"), если они не стоят (потом можно будет их убрать).
  • Теперь закрываем окно настроек и нажимаем "Отправить" ("Send"), там нажимаем кнопку "Входы..." ("Inputs...") и ставим галочку у суммы 0.08500148; потом "Ок", получателем ставите свой адрес; количество ставите 0.08500148 и галочку "вычесть комиссию из суммы" ("subtract fee from amount"); комиссию ставите "выборочно" ("custom"), "за килобайт" ("per kilobyte") и пишете с рассчетом на 2 транзакции по формуле ((размер старой транзакции)/(размер новой транзакции) + 1)*(адекватная комиссия за килобайт и лучше побольше). Отправляете.
  • Всё. Теперь ждёте.

Как сделать даблспенд (двойную трату)?

Для кошелька Bitcoin Core действуем по следующему алгоритму:

  • Закрываем кошелек, запускаем его с параметром -zapwallettxes и ждем пока он откроется. Когда кошелек запустится, все неподтвержденные транзакции из него исчезнут (но они ещё есть в сети!). Для bitcoin core 0.14 и выше потребуется перед запуском ещё удалить (переименовать или перенести) файл mempool.dat.
    Почему не с параметром -salvagewallet? -zapwallettxes не затронет имена ваших адресов а -salvagewallet удалит их. Кроме того, bitcoin core может упасть при запуске с -salvagewallet и тогда ваш wallet.dat будет поврежден. Правда, рядом с ним заранее будет создана копия.
  • Теперь можно создавать новую транзакцию, не забыв поставить адекватную комиссию. Но! Поскольку ваша старая транзакция ещё осталась в сети, она может когда-нибудь неожиданно подтвердиться. Если вас это не устраивает, то у новой транзакции хотя бы один из входов должен будет совпадать с одним из входов старой. Для этого смотрим на странице вашей транзакции на сайте blockchair.com или аналогичном графу "inputs" (входы), запонинаем точный размер входа в биткоинах. После этого при создании транзакции в кошельке нажимаем на кнопку "inputs...", находим в списке такое же точно число в биткоинах и выбираем его (если их несколько, то выбирайте с тем же адресом получения и временем). После этого выбираем ещё какие-нибудь входы, чтобы общая сумма была больше суммы транзакции с будущей комиссией; лучше выбирать с запасом. Далее заполняем все поля как обычно, (не забываем про комиссию!) и отправляем.
    Иногда пишут, что всё это можно не делать, а просто подождать 2-3 суток, чтобы старая транзакция сама "канула в лету". О том, что иногда это может привести к проблемам, можно прочитать тут (англ).

Как отменить биткоин транзакцию?

Если транзакция подтвердилась (включена в блок), отмениться или быть отменена она не может. Чтобы отменить неподтвержденную транзакцию, необходимо создать конкурирующую с ней транзакцию и добиться её включения в блок - смотрите ответ на вопрос "Как сделать даблспенд (двойную трату)?". В любом случае, гарантировать отмену тут нельзя.

Сама неподтвержденная транзакция отмениться не может - может лишь поменяться отображение в вашем кошельке. Далее смотрите ответ на следующий вопрос.

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

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

Как избежать зависания транзакций?

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

Какая комиссия за транзакцию будет оптимальной?

Для того что бы не ошибиться в выборе комиссии для биткоин транзакции существуют специальные сервисы. Рекомендую btc.comjochen-hoenicke.de  и bitcoinfees.earn.com. Если понять, что изображено на диаграмме, тяжело, просто открываем первую ссылку и рекомендацию сверху страницы вписываете в графу "custom transaction fee" при отправке транзакции.

Обратите внимание, что величина комиссии зависит от размера транзакции в байтах (а ещё точнее - от её веса), а не от количества пересылаемых биткоинов.

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

У меня получается очень большая комиссия, как сэкономить?

Во-первыхесли вам надо сделать несколько переводов - объедините их: создайте одну транзакцию с несколькими выходами. Размер в байтах такой транзакции будет меньше, чем нескольких обычных транзакций; а значит - меньше общая комиссия при неизменной плате за байт. В типичном случае экономия для двух переводов будет в 1.7 раза; для десяти - в 4 раза.

Во-вторыхне полагайтесь на комиссию, которую рекомендует вам кошелек: она может быть как занижена, так и завышена. Самостоятельно оцените её через один из сервисов, показывающих состояние мемпула (см ответ на вопрос "Как выбрать адекватную комиссию? Где посмотреть состояние мемпула?"). Обычно экономия от 10% до 30% (1.5 раза), хотя иногда может быть и до 10 раз.

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

Ну и последнее: можно вручную подбирать входы и величину транзакции так, чтобы не было сдачи; экономия до 15%. Или можно заранее консолидировать входы по сниженной ставке за байт - когда комиссии ниже или возможность подождать.

Можно ли тратить неподтвержденные монеты?

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

Как вычислить размер обычной (не-сегвит) транзакции?

Примерная формула для обычных (не-сегвит, сжатые (compressed) ключи) транзакций и для большинства современных кошельков (bitcoin core, electrum, ledger ...) 10+148*(число входов)+34*(число выходов). Реальное значение может отличаться на несколько байт в меньшую сторону в зависимости от конкретных ключей. Примерная формула для обычных транзакций с несжатыми (uncompressed) ключами (в основном использовались раньше, кошелек Armory):  10+180*(число входов)+34*(число выходов).

Как вычислить размер SegWit-транзакции?

Начнём с того, что у сегвит-транзакции несколько размеров. Чтобы всех запутать и искусственно сделать сегвит-транзакции дешевле, для них было изменено понятие размера. Для рассчета комиссии нам нужно считать не реальный размер сегвит-транзакции на диске, а оплачиваемый (vsize, он же weight/4).

Формула для сегвит-адресов на "3" (если все входы и выходы - P2SH-P2WPKH): 11+91*(число входов)+32*(число выходов).

Формула для сегвит-адресов на "bc1" (если все входы и выходы - P2WPKH): 11+68*(число входов)+31*(число выходов).

Как считать для сегвит-транзакции, в которой есть входы и/или выходы разных типов:
11+68*(число входов типа P2WPKH)+91*(число входов типа P2SH-P2WPKH)+148*(число legacy входов)+31*(число выходов P2WPKH)+32*(число выходов P2SH-P2WPKH)+34*(число legacy входов).

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