Функция Replace-by-fee, сокращенно RBF, в Биткоине (и не только) позволяет заменять зависшие неподтвержденные транзакции на новые с более высокой сетевой комиссией и ускорять их подтверждение.
Replace-by-fee (дословно «замена комиссией») была предложена в BIP-125 и введена в протокол Биткоина в феврале 2016 года. Эта функция обеспечивает пользователям возможность ускорить свои транзакции, изменить комиссию или получателя в них.
23 ноября 2023 года пользователь Биткоина совершил транзакцию, заплатив исключительно высокую комиссию в размере 3,136 миллиона долларов за перевод 55 BTC. Эта непомерная комиссия установила рекорд, став восьмой по величине в истории Биткоина — пользователь переплатил в 119980 раз больше рекомендованной.
В этом примере можно усмотреть несколько причин такой переплаты:
- Выбор высокой комиссии за транзакцию
Возможно, отправитель выбрал высокую плату за транзакцию в надежде получить более быстрое подтверждение или потому что неправильно выставил размер комиссии. Подобные случаи называются транзакциями «толстого пальца».
- Replace-by-fee (RBF)
Пользователь мог заменить неподтвержденную транзакцию другой, с более высокой сетевой комиссией. Это означает, что для обеспечения более быстрого подтверждения отправитель мог заменить первоначальную транзакцию, которая могла иметь высокую комиссию, новой транзакцией с еще более высокой платой.
- Неосведомленность отправителя
Возможно, отправитель не был внимателен или не до конца осознавал последствия своих действий. Он мог не предполагать, что RBF приведет к такому значительному увеличению комиссии за транзакцию.
- Намеренные действия
Намайненные BTC абсолютно чистые перед AML-проверками, в отличие от биржевых. Многие крупные покупатели отдают предпочтение именно чистым средствам. Майнинговому пулу не составляет труда сформировать транзакцию офлайн, выставить за нее любую комиссию, вручную поместить в мемпул собственной ноды и самостоятельно смайнить в нужном блоке, не выпуская транзакцию в общий мемпул.
Результатом таких действий является высокая награда за блок в виде чистых BTC, которые можно продать без влияния на спотовую цену.
Какие блокчейны поддерживают RBF
Замена комиссионных — это транзакционная политика, встроенная в сетевой протокол Bitcoin, благодаря которой можно заменить неподтвержденную транзакцию на новую с более высокой комиссией. Различные участники и сервисы экосистемы Биткоина могут по-разному воспринимать RBF, и не все кошельки снабжены этой функцией.
По условиям при использовании RBF новая транзакция должна содержать те же входы, что и заменяемая. Функция RBF применима только к неподтвержденным транзакциям; успешная транзакция замене не подлежит. Поскольку не все ноды и майнеры могут поддерживать или распознавать RBF-транзакции, их эффективность зависит от настроек ПО и готовности майнеров обрабатывать такие транзакции.
Некоторые кошельки позволяют устанавливать «Fee Bumping» (метод увеличения сетевой комиссии) на отложенные неподтвержденные транзакции и использовать расширенные настройки для отправки Эфира (ETH) или токенов ERC-20, разрешая настраивать значение nonce, цену газа или лимит газа.
К числу блокчейнов, поддерживающих RBF, относятся: Bitcoin и биткоин-подобные (Bitcoin Cash, Litecoin, Dogecoin и т.д.), а также Ethereum и EVM-совместимые (Polygon, BNB Smart Chain и пр.), хотя в большинстве случаев в ускорении транзакций нуждаются только токены ERC-20.
Как работает РБФ — ускорение транзакции
В биткоин-кошельках ускорение достигается за счет создания новой транзакции с более высокой комиссией, которая при трансляции в сеть может стать более приоритетной для майнеров и заменить исходную транзакцию.
Состояние мемпула, правила майнеров, узлов и кошельков — всё это влияет на эффективность RBF. Процесс ускорения состоит из нескольких этапов:
- Первоначальная публикация транзакции
Транзакция инициируется пользователем и передается в сеть, где помещается в мемпул ноды и ожидает включения майнером в блок. Важно, чтобы до отправки биткоин-клиент по умолчанию назначал транзакциям метку RBF, иначе ни о каких ускорениях и заменах речи быть не может. О наличии поддержки функции RBF нужно узнавать в описании используемого ПО (кошелька).
- Корректировка комиссионных и замена
Пользователь инициирует новую транзакцию с более высокой комиссией, если необходимо ускорить процесс подтверждения или развернуть транзакцию. Новая транзакция содержит уникальный «порядковый номер» в своих входных данных, указывая на то, что она предназначена для замены предыдущей. Этот номер, как и размер сетевой платы, выше, чем у исходной транзакции.
В Биткоине функция РБФ накладывает ограничения только на входы (адреса, с которых получена сумма), но не ограничивает выходы (адреса назначения), то есть заменой будет считаться лишь та транзакция, которая тратит те же входы, что и изначальная, при этом выход может быть каким угодно. Это позволяет даже развернуть неподтвержденную транзакцию обратно на свой адрес в случае, если необходимость отправки отпала или отправка совершается на ошибочный адрес. При этом комиссия сети все равно будет уплачена.
- Трансляция новой транзакции и подтверждение
Новая транзакция транслируется в сеть. Майнеры (валидаторы), собирающие очередной блок, видят замену с более высокой комиссией и могут (но не обязаны) согласиться включить транзакцию в блок. Предыдущая транзакция не будет подтверждена и «выпадает» из мемпула, если заменяющая ее транзакция включается в блок.
В эфириум-кошельках такое возможно за счет переотправки транзакции с тем же Nonce. О том, как ускорить (заменить) транзакцию ETH/ERC-20 можно прочитать в этой статье.
Недостатки ускорения транзакций
RBF вызывает некоторые опасения по поводу возможного двойного расходования средств, поскольку при замене можно указать другой адрес получателя. И хотя в настоящее время блокчейны надежно защищены от двойных трат, получатели транзакций, в силу малой осведомленности или невнимательности, могут не распознать, какие операции являются валидными, что может привести к мошенничеству и недопониманию.
RBF может усложнить работу с блокчейнами, поскольку люди, не понимающие смысл и принципы работы ускорения/замены, могут понести неоправданные затраты или напутать с адресами назначения.
Функция затрудняет точное прогнозирование сроков подтверждения транзакций, снижая их предсказуемость. В целом, может пострадать эффективность сети, если регулярно заменять транзакции с увеличением комиссии, ведь это приводит к перегрузкам мемпула.
Уязвимость RBF к злоупотреблениям может позволить недобросовестным юзерам использовать систему для получения личной противоправной выгоды, хотя в большинстве случаев «кривые ручонки» действуют против самих же злоумышленников.