Jump to content
sankopolo

FAQ: REPLACE-BY-FEE транзакции

Recommended Posts

Этот FAQ был написан мной с нуля 03.03.19. Замечания и дополнения приветствуются.

Серым цветом выделены технические подробности, которые читать не обязательно.

Также можно ознакомиться: зависла/не подтверждается транзакция. Что делать?

 

Что такое replace-by-fee (opt-in RBF) транзакция?
Это транзакция, которая при создании была помечена как заменяемая (replaceable).

 

Чем отличаются такие транзации?
Они легко могут быть изменены отправителем произвольным образом (практически - и отменены) в любой момент до включения в блок (получения подтверждений). На самом деле при этом происходит двойная трата (даблспенд); только в отличие от обычной транзакции, здесь это признано нормальным (BIP-125, англ.).

 

Зачем мне такие транзакции?
Они позволяют в большинстве случаев поднять комиссию нажатием кнопки в интерфейсе кошелька в случае необходимости. Как использовать на примере bitcoin core:

Quote

Для Bitcoin core: открываем вкладку с транзакциями, правой кнопкой по проблемной транзакции, затем "Increase transaction fee".


Кошелек сам создаст новую транзакцию, в которой будет больше комиссия и меньше сдача. Входы и остальные выходы останутся те же. Потом он её разошлёт и ноды заменят старую на новую в своём мемпуле.Если у транзакции не было сдачи, будет сообщение об ошибке и вопрос надо будет решать по-другому: создать вручную транзакцию через Coinb.in, затем разослать. Для RBF-транзакций с рассылкой проблем нет.

 

Какие минусы по сравнению с обычными?

  1. В редких случаях вы можете дольше ждать зачисления средств на сервисе. Если обычные неподтвержденные транзакции могут приниматься некоторыми сервисами, то для replace-by-fee транзакции точно придется ждать подтверждения.
  2. Если кто-то завладел вашими приватными ключами, то срочно переводить монеты на новый адрес надо обычной транзакцией. Иначе ваша транзакция может быть заменена транзакцией похитителя.

 

В каких блокчейн-эксплорерах можно посмотреть заменённые транзакции?

tradeblock.com, bitaps.com и btc.com

 

Может ли в рамках этого механизма быть отменена неподтвержденная обычная транзакция?
Да, может. В том случае, если у неё есть неподтвержденная транзакция-предок, которая была помечена как replace-by-fee. Поэтому если вам отправили транзакцию с хорошей комиссией и она сама не помечена как RBF -- это ещё совсем не значит, что она обязательно потвердится. Не спешите делать перевод/отдавать товар - ждите подтверждений. Не верите? См опять же тут (англ), раздел Summary -> Inherited signaling.

 

При каких условиях replace-by-fee транзация А заменяется новой конкурирующей транзакцией B в мемпуле?
На каждой ноде могут быть установлены свои правила.
Условие по умолчанию (установлено на большинстве нод) такое: у B должна быть больше комиссия.
Более точно - абсолютная комиссия транзакции B должна быть больше хотя бы на (размер транзакции B)*(minimum relay fee). Minimum relay fee на большинстве нод установлен в 1 сатоши. Ещё более точный ответ см здесь (англ, раздел Implementation details).

 

Обязаны ли майнеры заменять replace-by-fee транзакции?
Нет. Но им выгодна такая замена.

 

Все ли майнеры принимают такие транзакции?
Принимают - да. Но заменяют на новые не все.
Мной были проверены и заменяют:

  • btc.com
  • poolin
  • f2pool
  • btc.top
  • slush
  • viabtc
  • dpool
  • bitclub
  • bitcoin.com
  • bixin

Если не ошибаюсь, антпул был против введения replace-by-fee. Механизм replace-by-fee выключен в сети Bitcoin Cash. Поэтому единственный крупный майнер, который не заменяет транзакции - antpool.com. В моих экпериментах замена антпулом была сделана в 1 случае из 4. Видимо, разные ноды у них сконфигурированы по-разному. Для майнеров нет никакой разницы - просто ли увеличивается комиссия за счет сдачи или же происходит замена адреса получателя.

 

Что мешает майнерам так же заменять обычные транзакции?
На самом деле - ничего. Но (можно считать это джентельменским соглашением) они не заменяют.

 

RBF придумал сам Сатоши?
Нет. У него был предусмотрен механизм замены транзакций, но другой.

 

