Как ускорить транзакцию?
Рассмотрим вопрос на примере самой популярной в мире криптовалюты Bitcoin. Как ранее было отмечено, каждая транзакция биткоина должна быть подтверждена майнерами, которые получают комиссию за каждую валидацию.
Давайте рассмотрим сам алгоритм перевода:
- один человек направляет деньги другому человеку;
- информация об этой транзакции отправляется в очередь;
- далее майнеры на свой вкус отбирают несколько транзакций из очереди и проводят проверку;
- если перевод корректен и не противоречит информации, содержащейся в блокчейне, то майнер проводит математические операции, которые формируют контрольную сумму (число-подпись, которое изменится при любой, даже незначительной, корректировке исходных данных);
- далее майнер объединяет несколько транзакций в один блок и распространяет информацию по всем узлам сети;
- каждый следующий блок связан с предыдущим математическими формулами, поэтому считается, что все блоки, следующие за текущим, являются его подтверждениями.
До того момента, пока информация о переводе распространится по сети в составе блока информации, транзакция считается неподтвержденной. Все такие транзакции находятся в листе ожидания, в терминологии блокчейнов они называются "Memory Pool" (иногда, mempool или мемпул).
У каждого крупного пула майнеров свои листы ожидания, но в большинстве случаев они регулярно обмениваются информацией между собой через ноды (узлы сети).
Обычно, принцип выбора следующей транзакции — кто больше заплатит комиссии, тот и в приоритете. Хотя, здесь стоит оговориться, что недостаточно просто заплатить больше других, ведь разные транзакции имеют отличные друг от друга размеры (чем больше переводов внутри транзакции, тем больше информации нужно записать в блок).
Поэтому комиссия пересчитывается в стоимости за единицу информации — ведь майнерам выгоднее обработать две транзакции со средней комиссией, чем одну с высокой, если они займут одинаковое количество байт в блоке.
Когда возникают проблемы?
Чаще всего транзакция долго не обрабатывается из-за слишком низкого уровня установленной комиссии. В этом случае она может очень долго находиться в листе ожидания, постоянно пропуская более поздние переводы перед собой, а иногда и вовсе зависнуть на несколько недель.
Даже при нормальном уровне комиссии продолжительность обработки платежа может быть долгой, если в сети слишком большая нагрузка. Мы писали об этом в отдельном материале: Коллапс в сети Bitcoin
Однако, несмотря на декларируемый обмен информацией между нодами и майнинговыми пулами, иногда случаются сбои в этом процессе. Либо по какой-то причине выбранный вашим кошельком пул имеет правила, отбрасывающие ваш перевод в самый конец списка, откуда он даже не пересылает информацию соседям, считая транзакцию "мусором".
Что делать?
Есть несколько вариантов действия при зависании транзакции в листе ожидания:
- просто ждать подтверждения (это может занять дни и даже недели);
- дождаться отмены транзакции, то есть пока информацию о переводе не удалят как "мусор" все пулы (не существует единых правил отмены транзакций, но по статистике этот процесс занимает не менее 3х суток и случается только при очень низкой комиссии);
- ускорить обработку доступными методами: RBF, CPFP, Double-Spent и д.р.
- ускорить транзакцию с помощью акселераторов, сервисов, помогающих протолкнуть зависший платеж.
Replace-by-Fee (RBF) — выборочная замена комиссии. Такой механизм подразумевает увеличение комиссионных сборов, чтобы сделать платеж более интересным для майнеров, в уже отправленной в лист ожидания транзакции. Но далеко не все майнеры поддерживают "горячую" замену данных.
Более того, чтобы воспользоваться опцией, нужен кошелек, который ее поддерживает, а перед отправкой транзакции в ней должен был быть указан параметр "Opt-In RBF", что не всегда удается предусмотреть до того, как пользователь столкнется с проблемой в первый раз.
Куда выгоднее здесь выглядит механизм Child Pays for Parent (CPFP) — дословно "ребенок платит за родителя". Этот метод хоть и поддерживается не всеми пулами, но весьма эффективен в неотложных ситуациях. Но важное для этой стратегии условие — что после отправки перевода осталась "сдача" в достаточном объеме, чтобы отправить ее с большой комиссией.
Задумка этого метода в том, чтобы отправить следом за зависшей транзакцией перевод с завышенной комиссией, тогда майнеру чтобы обработать выгодную транзакцию придется обрабатывать и предыдущую — то есть комиссии за перевод складываются и делятся на два перевода.
А что делать в других случаях?
Когда транзакция долго не подтверждается, а заменить комиссию нет возможности, на помощь приходят акселераторы (ускорители). В сети существуют три вида таких сервисов — первые два принадлежат непосредственно майнинговым пулам и включают любые транзакции на определенных условиях в следующий блок, который будет им добыт.
Первые делают это совершенно бесплатно. Но это не самоотверженная помощь, а один из способов рекламы своего майнингового пула. На текущий момент существует только один действующий сервис такого типа, принадлежащий ViaBTC.
Но из-за громадного наплыва желающих им воспользоваться и абсолютно непрозрачного механизма отбора транзакций, в реальности шанс попасть в список на льготных условиях близок к нулю.
Второй тип таких акселераторов предлагает за деньги включить транзакцию в следующий добытый пулом блок. В таком случае майнеры компенсируют низкую комиссию отдельным платежом. Сама оплата может быть в совершенно разных форматах, в том числе с помощью банковской карты.
Однако, кроме акселераторов, принадлежащих майнерам, существуют и другие сервисы — "Broadcast Transaction Accelerator".
Смысл их работы заключается в том, чтобы отправить копию своей транзакции в максимум известных листов ожидания. Благодаря чему не придется зависеть от решения одного пула о рассылке информации, появляется шанс, что транзакцию заметят быстрее.
Один из таких сервисов есть и у нас: https://www.bestchange.ru/pushtx/
В большинстве сервисов необходимо указать данные в "raw" (сыром) формате. Эту информацию можно найти в кошельке, из которого был отправлен перевод.
К сожалению, нет единой инструкции для всех кошельков, поэтому не сможем заранее подсказать, где именно будет расположен этот пункт меню, но его название должно содержать слово "raw".
При этом наш акселератор отличается тем, что в него можно отправить лишь идентификатор транзакции (TXID), после чего сервис сам постарается найти транзакцию в мемпуле и снова отправить ее всем известным нам майнерам.