Транзакция с заменой по комиссии (RBF)
Один, предположительно, испуганный пользователь Bitcoin, заплатил почти 0.75 BTC (примерно 70,500 долларов) в качестве комиссии за транзакцию с заменой по комиссии (RBF). Эта транзакция была отправлена примерно в 00:30 UTC 8 апреля и стала второй попыткой выполнить RBF, изменив целевой адрес транзакции. В результате пользователь отправил 0.48 BTC (37,770 долларов) с 0.2 BTC сдачи (16,357 долларов).
Анмол Джай, вице-президент по расследованиям в крипто-криминалистическом агентстве AMLBot, рассказал изданию Cointelegraph, что оригинальная транзакция имела «стандартную или консервативную» комиссию.
Первая попытка RBF увеличила комиссию почти вдвое и изменила адрес вывода. Обе транзакции ожидают подтверждения, которое, вероятно, никогда не поступит. Это происходит из-за того, что транзакция с гораздо более высокой комиссией RBF заняла ее место, предлагая тот же вывод, что и вторая RBF транзакция, что предположительно должно было обеспечить обработку RBF, а не оригинальной транзакции.
Ошибка, вызванная паникой
Транзакция имеет признаки ошибки, вызванной паникой, так как пользователь отправил последующую транзакцию быстро, чтобы предотвратить интеграцию оригинальной транзакции в блок и ее окончательную обработку. Анмол Джай предложил несколько возможных объяснений:
«Возможно, он хотел установить 30.5692 сатоши, но из-за поспешности или неуклюжести в конечном итоге использовал 305,692 сатоши.»
Кроме того, вторая транзакция RBF добавила еще один необработанный выход транзакции (UTXO), содержащий почти 0.75 BTC. Сдача была ошибочно включена в комиссию, вероятно, потому что пользователь не обновил адрес сдачи или неправильно оценил структуру транзакции.
Еще одним вариантом, выдвинутым Джаем, является путаница пользователя между фиксированной комиссией и комиссией в сатоши за виртуальный байт (размер транзакции), или же автоматизированный скрипт, отвечающий за транзакцию, мог содержать ошибку. Кошелек мог позволять устанавливать комиссию в сатоши, что могло привести к ситуации, когда комиссия была установлена слишком низкой, и с последующим предупреждением о низкой комиссии пользователь мог попытаться корректировать:
«Система воспринимает это как общую комиссию в 30 сатоши, что слишком низко, поэтому пользователь вводит 305,000, думая, что это означает 30.5 сат/vB, и на самом деле кошелек применяет 305,000 сат/vB, что является совершенно недопустимым.»
Замена по комиссии: сложная функция
RBF — это широко непонимаемая и противоречивая функция Bitcoin. Транзакции Bitcoin считаются неокончательными до тех пор, пока они не включены в блок, с дополнительным подтверждением от последующих блоков в той же цепи. Транзакции в мемпуле зависят от майнеров, которые принимают решения в своих интересах.
Разработчики Bitcoin предвидели, что с множеством конфликтующих транзакций, финансовый стимул будет обрабатывать ту, которая платит более высокую комиссию. Нет простого способа предотвратить то, чтобы майнеры Bitcoin просто включали транзакцию, отправленную первой, и также сложно установить, какая именно транзакция была отправлена первой из-за децентрализованной природы сети.
Таким образом, этот стимул был заложен в функцию RBF, позволяющей пользователям редактировать неподтвержденные транзакции, отправляя альтернативную транзакцию с более высокой комиссией. Это вызывало споры в прошлом, например, когда сторонник Bitcoin Cash Хейден Отто утверждал, что RBF позволяет выполнять двойные траты Bitcoin в 2019 году. Напротив, Bitcoin Cash убрала эту функцию, заявив, что неподтвержденные транзакции в их сети окончательны и безопасны для принятия.
Тем не менее, с учетом работы блокчейнов, ситуации, подобные RBF, подтвердили, что такие проблемы могут возникать и в Bitcoin Cash, так как RBF является подразумеваемым свойством механизма консенсуса, подобного Bitcoin, которое было формализовано в качестве функции.