RBF, Opt-in RBF, opt-in full RBF, full RBF, full opt-in rbf - это всё одно и то же?
Работающий механизм есть всего один, хотя во время его разработки было много разных предложений - как именно реализовать. С тех пор осталась эта путаница. Ещё некоторые зачем-то называют случаи даблспенда для обычных транзакций full RBF.

 

Как именно помечаются replace-by-fee транзакции?
Это описано в
BIP-125 (англ): поставить у любого входа в поле nSequence любое значение меньше 0xfffffffe. Но так как то же поле используется для всяких других вещей, то на практике большиство кошельков ставит в поле nSequence каждого входа значение 0xfffffffd вместо 0xffffffff. Для примера (2 входа, 1 выход, без подписей):
0100000002a813c380ba5d8c0698004b12d0bbb69ba7434ed5126884370117d932d004402c000000001976a9141238e2a3bcbb814aedfb6f94eb453530602d45b088ac
ffffffffd51680b172158a4c8de3e6b4417f435a2a27c135cb677f01f936b39de1fc5a1d000000001976a9141238e2a3bcbb814aedfb6f94eb453530602d45b088acffffffff01c0270900000000001976a9143eed7387440ca17639fe59e45961dced3bb0cbd288ac00000000
0100000002a813c380ba5d8c0698004b12d0bbb69ba7434ed5126884370117d932d004402c000000001976a9141238e2a3bcbb814aedfb6f94eb453530602d45b088ac
fdffffffd51680b172158a4c8de3e6b4417f435a2a27c135cb677f01f936b39de1fc5a1d000000001976a9141238e2a3bcbb814aedfb6f94eb453530602d45b088acfdffffff01c0270900000000001976a9143eed7387440ca17639fe59e45961dced3bb0cbd288ac00000000
Здесь видим fdffffff вместо fffffffd из-за того, что 4 байта nSequence хранятся в обратном порядке.

 

Edited by sankopolo

Share this post


Link to post
Share on other sites

@sankopolo

если эта тема претендует на FAQ, то есть замечания и дополнения:

 

1) имеет смысл упомянуть, что увеличить комиссию из обычных клиентов (Bitcoin Core, Electrum) можно только в случае если в оригинальной RBF транзакции есть сдача, для транзакций без сдачи стандартные варианты не работают, только руками.

 

2) 

1 час назад, sankopolo сказал:

(практически - и отменены)

1 час назад, sankopolo сказал:

Может ли в рамках этого механизма быть отменена обычная транзакция?
Да, может. В том случае, если у неё есть неподтвержденная транзакция-предок, которая была помечена как replace-by-fee.

Даже красным цветом, ух. Каким образом транзакция может быть отменена?   

Может быть создана любая другая новая с прежними выходами, но удалить любую транзакцию из мемпула невозможно, поэтому это не отмена, а двойная трата RBF транзакции на любой другой адрес, если это подразумевается под "отменой".  

 

Вносите изменения в первое сообщение, переписку позже потру.

Share this post


Link to post
Share on other sites
9 minutes ago, e46btc said:

 

1) имеет смысл упомянуть, что увеличить комиссию из обычных клиентов (Bitcoin Core, Electrum) можно только в случае если в оригинальной RBF транзакции есть сдача, для транзакций без сдачи стандартные варианты не работают, только руками.

  

Да, это добавлю, спасибо.

 

11 minutes ago, e46btc said:

Даже красным цветом, ух. Каким образом транзакция может быть отменена?   

Может быть создана любая другая новая с прежними выходами, но удалить любую транзакцию из мемпула невозможно, поэтому это не отмена, а двойная трата RBF транзакции на любой другой адрес, если это подразумевается под "отменой".  

 

Речь более точные термины или про возможность/невозможность удаления из транзакции без пометки rbf из большинства мемпулов?

 

Если по терминам: возьмём ситуацию, когда помеченная rbf транзакция Т1 с одним выходом на адрес А заменяется [в рамках механизма rbf в большистве мемпулов] транзакцией Т2 на другой адрес Б. Вероятность записи в блокчейн Т2 будет около 85-90% (это при условии, что у Т1 хорошая комиссия; если маленькая, то вероятность ещё выше). Называть ли это отменой? На мой взгляд, да.

 

Если про возможность удаления транзакции без пометки rbf из большинства мемпулов: посылаем транзакцию Т1 с пометкой rbf на адрес А; тратим выход Т1 с адреса А транзакцией Т2 без пометки rbf на адрес Б. Может ли Т2 быть удалена из мемпулов? Да: посылаем транзакцию Т3, которая тратит те же выходы, что и Т1 и переводит монеты на адрес В. В соответствии с BIP-125 Т2 будет удалена из мемпула вместе с Т1.

