Трансакции с поддержкой Replace-By-Fee

 

 

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

Это может помочь трансакции «освободиться» в случае сильной перегрузки сети, и помогает развитию рынка комиссионных. Другие пользователи относятся к такому свойству с сомнением и даже критикой, опасаясь, что функция replace-by-fee может негативно повлиять на надежность неподтвержденных трансакций, так как в некоторых случаях появляется возможность возврата платежей.

Для тестирования функции GreenAddress предоставил журналисту Эрону ван Вирдуму (Aaron van Wirdum) ее предварительную версию. Эксперимент позволил понять, какие сегменты экосистемы Биткойна готовы к использованию replace-by-fee, а какие – нет.

Приведенные ниже результаты основаны на примере личного опыта и не являются официальным научным анализом.

Green Address с точки зрения отправителя

Прежде всего, конечно же, GreenAddress был протестирован с точки зрения отправителя (тестирование проводилось в версии кошелька с расширением Chrome).

Опция GreenAddress replace-by-fee в нём уже включена по умолчанию. Пользователям, которые не хотят применять эту функцию, необходимо отключить её в разделе «Настройки». При включённой функции каждая отправляемая из кошелька транзакция помечается флагом replace-by-fee. Так узлы сети и майнеры понимают, что данную транзакцию можно заменить конкурирующей транзакцией с более высокой комиссией.

После отправки первой трансакции replace-by-fee, автор был автоматически перенаправлен к экрану «Транзакции», в котором отображаются все предыдущие трансакции кошелька. Под транзакцией replace-by-fee (всё ещё неподтвержденной) появилась подпись «повысить комиссию».

Несмотря на то, что оригинальная опция replace-by-fee, например, аналогичная такой функции в Bitcoin Core, позволяет замену любой неподтвержденной транзакции (даже если это означает, что неподтвержденные транзакции «отменяются»), пользователи GreenAddress имеют возможность только повторно отправить биткоины из тех же самых входов в те же самые выходы, но с более высокой комиссией. Это позволяет пользователю «повысить» трансакцию и увеличивает вероятность, что она будет включена в блок.

После нажатия на кнопку «повысить комиссию» открывается мини-меню. В верхней части меню отображается информация о времени подтверждения транзакции. Меню позволяет повысить комиссию в 1.5, 2 или 3 раза.

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

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

Что делают пулы

Самого по себе ПО кошелька недостаточно для замены трансакции (или повышения комиссии). В действительности, активность функции replace-by-fee в сети Биткоина зависит от майнеров.

Несколько тестовых трансакций показали, что большинство майнеров в настоящее время не поддерживают политику replace-by-fee. Все крупные китайские пулы - AntPool, F2Pool, BTCC и BW.com, а также KnCMiner – абсолютно игнорируют повышенные транзакции. На данный момент они составляют более 75% мощности сети.

Другие пулы всё же применяют replace-by-fee, предположительно, оригинальную версию. К таким пулам относятся BitFury, SlushPool, BitClub и CKPool, составляющие около 20% всей мощности хэширования. (Оставшиеся 5% контролируются пулами или майнерами, каждый из которых имеет менее 1% мощности).

Что же это означает?

Несмотря на то, что 20% могут показаться не очень большой цифрой, на самом деле это не так плохо, если учитывать основную цель функции replace-by-fee: «повышение» комиссии для гарантии подтверждения трансакции.

Конечно, при применении политики replace-by-fee только 20% мощности сети, существует только 20-процентная вероятность того, что именно следующий майнер подхватит повышенную трансакцию. Однако, с другой стороны, вероятность того, что повышенная транзакция будет включена в блок в в течение часа, составляет 3 из 4. И более чем вероятно, что она будет включена в блок в течение нескольких часов.

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

Между тем, пользователи, которые хотят использовать replace-by-fee для возврата неподтвержденных транзакций, имеют только 20% вероятность успешного результата.

Безопасность кошелька

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

Однако из всех протестированных кошельков такой флаг имеют только Mycelium (в Android) и, конечно же, GreenAddress (приложение Chrome). Оба эти кошелька отчетливо демонстрируют трансакции, возможные для replace-by-fee, предоставляя пользователям возможность, при желании, не принимать такую транзакцию до её подтверждения.

