22 сентября 2020

Как ускорить транзакцию биткоина. Функция Replace-By-Fee

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

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

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

Факторы, которые влияют на скорость биткоин транзакции

1. “Вес” транзакции

Ранее мы рассказывали о том, что такое биткоин и как определяется комиссия сети за проведение транзакций  (Не путайте с комиссией банка/биткоин-кошелька, здесь речь идет о комиссии сети, которую получают майнеры).

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

“Вес” транзакции включает (напротив  указываем примерное количество байтов в цифрах):

  1. Количество входов (адресов, с которых пришли криптоактивы) — ~148 байт
  2. Количество выходов (адресов, на которые перечисляются криптоактивы) — ~34 байта
  3. Сама транзакция — ~10 байт.

То есть, если 1 BTC вам пришел с десяти адресов, то количество входов определяется так.  Input (в байтах) = 148*10 = 1480 байт.

Количество выходов (output) считается аналогично, также надо помнить про “сдачу”. То есть, если вы отправляете часть монеты на 1 адрес, то вам обязательно должна вернуться сдача на ваш же адрес. Таким образом, количество выходов будет равно 2-м — один для отправки плюс один для сдачи. Сложив все параметры пользователь может определить количество байтов, то есть “вес транзакции”.

2. Mempool и скорость транзакции

Каждая транзакция биткоина должна быть подтверждена майнерами, которые получают комиссию за каждую валидацию. Для этого пользователь должен определить актуальную на данный момент стоимость передачи объема данных в сети (сатоши/байт), сформировать транзакцию и  отправить ее непосредственно майнерам в Mempool.

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

Как определить оптимальный размер комиссии

Из выше описанных пунктов становится ясно, что для быстрой транзакции, комиссия, которую устанавливает пользователь при отправке играет ключевую роль. Общая комиссия за транзакцию будет произведением “веса” транзакции на стоимость передачи объема данных в сети (сатоши за байт). И если “вес” транзакции — величина постоянная, то цена в сатоши за байт динамична и, по большому счету, имеет рыночную природу — чем выше спрос на транзакции, тем выше цена за байт информации.

Например, транзакция весом в 374 байта при стоимость 138 сатоши/байт будет стоить 374*138=51612 сатоши, или 0.00051612 BTC, или 5.16$ при цене биткоина в 10 000$.

Актуальную стоимость за байт всегда можно посмотреть в обозревателе блоков, например по этой ссылке: https://blockchair.com/ru/bitcoin. Стоит также отметить, что комиссия в сети биткоин не зависит от суммы отправки, то есть с одинаковой комиссией можно отправить как 0.001 BTC, так и 10 BTC.

Различные сервисы по-разному предлагают оплатить своим пользователям комиссию сети. Одни сразу ставят фиксированную комиссию, которая зачастую выше актуальной, другие полностью перекладывают эту функцию на пользователя.

Мы в Trustee Wallet предлагаем пользователю три типа комиссии, а также возможность установить комиссию сети вручную.

При отправке пользователь может выбрать любую из предлагаемых комиссий, естественно это будет напрямую влиять на скорость транзакции — Медленно, Средне, Быстро. В вариантах указана цена за байт, стоимость комиссии в биткоине и фиате($).

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

В Trustee все предельно просто, четко и понятно!

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

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

Варианты событий при «зависании транзакции. Функция Replace-By-Fee

Существуют следующие варианты при “зависании” транзакции:

— ждать подтверждения (это может занять дни, неделю или даже вечность);

— ждать отмены транзакции. Это происходит, когда большинство нод решают “выкинуть” транзакцию из мемпула. После этого биткоины становятся свободными и ими снова можно пользоваться (точного времени, когда это произойдет нет, но согласно статистике этот процесс занимает порядка 3х суток);

— увеличить комиссию в уже созданной транзакции пока она находится в мемпуле (функция Replace-By-Fee).

Итак, Replace-By-Fee (RBF) — это редактирование существующей транзакции, которая находится в мемпуле. Это значит, что в новой транзакции будут использованы те же параметры (входы и выходы), что и в старой, но при этом будет изменена комиссия. Ноды сети bitcoin воспринимают отредактированную транзакцию как старую и она переносится в очереди мемпула на более привлекательные для майнеров позиции.

Таким образом, если транзакция “зависла” из-за небольшой комиссии, то оптимальным способом ускорения транзакции будет использование этой функции. Обратите внимание, что данная функция доступна в ограниченном количестве крипто кошельков. В Trustee Wallet она есть и на данный момент работает в тестовом режиме.

Как использовать Replace-By-Fee в Trustee

На данный момент все исходящие транзакции биткоина в Trustee могут быть ускорены. Однако перед отправкой биткоина лучше проверить эту надстройку. Для этого перейдите в Настройки во вкладке Bitcoin и проверьте, что “Редактирование неподтвержденных транзакций” активно (соответствующий “ползунок”). Также рекомендуем активировать и “Использование неподтвержденных транзакций” — это позволит использовать входящие биткоины, которые еще не подтверждены сетью, а также отправлять очередь исходящих биткоин транзакций (одну за другой).

Так как функция RBF сейчас находится в тестовом режиме и еще дорабатывается нашими специалистами, то ее нужно активировать. Для этого следует выполнить простое действие:

На главном экране нажмите и удерживайте кнопку “Добавить актив” до появления специального уведомления. После чего функция RBF станет активной.

Начнем процесс изменения комиссии:

  1. Вернитесь в историю транзакций (вкладка Bitcoin);
  2. Выберите нужную “зависшую” транзакцию и нажмите “Увеличить комиссию”
  3. В открывшейся вкладке установите актуальную цену за байт, либо вручную, либо из предложенных вариантов. Ранее мы уже упоминали, что актуальную цену можно проверить на сайте: https://blockchair.com/bitcoin
  4. Нажмите “Отправить”. Уведомление “Ваша транзакция успешно отправлена” — это значит, что увеличение комиссии прошло успешно.
  5. Теперь в деталях данной транзакции будет два хеша, один старый — неактивный, а другой актуальный — с увеличенной комиссией. Это еще раз подтверждает факт надежности протокола биткоина и отсутствие “двойных трат” при увеличении комиссии.

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

Мы также рекомендуем использовать Segwit адреса для получения и отправки биткоина, таким образом транзакции обойдутся дешевле, чем при Legacy адресах. Детально разницу  между этими видами адресов мы описывали в статье “От Legacy к Segwit”.

Если у вас остались вопросы или появились предложения — будем рады видеть их в нашем Telegram чате!

Обсудить в Discord!