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

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

Ниже описаны факторы, которые влияют на скорость транзакции в BTC.

«Вес» транзакции

Каждая планируемая транзакция в биткоинах имеет определенный «вес» в байтах, что напрямую влияет на величину комиссии, необходимой для быстрого подтверждения.

«Вес» транзакции включает (справа примерное количество байтов):

  1. Каждый из входов (адресов, с которых пришли криптоактивы): ~148 байт

  2. Каждый из выходов (адресов, на которые переводятся криптоактивы): ~34 байта

  3. Сама транзакция: ~10 байт.

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

Количество выходов (output) считается аналогично, также надо помнить про «сдачу». Если вы отправляете часть имеющихся монет на 1 адрес, то в ваш кошелек вернется сдача. Таким образом, количество выходов будет не меньше двух: один для отправки и второй для сдачи. Сдачи не будет, если отправляется сумма в BTC, точно совпадающая с суммой одного или нескольких входов. Сложив все параметры, пользователь может определить количество байтов, то есть «вес» транзакции.

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

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

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

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

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

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

2

Актуальную стоимость за байт всегда можно посмотреть в обозревателе блоков, например, в Blockchair. Стоит отметить, что комиссия в сети Биткоина не зависит от суммы отправки, то есть с одинаковой комиссией можно отправить как 0.001 BTC, так и 10 BTC.

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

3

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

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

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

Варианты событий при «зависании» транзакции

Существуют следующие варианты:

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

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

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

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

Таким образом, если транзакция "зависла" из-за небольшой комиссии, то оптимальным способом ускорения транзакции будет использование этой функции.

Как использовать функцию Replace By Fee

На самом деле функция Replace-By-Fee доступна в ограниченном количестве криптовалютных кошельков. Порядок действия у всех практически одинаковый, здесь будет рассмотрен процесс ускорения транзакции на примере кошелька Trustee Wallet.

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

4

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

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

Процесс изменения комиссии:

  1. Вернитесь в историю транзакций (вкладка Bitcoin);

  2. Выберите нужную “зависшую” транзакцию и нажмите “Увеличить комиссию”

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

  4. Нажмите “Отправить”. Уведомление “Ваша транзакция успешно отправлена” означает, что увеличение комиссии прошло успешно.

  5. Теперь в деталях транзакции будет два хэша, один старый (неактивный), а другой актуальный, с увеличенной комиссией. Это еще раз подтверждает факт надежности протокола Биткоина и отсутствие “двойных трат” при увеличении комиссии.

5

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

Также рекомендуется использовать адреса Segwit для получения и отправки биткоина (начинаются на bc1 или 3), таким образом транзакции обойдутся дешевле, чем с Legacy адресами (начинаются на 1).


Автор статьи: Михаил Куценко, заместитель директора по развитию бизнеса в Trustee Wallet.