Share this post


Link to post
Share on other sites
43 минуты назад, sankopolo сказал:

Речь более точные термины или про возможность/невозможность удаления из транзакции без пометки rbf из большинства мемпулов? 

Отправителю невозможно удалить любую отправленную транзакцию из любого мемпула. Только сама нода по своему усмотрению может удалить что-то из своего мемпула.  Но отправитель может сделать двойную трату, но это не про отмену.

 

43 минуты назад, sankopolo сказал:

Да: посылаем транзакцию Т3, которая тратит те же выходы

Это не отмена, а двойная трата.  Отмены транзакций в биткойне нет.

 

43 минуты назад, sankopolo сказал:

В соответствии с BIP-125 Т2 будет удалена из мемпула вместе с Т1.

Это очень узкий пример, который только вводит в заблуждение. 

T2 будет не отменена, Т2 будет невозможна в принципе в этой ситуации, так как при отправке Т3 перестает существовать Т1.

Соответственно и у T2 не остается валидных UTXO.  Это все совсем не про RBF.

 

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

Если это FAQ, то как мне кажется должно быть всё предельно ясно.  Так как кто-нибудь прочитает и подумает что в сети Биткойна можно транзакцию отменить.   Нет. Отменить транзакцию нельзя.

Share this post


Link to post
Share on other sites

@e46btc Ок, то есть это исключительно вопрос терминологии. Но он не такой простой, как кажется.

Вот смотрите - в кошельках сделаны кнопки "bump fee", "increase transaction fee", а не "double spend and bump fee". Хотя более точно происходящее при нажатии на кнопку является ("общественно позволяемым", в отличие от обычного) opt-in rbf-даблспендом.

 

То же самое и с "отменой". С точки зрения практической - это отмена. Если везде это назвать "двойной тратой" - это тоже введёт в заблуждение.

 

Я подумаю, как дополнить текст так, чтобы простому пользователю была понятна и практическая сторона, и теоретическая.

Share this post


Link to post
Share on other sites

@sankopolo существенная разница в том, что в случае простого увеличения комиссии не меняются адреса:  ни адреса отправителя (например, несколько входов) ни адрес(а) получателя,  для обычного пользователя это выглядит как та же самая транзакция но с другим номер и другой комиссией, не меняется суть данной финансовой операции, вложенные в нее разумный смысл.     Каким это способом сделано - это технические подробности и не более того. 

 

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

 

И изначальная идея RBF именно в увеличении комиссии. 

А то, что сейчас не проверяются адреса транзакции (для целей RBF) - это ИМХО недостаток имплементации, но видимо никому нет особого дела до этого.

 

FAQ по каким-то глубоко техническим вещам не имеет смысла, так как advanced пользователи могут сами вникнуть в суть вопроса, а обычные пользователи только запутаются.  Поэтому и FAQ , если это именно FAQ,  в первую очередь должен быть простым и понятным ИМХО.   А про двойную трату есть отдельная тема.

Share this post


Link to post
Share on other sites
32 minutes ago, e46btc said:

T2 будет не отменена, Т2 будет невозможна в принципе в этой ситуации, так как при отправке Т3 перестает существовать Т1.

Соответственно и у T2 не остается валидных UTXO.  Это все совсем не про RBF. 

А вот здесь вы не правы. Это именно что про RBF. В BIP-125 прямо описана такая ситуация - искать по словам Inherited signaling.

BIP-125 мог бы быть и другим - там могла бы быть запрещена замена replaceable-транзакций с не-replaceable-потомками. Или вообще могла бы быть запрещена замена с любыми потомками.

 

С точки зрения пользователя - разница очень большая. Хотя бы потому, что  рамках механизма RBF быть отменена обычная транзакция (или, как вы ещё это странно назвали "будет невозможна в принципе в этой ситуации"). Суть в том, что посмотреть на комиссию и rbf-флаг недостаточно.

7 minutes ago, e46btc said:

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

Да, но это разница есть только для пользователя. Нодам и майнерам - без разницы. То есть вот есть этот механизм - и пользотель делает всё, что хочет в широких пределах. Хочет - увеличичает комиссию (хотя технически это на самом деле особый вид-даблспенда), хочет - отменяет (хотя технически это на самом деле опять особый вид-даблспенда)...

11 minutes ago, e46btc said:

 

И изначальная идея RBF именно в увеличении комиссии. 

