- Неподтвержденная транзакция, или Возвращаем криптовалюту из небытия
- Что делать с неподтвержденной транзакцией биткоин
- Что такое неподтвержденная транзакция биткоина
- Почему не подтверждается транзакция
- Сколько ждать подтверждения транзакции биткоин
- Как ускорить транзакцию
- Двойная трата — «Double Spend»
- Child Pays for Parent
- Использование ускорителей
- Segregated Witness
- Как отменить неподтвержденную транзакцию биткоина
- Количество неподтвержденных транзакций
- Заключение
Неподтвержденная транзакция, или Возвращаем криптовалюту из небытия
Волею судеб довелось мне иметь дело с криптовалютами. Не то что бы плотно работаю с ними, но иногда то отправлю монетки, то получу. Скажем так, понемногу прощупываю новую сферу изнутри.
И вот однажды беда приключилась. Отослал я криптомонетки, а до получателя они не дошли. Собственно, пост о том, как средства возвращались. Ну и размышления и советы по сложившейся ситуации на десерт. Сразу отмечу, что нижесказанное применимо не к какой-то конкретной валюте, а к большинству форков (если не ко всем).
Начну с того, что пост местами пронизан догадками относительно происходящего. Где-то я могу ошибаться. Объективные поправки и дополнения только приветствуются.
Немного о терминологии.
- Кошельком буду называть файл wallet.dat.
- Публичный ключ (адрес, на который перечисляются средства, например) временами тоже удобнее назвать кошельком, но, во избежание путаницы, пусть он будет просто номером счета.
- Комиссия — Transaction Fee. Называть эту штуку комиссией, я считаю, не совсем правильно, но это наиболее привычный и не режущий слух вариант, потому пусть будет комиссией.
- Размер транзакции — размер блока данных, в котором содержится вся информация о транзакции.
Ко всей этой криптовалютной кухне я изначально подошел как типичный юзер — не особо вникая в систему. Установил, запустил, работает — и ладно. Иногда при попытке послать куда-то средства клиент выдавал сообщение вроде «Размер транзакции слишком велик, нельзя просто взять и послать ее. Но вы можете добавить комиссию в размере N, и тогда все будет хорошо» — я соглашался с добавлением комиссии, и все действительно было хорошо.
Казалось бы, если меня просят дополнительно заплатить, когда это нужно, значит я и буду платить, когда попросят (если комиссия будет устраивать). Это и было главной ошибкой.
Делаю очередной перевод на сумму значительно крупнее, чем обычно. Средства со счета уходят, предложения заплатить комиссию не было и… Ничего. До получателя средства не доходят, статус транзакции «0/Не подтверждено». И такую картину я наблюдал больше недели, попутно перегугливая и перечитывая интернеты в поисках информации по решению подобной проблемы. Причем искал и для конкретной криптовалюты, и в целом для всех — проблем куча, решения нет.
А, собственно, что же это за комиссия? Идея в том, что транзакции могут проходить без комиссии, но только в случае соблюдения некоторых условий:
- Размер транзакции должен быть не больше определенной величины.
- Переводимая сумма должна быть больше некоего порога.
- Транзакция должна обладать достаточным приоритетом.
Если первые два пункта более-менее понятны (конкретные величины приводить не стал, полагаю, они могут варьироваться от форка к форку), то в третьем вся загвоздка. Грубо говоря, транзакции при создании попадают в очередь, отсортированные по приоритету. При генерации очередного блока в него включаются транзакции с комиссией (которая идет в награду тому, кто нашел блок), а также транзакции без комиссии с наиболее высоким приоритетом.
Сам приоритет прямо зависит от объема переводимых средств и от числа их подтверждений (чем дольше именно эти деньги лежали у вас на счету, тем больше должен быть приоритет, по сути) и обратно зависит от размера транзакции. Таким образом, при неудачном стечении обстоятельств транзакция без комиссии может оказаться в зависшем неподтвержденном состоянии, с которым я и столкнулся.
Поиски решения показали, что это сравнительно частая для криптовалют проблема. К сожалению, все советы сводились к нижеперечисленному и часто не помогали:
- Подождите сутки-двое, вашу транзакцию включат в очередной блок.
- Подождите сутки-двое, программе-клиенту надоест ждать, и она сама отменит транзакцию.
- Загрузите заново всю цепочку блоков.
- Запустите клиент с каким-нибудь волшебным ключом (-rescan / -reindex / -salvagewallet).
Ждал я больше недели. Ни в какой блок транзакцию не включили. Даже после повторных отправок через sendrawtransaction. Блокчейн говорил, что о той транзакции ничего не знает, и на счету лежат те самые средства, никуда они не ушли. И только клиент стоял на своем: «Я транзакцию отправил, дальше как хочешь. Уже потраченными деньгами распоряжаться не позволю».
Итак, в чем же суть проблемы? Транзакция не попала в блок и уже не попадет. В кошельке хранится информация о том, что транзакция в общем-то была, поэтому средства, которые должны были с ней отправиться, недоступны для использования. Возможно, спустя еще какое-то время транзакция будет отменена, на этот счет у меня несколько предположений:
- Зависит от валюты, где-то быстро отменяется, где-то нужно ждать долго.
- Баг конкретного клиента.
- Информация об отмене неверна.
В любом случае, неделя — это достаточно большой срок. Если за это время не прошло само, то есть основания полагать, что и не пройдет.
Как нормальный человек, после того, как все уже сломалось, я наконец-то пошел читать мануалы. Попытка повторить транзакцию с включением в нее комиссии потерпела фиаско. Зато бесконечные прыжки по ссылкам между форумами (в выдаче гугла ничего стоящего не нашлось) довели меня до некоего поста, где и нашлась дельная подсказка. К сожалению, теперь найти этот пост не удается, даже не знаю, что был за форум. Полагаю, некий околобиткойновый.
Решение буду описывать на примере клиента, наиболее распространенного для форков, известного как Satoshi Client. Насколько понимаю, оно применимо и к прочим клиентам, но, возможно, со своими нюансами.
Несмотря на простоту и очевидность решения, к нему мало кто приходит, судя по многостраничным веткам форумов. Средства на счете блокируются кошельком, и все, что требуется, это получить доступ к счету вне текущего кошелька.
Итак, если транзакция зависла и не имеет подтверждений:
- Проявите терпение. Не поднимайте сразу панику. Подождите пару дней, вдруг и правда само пройдет.
- Убедитесь, что транзакция зависла. Зайдите в Block Explorer (обычно гуглится по запросу «blockchain %названиекриптовалюты%») и проверьте, что про зависшую транзакцию там ничего не знают, а на счете деньги на самом деле есть.
- Перейдите в отладочную консоль (Помощь — Окно отладки — Консоль)
- Если кошелек зашифрован (он же зашифрован?), то для начала необходимо получить доступ, используя команду walletpassphrase
. Импорт может производиться достаточно долго. Позвольте ему завершиться — дождитесь получения ответа на команду.
Таким нехитрым образом удалось вернуть криптомонетки. Хотя я уже и начал думать, что они потеряны совсем. В общем, не надейтесь на чудо, перед использованием нового клиента убедитесь, что комиссия всегда включена. Рекомендуемый размер комиссии, думаю, лучше искать на ресурсах, посвященных используемой криптовалюте.
Upd: Необходимость описанной операции зависит от используемого клиента (а так как у многих криптовалют по одному клиенту, то и от используемые валюты). Похоже, в некоторых случаях информация о транзакции записывается не в файл кошелька, а только в локальную цепочку блоков. При таком раскладе может помочь удаление имеющейся цепочки или запуск клиента с ключами.
Upd2: Значительно упростить описанный процесс переноса счетов в новый кошелек может ключ -salwagewallet, уже упомянутый ранее. При запуске клиента с этим ключом создается новый wallet.dat, в который импортируются все счета из старого, а история транзакций к нему берется из цепочки блоков (за описание спасибо grich). К сожалению, запуск с данным ключом реализован не во всех клиентах.
Upd3: Если после импорта перечислить не всю сумму, имеющуюся на счету, то часть средств (сдача от используемых выходов) будет перечислена на другой счет нового кошелька. Учитывайте это, если планируете вернуться к старому кошельку:
- Импортировав счет в новый кошелек, переведите все средства с него на другой свой счет, вернитесь к старому кошельку и после этого уже распоряжайтесь возвращенными средствами.
- После совершения транзакции с нового кошелька определите, на какой счет упала сдача, и импортируйте этот счет в старый кошелек.
Источник
Что делать с неподтвержденной транзакцией биткоин
Количество человек, желающих заработать на криптовалюте, ежедневно растет. Соответственно, увеличивается и число транзакций с популярными цифровыми валютами, в первую очередь – биткоином. Это означает, что блоки, где хранятся монеты, заполняются быстрее. Из-за этого возникает проблема неподтвержденных транзакций, ведь размер блока по-прежнему остается 1 Мб.
Время перевода монет может затянуться на неопределенное количество часов, а иногда и дней, что вызывает большие неудобства. В этой статье мы детально поговорим о проблеме, разберемся в причинах ее возникновения и главное – выясним, как действовать в ситуации, когда зависла транзакция.
Записали видео-инструкцию для тех, у кого зависла биткоин-транзакция и он не знает, что делать. Показываем 3 рабочих способа, один из которых точно вам подойдет. Все зависит от биткоин-кошелька, которым вы пользуетесь. Работает только для неподтвержденных транзакций биткоина:
Что такое неподтвержденная транзакция биткоина
Чтобы разобраться с понятием неподтвержденной транзакции, познакомимся сначала с общим пониманием транзакции Биткоин.
Любая операция криптовалюты – это записи в цепочке блоков (блокчейн), которые содержат данные:
- об адресе отправителя – Input;
- об адресе получателя – Output;
- об отправляемой сумме – Amount.
Когда инициируется транзакция, указанные данные отправляются в сеть и ждут занесения в блок – подтверждения со стороны майнеров. Только после этого подтверждения, баланс отправителя уменьшается, а получателя увеличивается на соответствующую сумму.
Большинство новичков в криптовалютном мире ошибочно полагают, что единственная задача майнеров – добыча цифровой валюты. На самом деле, их основная задача – подтверждение транзакций. Делают они это путем добычи блоков в сети биткоин, которые весят 1 МБ. Как только этот объем забивается информацией о переводах, блок считается закрытым и подтвержденным.
Если какая-то сделка после запуска не получила место в очередном блоке сети блокчейн (не была добавлена майнерами), она считается неподтвержденной транзакцией Биткоин, попадает в очередь из транзакций. Это может вызывать большие задержки в проведении операций с криптовалютой, что создает трудности для трейдеров, проводящих операции с данной монетой.
Почему не подтверждается транзакция
Время совершения операций с криптовалютой зависит от многих факторов:
- загруженность сети в момент осуществления перевода;
- объем сделки;
- приоритет платежа.
За проведение операций в сети блокчейн участники сделок платят комиссии. Когда биткоин еще не был так популярен, комиссионные отчисления устанавливались и начислялись автоматически, а операции в блоки попадали мгновенно. С ростом спроса на биткоин, выросла и конкуренция за место в блоке. Фиксированная плата перестала отвечать потребностям рынка криптовалюты, и трейдеры начали самостоятельно определять размер комиссии.
Разумеется, в первую очередь майнеры выбирают операции, в которых размер оплаты за транзакцию больше. Потому, чем больше размер комиссии устанавливает пользователь, тем выше шанс, что его транзакция будет подтверждена в ближайшее время. Другими словами, в блоки попадают те сделки, стороны которых готовы заплатить больше.
Операции с низким вознаграждением также имеют шанс быть обработанными, но пользователям придется подождать. Именно с такими сделками, как правило, и возникает проблема попадания в очередь транзакций.
Есть специальные сайты, которые помогают трейдерам отслеживать загруженность сети и предлагают вариант оптимального размера комиссии. Например, сайт btc.com . В разделе «unconfirmed transactions» можно посмотреть среднюю стоимость байта на текущий момент, и примерное время подтверждения операций при том или ином размере комиссии.
Сколько ждать подтверждения транзакции биткоин
В блокчейн блоки генерируются каждые 10 минут, но из-за большой конкуренции, в среднем перевод биткоинов занимает не менее 60-90 минут.
Если в сети появляются много активных пользователей с экспресс-транзакциями (повышенной комиссией), то те, кто желают сэкономить на комиссионных отчислениях, могут бороться за осуществление сделки неделями.
Операция, которая попала в очередь транзакций, может быть либо одобрена в течение 72 часов либо быть отменена. Тогда сумма перевода вернется на кошелек отправителя, и сделку придется осуществить заново.
Как ускорить транзакцию
Статус неподтвержденной сделки не означает, что она не состоялась или произошел какой-то сбой. Это только означает, что придется подождать какое-то время либо совершить операцию заново.
Существуют различные варианты ускорить или «протолкнуть» подтверждение транзакции.
Двойная трата — «Double Spend»
Основной и самый простой метод решения проблемы с очередью транзакций – двойная трата. Его суть заключается в том, что проведенная операция совершается повторно, но уже с адекватной комиссий, и перекрывает первичную.
Важно: Не стоит переживать, что обе операции пройдут, то есть двойная трата совершится буквально. По правилам криптовалютной системы при совершении подобных сделок совершается только та, которая имеет более выгодные условия для майнеров. Менее выгодные аналоги операций подлежат уничтожению.
Применение данного способа зависит от вида кошелька, используемого для хранения и операций с монетами. Для примера возьмем бумажник Bitcoin-Core.
- Убедитесь, что транзакция действительно не подтверждена. Для этого есть специальные сервисы, о которых вы узнаете далее.
- Из каталога, где хранятся установочные файлы Bitcoin Core, уберите файл «mempool.dat». Например, переместите его в другую папку.
- Закройте программу бумажника и запустите ее заново. Во время запуска в командной строке введите «zapwalletettxes».
- Проведите сделку заново, указав более высокий размер комиссии. Важно настроить максимально схожие параметры транзакции в сравнении с той операций, которая не увенчалась успехом.
- Ожидайте завершение операции. Теперь перевод биткоинов должен состояться быстрее.
Для других криптокошельков подход является аналогичным. Основные различия могут быть лишь в наименовании команд. Отличная функция есть в бумажнике Electrum. Кнопка «replace-by-fee» позволяет повторно отправить биткоины с увеличенным комиссионным вознаграждением.
Child Pays for Parent
Child Pays for Parent (CPFP), дословно «дети платят за родителей» – один из самых популярных методов «проталкивания» платежа. Его суть заключается в том, что отправитель биткоинов создает еще одну операцию, используя «сдачу» с неподтвержденного платежа.
Сдача – средства, которые должны остаться на счету после совершения проблемной операции. Важно, чтобы суммы хватило и для старой, и для новой сделки.
Сторона сделки создает новую операцию со сдачей, которая «условно» была получена с другой, еще не подтвержденной транзакции. Ставит повышенную комиссию, которая распределится на две операции. Майнер заметит высокие комиссионные и подтвердит сделку.
Отправка монет совершается по любому адресу. Часто используют свой. Рассмотрим применение CPFP на примере кошелька Bitcoin Core.
- Зайдите в раздел с настройками и параметрами (Settings – Options).
- Перейдите в категорию «Wallet» (Кошелек) и поставьте отметку в поле «Enable coin control features» (Управление входами). Здесь же включите разрешение на трату неподтвержденной сдачи – «Spend unconfirmed change».
- Нажмите на «Отправить».
- Зайдите в раздел «Inputs» (Входы) и поставьте галочку напротив интересующей вас суммы.
- Укажите в строке «Адрес получателя» адрес своего хранилища.
- Нажмите «Ок».
- Впишите сумму перевода и нажмите на галочку рядом с «Subtract fee from amount» (Вычесть комиссию из суммы).
- Отметьте выборочную комиссию за килобайт – «custom, per kilobyte». Не забудьте отметить, что комиссия высчитывается на две сделки.
- Завершите операцию по отправке биткоинов.
Важно: Метод требует дополнительных затрат – комиссия за вторую операцию, и поддерживается небольшим количеством пулов майнеров.
Использование ускорителей
Еще один способ ускорить подтверждение сделки с биткоином – обратиться за помощью к майнинговым пулам. Самый популярный «поставщик» такой услуги – пул ViaBTC.
- Перейдите на сайт ускорителя .
- Вставьте в строку ID транзакции. Комиссия ускоряемой сделки дожна быть не ниже 0.0001 BTC/KB.
- Нажмите на «Ускорить Бесплатно».
Также есть функция платного ускорения. Для этого надо зарегистрироваться на сайте. Комиссия сервиса уплачивается в Bitcoin Cash.
Пул ViaBTC обладает 7% мощностей, благодаря чему обращение к нему за помощью может быть оправдано. После оставления заявки, пул устанавливает транзакции более высокий приоритет. Однако сервис рассчитан не более чем на 100 сделок в час и часто бывает сильно перегружен.
Иные подобные сервисы: сайт пула AntPool, бот по ускорению в «Телеграм» – @FastTXbot.
Segregated Witness
Если все вышеописанные способы были связаны с манипуляцией над комиссиями транзакций, то Segregated Witness или SegWit работает с масштабируемостью блокчейн.
SegWit представляет собой софт форк от разработчиков кошелька Bitcoin Core, который путем оптимизации размера транзакций решает проблему переполненности блоков, а, следовательно, и скорости подтверждения транзакций.
Софт форк (Soft Fork) – то, что предполагает изменение в коде операции, не затрагивая ядро ПО. Он изменяет правила проверки подлинности блока.
Segregated Witness исключает из структуры транзакции подписи, которые занимают около 47% операции, в результате чего транзакция становится легче, а, следовательно, почти вдвое больше сделок помещается в блок, ограниченный 1 Мб. Подписи же выделяются в отдельную структуру, именуемую «отдельным свидетелем».
Решение SegWit было включено в клиент Bitcoin Core 0.13.1 2016 года. В 2017 году Segregated Witn был активирован в сети Litecoin, а также в среде менее популярных токенов: Groestlcoin, Syscoin, DigiByte, Monacoin, Vertcoin.
Как отменить неподтвержденную транзакцию биткоина
Если сделка получила хотя бы 1 подтверждение, отменить ее и вернуть монеты невозможно.
Как отменить перевод биткоинов в кошельке Bitcoin Core:
- Убедитесь, что ваша транзакция действительно не подтверждена через специальный сервис.
- Запустите кошелек. Сделайте ряд переходов: «Помощь» — «Окно отладки» — «Консоль».
- Введите команду «walletpassphrase ПАРОЛЬ».
- Введите команду «dumpprivkey АДРЕС» (адрес, который использовался для операции). Вы получите приватный ключ. Сохраните его в отдельный файл и ни в коем случае не передавайте посторонним лицам.
- Найдите в папке с компонентами бумажника файл «wallet.dat», переименуйте его и переместите в другое место.
- Выйдите из кабинета и удалите кошелек.
- Перезапустите программу, она не найдет вашего бумажника и создаст новый пустой кошелек.
- Вернитесь в меню «Консоль». Пропишите команду «importprivkey ПРИВАТНЫЙ КЛЮЧ». Начнется сканирование, которое займет около 60 минут.
- Проверьте ваш счет. Неподтвержденные сделки должны удалиться, блокированные деньги будут снова доступны.
Метод не сработает: (1) если пользователь применяет облачное хранилище для сохранения информации о переводах; (2) если майнеры успели обработать неподтвержденную операцию.
Количество неподтвержденных транзакций
Ранее мы отмечали, что существуют специальные сервисы, на которых можно проверить статус перевода биткоинов, примерное время совершения транзакций, рассчитать уровень удачной комиссии. Например, это сайты:
Самый популярный сервис – это blockchain.info . Для того, чтобы им воспользоваться, достаточно написать ID вашей сделки в поисковик на главной странице. После проверки вы увидите – «Confirmations» в Blockchain (Транзакция прошла) или надпись «Unconfirmed Transaction» (операция не подтверждена).
Заключение
C увеличением спроса на биткоины число сделок с ним в разы увеличилось. При этом размер блоков остался прежним – 1 Мб. Это порождает конкуренцию среди транзакций по включению их в блоки и проблему создания очереди из них. Операции, которые не были добавлены в блок, получили название неподтвержденных транзакций.
Основная причина «игнорирования» майнерами конкретного перевода кроется в размере комиссии. Участники сети заинтересованы в сделках с большим размером награды, потому операции с маленькими комиссиями вынуждены ждать своего подтверждения часами, а то и днями.
Источник