Если вы переводили биткоины в декабре 2017, то, наверное, помните огромные сборы за транзакцию.
Комиссия за транзакцию, сборы, transaction fees — это дополнительная плата, добавленная к сумме перевода, которую получает майнер за добытый блок с включенной транзакцией. Размер комиссии стимулирует майнеров быстрее обработать переводы.
Таким образом работает сеть биткоина: только ограниченное количество транзакций можно подтвердить в одном блоке. Они ограничены его размером: 1 Мб (и >2Мб у форков). Также ограничено время: вы, думаю, знаете, что блок добывается около 10 минут. Так что комиссия способна продвинуть вашу транзакцию в очереди.
Транзакция, которая включена в блок, — подтвержденная. Та, что еще не включена в блок, — неподтвержденная.
Мемпул — пул памяти — это все неподтвержденные транзакции, которые ждут включения в блок. Он существует в RAM всех полных биткоин-нод (т.е. компьютеров, входящих в сеть биткоина, на которых загружен весь блокчейн). Разные ноды имеют разные версии мемпула, в зависимости от того, какие транзакции они знают и помнят. Таким образом, если транзакция не подтверждена в течение длительного периода времени, она исчезнет из памяти узла. Сейчас время по умолчанию — 72 часа (раньше было 2 недели). Хорошо, что ноды могут устанавливать свою собственную продолжительность.
Возможно, что определенный узел (возможно, ваш собственный) никогда не забудет о транзакции и может даже иногда ретранслировать ее.
ID транзакции — у каждой транзакции, как подтвержденной, так и неподтвержденной есть уникальный идентификатор (txid). Кошелек сообщит об этом txid. Скопировав и вставив txid в любой block explorer, по этому номеру вы получите больше информации о транзакции. Этот номер потребуется для некоторых решений ниже.
Сатоши за байт (sat / B) — это стандартный способ измерения размера комиссии. Размер вашей транзакции (которую многие кошельки позволяют просмотреть) представлен в байтах или килобайтах. Вы можете вычислить окончательную плату, которую отдадите майнерам, простым умножением. Стандартный размер транзакции без SegWit составляет около 250 байт. Однако размер транзакций биткоина сильно варьируется в зависимости от 3 основных факторов:
- Количество входов,
- Количество выходов,
- Сложность скрипта.
Ввод — это отсылка к адресу, с которого пришли монеты на кошелек. Возможно, вы уже получили тысячи небольших платежей BTC, а затем попытались перевести один крупный платеж. Если это так, транзакция, вероятно, будет очень большой по размеру. Объяснение в этой статье.
В этом случае нужно дождаться, пока мемпул будет свободен (менее 50 000 незавершенных транзакций), а плата соответственно низкая. Чтобы сократить комиссии в будущем, вы можете объединить адреса, переотправив свой баланс на другой кошелек. Для достижения оптимальных результатов консолидируйте адрес SegWit!
Вывод — это платеж на другой адрес. При создании нескольких выводов, имеет смысл группировать транзакции, вместо того чтобы делать несколько платежей, чтобы снизить сборы.
Эта функция поддерживается некоторыми кошельками, например, Bitcoin Core и Electrum.
Кошельки пытаются показать оптимальную плату, основанную на текущем состоянии мемпула. Последние версии Bitcoin Core делают самые точные оценки. Большинство кошельков позволяют устанавливать комиссию, и с практикой вы сами поймете, какой размер когда лучше. Нужно смотреть размер вашей транзакции, прежде чем устанавливать размер вознаграждения.
Сервисы, которые помогают считать сборы:
Каждый биткоин-блок может вмещать около 2500 обычных транзакций и примерно 8000 транзакций SegWit. Они меньше и имеют более низкую плату. Его можно использовать через кошельки, которые поддерживают данное решение.
Если бы все перешли на SegWit, проблемы с высокими сборами и неподтвержденными транзакциями исчезли бы, по крайней мере, пока еще несколько миллионов человек не зайдут в биткоин.
Чтобы использовать SegWit на совместимом кошельке, сначала нужно отправить свои монеты со стандартного адреса на адрес SegWit, созданный этим кошельком. Как и при объединении монет, этот процесс должен выполняться, когда комиссии низкие. Это сэкономит вам много денег на будущих транзакциях.
Обратите внимание, что существует два типа адресов SegWit:
- P2SH начинается с 3 (максимальная совместимость),
- Bech32 с bc1 (транзакции на 10% меньше, но пока не используются так широко).
Во-первых, есть биржи с почти нулевой комиссией за вывод или фиксированной ставкой. Также есть варианты перевода между двумя биржами, биржей и кошельком и т. д. по выгодным условиям. Например, вывод с крупнейшего Coinbase не так выгоден, как вывод с GDAX, его дочерней биржи. Эти варианты нужно искать.
Если кошелек поддерживает RBF (замену сборов), вы может использовать это либо для застрявшей транзакции, либо как вариант по умолчанию. Там вы сможете экспериментировать с низкой оплатой в будущем.
Если транзакция застряла, повышайте ее стоимость через опцию RBF. Тогда кошелек автоматически ретранслирует транзакцию, с поднятой до указанного уровня ставкой.
Популярные кошельки с этой функцией: Electrum и GreenAddress.
Читайте также: Биткоин где можно обменять на наличные
Если вы ждете монеты, избегайте расходования средств, пока они не прибудут. Хотя большинство кошельков по умолчанию не будут тратить неподтвержденные биткоины, некоторые все же могут создать новую транзакцию, которая зависит от подтверждения предыдущей. Это может привести к этому неприятному сценарию: цепочке неподтвержденных транзакций.
Если комиссии упали, и транзакции с подобными ставками получают подтверждение, можно повторно сделать отправку (если транзакция старше 72 часов).
Существует множество способов ретрансляции транзакций. Вводите «resendwallettransactions» в консоль, если используете кошелек Bitcoin Core. Другие кошельки также предлагают эту функцию, ее нужно искать в FAQ на сайте-поставщике.
Можно использовать онлайн-сервис для ретрансляции. Одним из вариантов является https://coinb.in/#broadcast .Сюда нужно добавлять 16-значный адрес транзакции. Чтобы его скопировать, зайдите на https://blockchain.info/tx/, введите свой tx >
Ускорители транзакций связаны с майнинг-пулами. Они добавят ваш txid в список тех, которые включены в следующий блок. Некоторые из них бесплатны совсем, другие до определенного размера транзакции, есть и полностью платные.
Вот некоторые рекомендуемые ускорители транзакций:
Ускоритель ConfirmTX обеспечивает бесплатную обработку транзакций размером до 300 байт. Более крупные транзакции должны заплатить сбор в размере 5 долларов.
Ускоритель Coolwave рекомендуют на BitcoinTalk. Там же им можно пользоваться, с учетной записью форума.Теперь у него появился свой вебсайт.
Ускоритель ViaBTC бесплатный, но принимает только 100 неподтвержденных транзакций в час.
Hooli тоже бесплатный акселератор, работает в промежутке 2-10 часов.
Есть метод двойного расходования и «ребенок платит за родителя», известный под аббревиатурой CPFP.
Двойная трата заново отсылает транзакцию, но с более высокой комиссией. Это похоже на изменение комиссии (RBF), но идет в обход протокола, такие транзакции считаются недействительными.
Child Pays for Parent позволяет и принимающей стороне повлиять на скорость получения перевода. Первая транзакция была с низким налогом, а следующая (и связанная с ней) содержит компенсацию. Чтобы получить вознаграждение с последующего блока, надо сначала подтвердить первый. Эта функция позволяет работать с множествами, группами транзакций, а не с каждой в отдельности. Но CPFP использует больше места в блоке, поэтому менее эффективен, чем RBF.
Переводы BTC часто представляют собой головную боль, но решения уже появляются. Так, советуем познакомиться с технологией Lightning Network, которая начинает активную работу и также призвана сократить расходы при переводах.
Волею судеб довелось мне иметь дело с криптовалютами. Не то что бы плотно работаю с ними, но иногда то отправлю монетки, то получу. Скажем так, понемногу прощупываю новую сферу изнутри.
И вот однажды беда приключилась. Отослал я криптомонетки, а до получателя они не дошли. Собственно, пост о том, как средства возвращались. Ну и размышления и советы по сложившейся ситуации на десерт. Сразу отмечу, что нижесказанное применимо не к какой-то конкретной валюте, а к большинству форков (если не ко всем).
Начну с того, что пост местами пронизан догадками относительно происходящего. Где-то я могу ошибаться. Объективные поправки и дополнения только приветствуются.
Немного о терминологии.
- Кошельком буду называть файл wallet.dat.
- Публичный ключ (адрес, на который перечисляются средства, например) временами тоже удобнее назвать кошельком, но, во избежание путаницы, пусть он будет просто номером счета.
- Комиссия — Transaction Fee. Называть эту штуку комиссией, я считаю, не совсем правильно, но это наиболее привычный и не режущий слух вариант, потому пусть будет комиссией.
- Размер транзакции — размер блока данных, в котором содержится вся информация о транзакции.
Ко всей этой криптовалютной кухне я изначально подошел как типичный юзер — не особо вникая в систему. Установил, запустил, работает — и ладно. Иногда при попытке послать куда-то средства клиент выдавал сообщение вроде «Размер транзакции слишком велик, нельзя просто взять и послать ее. Но вы можете добавить комиссию в размере N, и тогда все будет хорошо» — я соглашался с добавлением комиссии, и все действительно было хорошо.
Казалось бы, если меня просят дополнительно заплатить, когда это нужно, значит я и буду платить, когда попросят (если комиссия будет устраивать). Это и было главной ошибкой.
Делаю очередной перевод на сумму значительно крупнее, чем обычно. Средства со счета уходят, предложения заплатить комиссию не было и… Ничего. До получателя средства не доходят, статус транзакции «0/Не подтверждено». И такую картину я наблюдал больше недели, попутно перегугливая и перечитывая интернеты в поисках информации по решению подобной проблемы. Причем искал и для конкретной криптовалюты, и в целом для всех — проблем куча, решения нет.
А, собственно, что же это за комиссия? Идея в том, что транзакции могут проходить без комиссии, но только в случае соблюдения некоторых условий:
- Размер транзакции должен быть не больше определенной величины.
- Переводимая сумма должна быть больше некоего порога.
- Транзакция должна обладать достаточным приоритетом.
Читайте также: Как вывести сатоши с moon Биткоин на Биткоин кошелек
Если первые два пункта более-менее понятны (конкретные величины приводить не стал, полагаю, они могут варьироваться от форка к форку), то в третьем вся загвоздка. Грубо говоря, транзакции при создании попадают в очередь, отсортированные по приоритету. При генерации очередного блока в него включаются транзакции с комиссией (которая идет в награду тому, кто нашел блок), а также транзакции без комиссии с наиболее высоким приоритетом.
Сам приоритет прямо зависит от объема переводимых средств и от числа их подтверждений (чем дольше именно эти деньги лежали у вас на счету, тем больше должен быть приоритет, по сути) и обратно зависит от размера транзакции. Таким образом, при неудачном стечении обстоятельств транзакция без комиссии может оказаться в зависшем неподтвержденном состоянии, с которым я и столкнулся.
Поиски решения показали, что это сравнительно частая для криптовалют проблема. К сожалению, все советы сводились к нижеперечисленному и часто не помогали:
- Подождите сутки-двое, вашу транзакцию включат в очередной блок.
- Подождите сутки-двое, программе-клиенту надоест ждать, и она сама отменит транзакцию.
- Загрузите заново всю цепочку блоков.
- Запустите клиент с каким-нибудь волшебным ключом (-rescan / -reindex / -salvagewallet).
Ждал я больше недели. Ни в какой блок транзакцию не включили. Даже после повторных отправок через sendrawtransaction. Блокчейн говорил, что о той транзакции ничего не знает, и на счету лежат те самые средства, никуда они не ушли. И только клиент стоял на своем: «Я транзакцию отправил, дальше как хочешь. Уже потраченными деньгами распоряжаться не позволю».
Итак, в чем же суть проблемы? Транзакция не попала в блок и уже не попадет. В кошельке хранится информация о том, что транзакция в общем-то была, поэтому средства, которые должны были с ней отправиться, недоступны для использования. Возможно, спустя еще какое-то время транзакция будет отменена, на этот счет у меня несколько предположений:
- Зависит от валюты, где-то быстро отменяется, где-то нужно ждать долго.
- Баг конкретного клиента.
- Информация об отмене неверна.
В любом случае, неделя — это достаточно большой срок. Если за это время не прошло само, то есть основания полагать, что и не пройдет.
Как нормальный человек, после того, как все уже сломалось, я наконец-то пошел читать мануалы. Попытка повторить транзакцию с включением в нее комиссии потерпела фиаско. Зато бесконечные прыжки по ссылкам между форумами (в выдаче гугла ничего стоящего не нашлось) довели меня до некоего поста, где и нашлась дельная подсказка. К сожалению, теперь найти этот пост не удается, даже не знаю, что был за форум. Полагаю, некий околобиткойновый.
Решение буду описывать на примере клиента, наиболее распространенного для форков, известного как Satoshi Client. Насколько понимаю, оно применимо и к прочим клиентам, но, возможно, со своими нюансами.
Несмотря на простоту и очевидность решения, к нему мало кто приходит, судя по многостраничным веткам форумов. Средства на счете блокируются кошельком, и все, что требуется, это получить доступ к счету вне текущего кошелька.
Итак, если транзакция зависла и не имеет подтверждений:
- Проявите терпение. Не поднимайте сразу панику. Подождите пару дней, вдруг и правда само пройдет.
- Убедитесь, что транзакция зависла. Зайдите в Block Explorer (обычно гуглится по запросу «blockchain %названиекриптовалюты%») и проверьте, что про зависшую транзакцию там ничего не знают, а на счете деньги на самом деле есть.
- Перейдите в отладочную консоль (Помощь — Окно отладки — Консоль)
- Если кошелек зашифрован (он же зашифрован?), то для начала необходимо получить доступ, используя команду walletpassphrase
. Импорт может производиться достаточно долго. Позвольте ему завершиться — дождитесь получения ответа на команду.
- В новом кошельке должен появиться счет с реальным его состоянием. Для надежности можно перезапустить клиент с ключом -rescan, но, полагаю, это уже лишнее. Ранее заблокированные средства снова доступны для отправки, шлите их заново, на этот раз не забудьте включить комиссию. (есть важные дополнения по этому пункту в upd3)
- Если на старом кошельке остались прочие используемые и важные счета, можно снова вернуться к нему.
- Импортировав счет в новый кошелек, переведите все средства с него на другой свой счет, вернитесь к старому кошельку и после этого уже распоряжайтесь возвращенными средствами.
- После совершения транзакции с нового кошелька определите, на какой счет упала сдача, и импортируйте этот счет в старый кошелек.
- Двойная трата (Double Spend);
- Специальные сервисы, ускоряющие транзакции.
Таким нехитрым образом удалось вернуть криптомонетки. Хотя я уже и начал думать, что они потеряны совсем. В общем, не надейтесь на чудо, перед использованием нового клиента убедитесь, что комиссия всегда включена. Рекомендуемый размер комиссии, думаю, лучше искать на ресурсах, посвященных используемой криптовалюте.
Upd: Необходимость описанной операции зависит от используемого клиента (а так как у многих криптовалют по одному клиенту, то и от используемые валюты). Похоже, в некоторых случаях информация о транзакции записывается не в файл кошелька, а только в локальную цепочку блоков. При таком раскладе может помочь удаление имеющейся цепочки или запуск клиента с ключами.
Upd2: Значительно упростить описанный процесс переноса счетов в новый кошелек может ключ -salwagewallet, уже упомянутый ранее. При запуске клиента с этим ключом создается новый wallet.dat, в который импортируются все счета из старого, а история транзакций к нему берется из цепочки блоков (за описание спасибо grich). К сожалению, запуск с данным ключом реализован не во всех клиентах.
Upd3: Если после импорта перечислить не всю сумму, имеющуюся на счету, то часть средств (сдача от используемых выходов) будет перечислена на другой счет нового кошелька. Учитывайте это, если планируете вернуться к старому кошельку:
Хардкорная конфа по С++. Мы приглашаем только профи.
Противники Bitcoin (BTC) любят в пользу своих доводов приводить примеры, когда биткоин транзакция “застревает” в сети. Утверждается, что как-раз из-за этого недостатка Bitcoin нельзя использовать в качестве платежного средства.
И даже несмотря на то, что в последнее время все больше узлов блокчейна BTC начинают поддерживать протокол Lighting Network, ускоряющий обмен транзакциями, все же стоит поговорить о такой проблеме, как “неподтвержденная биткоин транзакция”.
Когда лицо намеренно отправить N-ую сумму средств через блокчейн Bitcoin’а, все данные вносятся в блок, который, в свою очередь, ожидает верификацию (подтверждение) со стороны майнеров. Впоследствии майнеры должны проверить уникальность блока и внести его в блокчейн.
Перед тем, как осуществить перевод средств, отправитель указывает количество комиссионных (они будут распределяться между майнерами) за транзакцию. Размер комиссии всегда опциональный и зависит от различных факторов (загруженность сети, курс биткоина и т.д.).
Если размер комиссионных слишком низок, то блокчейн автоматически понижает транзакцию в списке на верификацию.
Иногда, когда количество транзакций превышает норму (например, резкий скачок курса), в блокчейне биткоина появляется все больше неподтвержденных транзакций из-за слишком низких комиссионных, которые были выбраны отправителями.
Как бы там ни было, это далеко не единственная причина, но довольно частая.
Нет. Ваша транзакция просто стоит в очереди на проверку данных. Как мы уже писали выше, такое часто случается когда высокая загруженность сети + вы установили низкую комиссию. Не стоит паниковать.
Точного ответа здесь нет. Все зависит от ситуации. Иногда может пройти несколько часов, дней, а порой и недель.
Вы можете следить за статусом своей транзакции, указав в поиске на сайте blockchain.info номер вашей транзакции. В случае, если blockchain.info недоступен, можно воспользоваться Bitaps.com или Blocktrail.com.
Еще один вариант — проверить транзакцию на сайте btc.com. Зайдя на сайт, нажмите в шапке на раздел “Статистика”, а затем выберите пункт “Неподтвержденные транзакции”.
Глядя на график, который распределяется по уровню указанных комиссионных, можно будет поверхностно оценить, насколько сильно затянется процесс подтверждения.
Можно, но не всегда данные методы работают. Существует четыре способа “протолкнуть транзакцию”, но зачастую используются только два:
Метод двойной траты подходит в случае, если средства были отправлены через приложение Bitcoin Core/Bitcoin Knots. Чтобы протолкнуть транзакцию, необходимо закрыть приложение Bitcoin Core, вновь запустить его, но уже из командной строки, через команду “zapwalletettxes”.
И да, необходимо заранее убрать из хроники операций файл “mempool.dat”.
Если все сделано правильно, то можно попробовать повторно осуществить транзакцию, повысив при этом комиссионные.
Дальше переходим в Bitcoin Core во вкладу “input”, выбираем застрявшую транзакцию и добавляем еще один вход с новой транзакции, в которой указаны более приемлемые комиссионные.
Также существуют специальные сервисы, которые, якобы, ускоряют транзакции. К таким сервисам относятся Antpool и ViaBTC.
В основном, данный метод вполне может сработать, когда количество неподтвержденных транзакций невелико.
В случае, если зависших транзакций больше, чем обычно, то смысла от таких ускорителей нет, поскольку они забиты запросами от таких же “коллег по несчастью” как и вы.
Помимо указанных двух способов продвижения транзакции, существуют еще и метод CPFP (англ. child pays for parents) и replace-by-fee. Они не были рассмотрены, поскольку зачастую далеко не все майнеры поддерживают такие функции для защиты от двойных трат.