А то, что сейчас не проверяются адреса транзакции (для целей RBF) - это ИМХО недостаток имплементации, но видимо никому нет особого дела до этого. 

Да, изначальная идея такая. Только вот в итоге был принят (после долгих обсуждений и споров) именно такой - весьма широкий вариант. И в соответствии с договоренностями был написан соответствующий код. То есть это не баг, а фича. Хотя и спорная.

14 minutes ago, e46btc said:

 

FAQ по каким-то глубоко техническим вещам не имеет смысла, так как advanced пользователи могут сами вникнуть в суть вопроса, а обычные пользователи только запутаются.  Поэтому и FAQ , если это именно FAQ,  в первую очередь должен быть простым и понятным ИМХО.   А про двойную трату есть отдельная тема. 

Да, именно поэтому я назвал "отмену" - отменой. Тема про двойную трату - эта? Туда тоже будет ссылка.

Share this post


Link to post
Share on other sites
26 минут назад, sankopolo сказал:

А вот здесь вы не правы. Это именно что про RBF. В BIP-125 прямо описана такая ситуация - искать по словам Inherited signaling.

BIP-125 мог бы быть и другим - там могла бы быть запрещена замена replaceable-транзакций с не-replaceable-потомками. Или вообще могла бы быть запрещена замена с любыми потомками

Можете считать что я трижды не прав, но есть https://github.com/bitcoin/ и есть тот факт, что если транзакция не имеет валидного utxo, то она не может находится в мемпуле, безо всяких условий.   Хоть BIP-125, хоть не BIP-125.   Именно по этой причине любая нода выкинет из мемпула неподтвержденную транзакцию двойной траты хоть оригинальную, хоть вторую, хоть десятую (хоть с RBF, хоть без RBF, забудьте про RBF) с ошибкой Missing inputs ровно после того, как utxo будет потрачен и включен в любой блок.  К тому же ничему не мешает существованию в разных мемпулах и RBF и не-RBF транзакций с одними и теми же входами. 

 

У меня нет цели вас переспорить и что-либо доказать.  Можете думать как вам нравится.  В свою очередь я сделал сотни и видел тысячи транзакций двойной траты и с RBF и без RBF.   Но:

 

26 минут назад, sankopolo сказал:

Да, именно поэтому я назвал "отмену" - отменой.

Отмена без расшифровки не может быть в FAQ.  Бесспорный факт что транзакции в сети биткойн неотменяемые.

 

Если это FAQ, то все должно быть корректно.  Либо можете переименовать тему во что-то типа "Что я думаю и как мне кажется по поводу RBF-транзакций", потому что в FAQ не может быть противоречивой информации, потому что это уже как бы непрофессионально, подразумевается что FAQ видимо для широкого круга пользователей и подразумевается что там должно быть все правильно.

Share this post


Link to post
Share on other sites
7 minutes ago, e46btc said:

Можете считать что я трижды не прав, но есть https://github.com/bitcoin/ и есть тот факт, что если транзакция не имеет валидного utxo, то она не может находится в мемпуле, безо всяких условий.   Хоть BIP-125, хоть не BIP-125.  

При чём здесь это вообще? Я же выше понятно написал, что разумная обработка данной ситуации была возможна совершенно разная:

30 minutes ago, sankopolo said:

там могла бы быть запрещена замена replaceable-транзакций с не-replaceable-потомками. Или вообще могла бы быть запрещена замена с любыми потомками.

Именно в BIP-125 был выбран конкретный способ обработки такой ситуации. Что здесь может быть непонятно?

10 minutes ago, e46btc said:

Отмена без расшифровки не может быть в FAQ.  Бесспорный факт что транзакции в сети биткойн неотменяемые.

Мы вроде выше выяснили, что это исключительно вопрос терминологии. Вам почему-то нравится называть "double spend and bump fee" просто "bump fee", а "double spend and cancel" называть просто "cancel" вы почему-то не хотите. Это не про факты вообще, а про личные терминологические предпочтения.

14 minutes ago, e46btc said:

 Либо можете переименовать тему во что-то типа "Что я думаю и как мне кажется по поводу RBF-транзакций", потому что в FAQ не может быть противоречивой информации, потому что это уже как бы непрофессионально, подразумевается что FAQ видимо для широкого круга пользователей и подразумевается что там должно быть все правильно

С точки зрения фактов здесь там нет ничего неправильного или некорректного. Есть вещи, которые (пока только с вашей точки зрения) я неправильно называю. Если мнения других продвинутых пользователей будут схожи с вашим - я поправлю названия. @Har01d@Old Miner @jam72 @rammendoинтересны ваши мнения.