Что интересно, клиент Bitcoin Core не помечает входящие оригинальные трансакции replace-by-fee, так же как и его форки Bitcoin Classic, Bitcoin XT и Bitcoin Unlimited. Эти кошельки просто отображают и оригинальные, и заменяемые трансакции как неподтвержденные. Конечно, только до тех пор, пока одна из этих трансакций не будет включена в блок, и в этот момент подтверждённая трансакция отображается как подтвержденная, а конфликтующая трансакция отклоняется.

Кошлельки Blockchain, Bither, Blocktrail, Breadwallet, Coinbase, Copay и Electrum никак не отмечают трансакции с возможностью замены. Blocktrail, Bither и Breadwallet просто демонстрируют и оригинальные, и повышенные транзакции как две разные входящие транзакции, тогда как Copay и Coinbase их просто игнорируют. Что касается Electrum, здесь всё зависит от того, к какому серверу Electrum присоединено ПО кошелька, однако в большинстве случаев он отображает самую последнюю трансакцию. На вопрос, почему их ПО не помечает трансакции replace-by-fee, разработчики Bitcoin Core и Electrum отвечают, что неподтвержденным трансакциям нельзя доверять, а система отметок флагами может сформировать у пользователей ошибочное представление о безопасности. Незадолго до публикации данной статьи разработчики Bitcoin Core дали понять, что RBF-уведомление всё-таки скоро будет добавлено.

BitcoinWallet (Android) применяет другую стратегию: он вовсе не отображает отмеченные транзакции replace-by-fee, если и до тех пор пока у них не будет хотя бы одного подтверждения.

Платежные операторы

Автор протестировал два крупных платежных оператора: BitPay и Coinbase. На этот раз он не пытался заменить («повысить») транзакцию. Он просто хотел посмотреть, как они работают с флагом. Возможно, это никого не удивит, но руководитель BitPay Стивен Пэр (Stephen Pair) поддерживает оригинальную функцию replace-by-fee – похоже, что данная компания без проблем работает с платежами replace-by-fee.

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

На всё ушло буквально несколько минут - возможно, они понадобились на поиск блока, после чего автор получил подтверждение на электронную почту. Предположительно, причина этому – то, что BitPay действительно ждёт «за экраном» до тех пор, пока трансакция не будет включена в блок, чтобы в этом убедиться.

Что касается Coinbase, они недостаточно хорошо обработали первую транзакцию replace-by-fee: отправленный несколько недель назад платеж за RedditGold совсем не был признан. Ни до включения, ни после включения в блок. В конечном итоге, заказ был отменён.

Тем не менее, судя по второй попытке, после этого Coinbase оптимизировала свой сервис: пожертвование в Wikimedia получило моментальное подтверждение. Более того, на экране появилось сообщение о том, что подтверждения пришлось ждать из-за низкой комиссии. Неправильная причина, но правильный сервис.

Обозреватели блокчейна

В конце тестирования автор решил проверить, как разные обозреватели блокчейна работают с оригинальными трансакциями replace-by-fee.

Первый обозреватель, Blocktrail, четко визуализирует транзакции replace-by-fee. Это единственный из обозревателей, который не только помечает трансакции с возможностью двойных трат, но также и предупреждает пользователей об обнаружении конфликтующей трансакции. И, как только такая трансакция включается в блок, становится ясно, что замененная трансакция имела двойную трату и не подтвердится.

Blockchain.info не помечает заменяемые трансакции, а только показывает, что трансакция не подтверждена. Только после того, как конфликтующая трансакция отправлена, Blockchain.info отображает надпись, предупреждающую пользователей о возможности двойной траты, о возможности replace-by-fee никак не упоминается. После включения конфликтующей трансакции в блок, Blockchain.info не отправляет никаких дополнительных предупреждений; все выглядит так, как будто все еще имеется небольшой шанс на подтверждение трансакции.

Что касается других обозревателей... Аналогично Blockchain.info, Blockcypher не использует флаг replace-by-fee, однако он отображает предупреждение о двойной трате после отправки второй транзакции. Обозреватели блокчейна с открытым исходным кодом BitPayinsight.bitpay.com, bitcoinchain.com и chain.so отображают только первоначальную трансакцию, не имеющую флага replace-by-fee.

Источник: bits.media