2 hours ago, e46btc said:

Вносите изменения в первое сообщение, переписку позже потру. 

Не надо ничего тереть - спама и/или ругани здесь нет, а в разных аргументированных взглядах ничего плохого нет.

Share this post


Link to post
Share on other sites
7 минут назад, sankopolo сказал:

Не надо ничего тереть - спама и/или ругани здесь нет

Поддерживаю. На удивление тематический диалог)

Share this post


Link to post
Share on other sites

а что если при отправке галочка на RBF стояла, а вовремя изменения комиссии пишет Transaction does not have a change output ??

Share this post


Link to post
Share on other sites

Зачем вообще нужны RBF-транзакции? В сравнении с обычными, они одинаково ненадежные до первого подтверждения, и одинаково надежные после. И те, и те можно повторно отправить с другой комиссией

Share this post


Link to post
Share on other sites

@Fermer004 Поздно отвечаю - ваша проблема уже решена, но может пригодиться кому-то ещё.

On 6/28/2019 at 3:36 PM, Fermer004 said:

Transaction does not have a change output

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

On 6/29/2019 at 8:09 PM, f8192 said:

Зачем вообще нужны RBF-транзакции? В сравнении с обычными, они одинаково ненадежные до первого подтверждения, и одинаково надежные после. И те, и те можно повторно отправить с другой комиссией

Чтобы не иметь проблем с комиссиями (и легко их решать).

В случае с RBF можно ставить комиссии поменьше - экономить. Если вдруг подвисла, ткнул кнопку - комиссия повысилась - транзакция прошла.

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

Недостатков же по сравнению с обычными практически нет.

Share this post


Link to post
Share on other sites
1 час назад, sankopolo сказал:

Чтобы не иметь проблем с комиссиями (и легко их решать).

В случае с RBF можно ставить комиссии поменьше - экономить. Если вдруг подвисла, ткнул кнопку - комиссия повысилась - транзакция прошла.

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

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

Share this post


Link to post
Share on other sites
20 minutes ago, f8192 said:

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

Есть разница!

  1. С RBF транзакциями почти все ноды сразу же примут новую транзакцию в мемпул и выкинут старую.
  2. С обычными транзакциями большинство нод не примут новую транзакцию (но это зависит от многих вещей в т ч от комиссии старой).

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Topics

    • [DASH] Dash | X11 | Мгновенные транзакции

      Официальный сайт | Исходный код | Официальный форум | Twitter | Facebook | Instagram | Google+ | Reddit | Telegram | Discord Chat | Капитализация криптовалюты | Калькулятор майнинга | Дорожная карта | YouTube | Wiki | Точки приёма DASH | Мониторинг мастернод | Whitepaper   В теме действуют все Правила форума! Перед тем как задать вопрос, посмотрите НОВИЧКИ Bits.Media, все сюда,  Что такое "Форки Bitcoin" . Уважайте своё и чужое время. Для обсуждения

      in X11, X13, X15

    • Alipay будет блокировать все транзакции, связанные с торговлей криптовалютами

      Платежное подразделение компании Alibaba – Alipay – сообщило, что будет блокировать все транзакции, связанные с торговлей биткоином и прочими криптовалютами. Таким образом компания в очередной раз отметила крайне негативное отношение к криптовалютам. Alipay добавила, что внимательно наблюдает за внебиржевой торговлей и не позволит осуществлять деятельность, которая нарушает действующие законы и правила.   Отметим, что за день до этого биржа Binance запустила P2P-сервис,

      in Новости криптовалют

    • Chainalysis будет отслеживать транзакции десяти токенов ERC-20

      Аналитическая компания Chainalysis расширила количество поддерживаемых токенов ERC20 в своём решении для противодействия отмыванию денег.   Всего было добавлено 10 токенов, в том числе Maker, Dai, 0x, OmiseGo, Basic Attention Token и другие. В будущем Chainalysis планирует предоставить своим клиентам возможности работать с активами, которые в сервисе пока недоступны. В течение трех месяцев компания реализует поддержку отслеживания транзакций XRP, DOGE, ETC и частично анонимных моне

      in Новости криптовалют

    • Отмена транзакции до подтверждения

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

      in Биткоин

    • Виталик Бутерин: рост комиссий за транзакции ограничивает распространение Эфириума

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

      in Новости криптовалют

×
×
  • Create New...