Title: FAQ: всё про REPLACE-BY-FEE транзакции Post by: sankopolo on March 03, 2019, 05:41:53 PM FAQ: всё про REPLACE-BY-FEE транзакции
Этот FAQ был написан мной с нуля 03.03.19. Замечания и дополнения приветствуются. Серым цветом выделены технические подробности, которые читать не обязательно. FAQ по зависшим транзакциям (любым - не только rbf) - тут (http://bitcointalk.org/index.php?topic=5112328.0) Что такое replace-by-fee (opt-in RBF) транзакция? Это транзакция, которая при создании была помечена как заменяемая (replaceable). Чем отличаются такие транзации? Они легко могут быть изменены отправителем произвольным образом (практически - и отменены) в любой момент до включения в блок (получения подтверждений). На самом деле при этом происходит двойная трата (даблспенд); только в отличие от обычной транзакции, здесь это признано нормальным (BIP-125, англ.). Зачем мне такие транзакции? Они позволяют в большинстве случаев поднять комиссию нажатием кнопки в интерфейсе кошелька в случае необходимости. Как использовать на примере bitcoin core: Quote открываем вкладку с транзакциями, правой кнопкой по проблемной транзакции, затем "Increase transaction fee". Кошелек сам создаст новую транзакцию, в которой будет больше комиссия и меньше сдача. Входы и остальные выходы останутся те же. Потом он её разошлёт и ноды заменят старую на новую в своём мемпуле.Если у транзакции не было сдачи, будет сообщение об ошибке и вопрос надо будет решать по-другому: создать вручную транзакцию через Coinb.in, затем разослать. Для RBF-транзакций с рассылкой проблем нет.Какие минусы по сравнению с обычными?
В каких блокчейн-эксплорерах можно посмотреть заменённые транзакции? https://tradeblock.com (http://tradeblock.com/bitcoin/), bitaps.com (http://bitaps.com) и btc.com (http://btc.com). Может ли в рамках этого механизма быть отменена обычная транзакция? Да, может. В том случае, если у неё есть неподтвержденная транзакция-предок, которая была помечена как replace-by-fee. Поэтому если вам отправили транзакцию с хорошей комиссией и она сама не помечена как RBF -- это ещё совсем не значит, что она обязательно потвердится. Не спешите делать перевод/отдавать товар - ждите подтверждений. Не верите? См опять же тут (http://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki) (англ), раздел Summary -> Inherited signaling. При каких условиях replace-by-fee транзация А заменяется новой конкурирующей транзакцией B в мемпуле? На каждой ноде могут быть установлены свои правила. Условие по умолчанию (установлено на большинстве нод) такое: у B должна быть больше комиссия. Более точно - абсолютная комиссия транзакции B должна быть больше хотя бы на (размер транзакции B)*(minimum relay fee). Minimum relay fee на большинстве нод установлен в 1 сатоши. Ещё более точный ответ см здесь (http://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki) (англ, раздел Implementation details). Обязаны ли майнеры заменять replace-by-fee транзакции? Нет. Но им выгодна такая замена. Все ли майнеры принимают такие транзакции? Принимают - да. Но заменяют на новые не все. Мной были проверены и заменяют:
Что мешает майнерам так же заменять обычные транзакции? На самом деле - ничего. Но (можно считать это джентельменским соглашением) они не заменяют. RBF придумал сам Сатоши? Нет. У него был предусмотрен механизм замены транзакций, но другой. RBF, Opt-in RBF, opt-in full RBF, full RBF, full opt-in rbf - это всё одно и то же? Работающий механизм есть всего один, хотя во время его разработки было много разных предложений - как именно реализовать. С тех пор осталась эта путаница. Ещё некоторые зачем-то называют случаи даблспенда для обычных транзакций full RBF. Как именно помечаются replace-by-fee транзакции? Это описано в BIP-125 (http://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki) (англ): поставить у любого входа в поле nSequence любое значение меньше 0xfffffffe. Но так как то же поле используется для всяких других вещей (http://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki), то на практике большиство кошельков ставит в поле nSequence каждого входа значение 0xfffffffd вместо 0xffffffff. Для примера (2 входа, 1 выход, без подписей): 0100000002a813c380ba5d8c0698004b12d0bbb69ba7434ed5126884370117d932d004402c00000 0001976a9141238e2a3bcbb814aedfb6f94eb453530602d45b088acffffffffd51680b172158a4c8de3e6b4417f435a2a27c135cb677f01f936b39de1fc5a1d000000001976a 9141238e2a3bcbb814aedfb6f94eb453530602d45b088acffffffff01c0270900000000001976a9143eed7387440ca17639fe59e45961dced3bb0cbd288ac0000000 0 0100000002a813c380ba5d8c0698004b12d0bbb69ba7434ed5126884370117d932d004402c00000 0001976a9141238e2a3bcbb814aedfb6f94eb453530602d45b088acfdffffffd51680b172158a4c8de3e6b4417f435a2a27c135cb677f01f936b39de1fc5a1d000000001976a 9141238e2a3bcbb814aedfb6f94eb453530602d45b088acfdffffff01c0270900000000001976a9143eed7387440ca17639fe59e45961dced3bb0cbd288ac0000000 0 Здесь видим fdffffff вместо fffffffd из-за того, что 4 байта nSequence хранятся в обратном порядке. Title: Re: FAQ: всё про REPLACE-BY-FEE транзакции Post by: sankopolo on March 03, 2019, 05:56:07 PM Резерв
Title: Re: FAQ: всё про REPLACE-BY-FEE транзакции Post by: sankopolo on March 04, 2019, 04:19:59 PM А зачем новую тему создавать? Ведь это по сути расширение к вот этой (https://bitcointalk.org/index.php?topic=5112328.msg49837098#msg49837098). Было бы там - выглядело бы органично, а так все разорвано и разбросано, что есть не хорошо, ИМХО Та и так сильно разрослась. Если ещё и всё это туда впихнуть - будет совсем каша. Плюс информация по конкретным пулам, разные подробности - туда уже совсем плохо подходят. А выкидывать жалко - слишком дорого добывалась эта информация. Лучше в нужных местах ссылки межлу темами проставлю. Title: Re: FAQ: всё про REPLACE-BY-FEE транзакции Post by: Xal0lex on March 04, 2019, 05:21:56 PM А зачем новую тему создавать? Ведь это по сути расширение к вот этой (https://bitcointalk.org/index.php?topic=5112328.msg49837098#msg49837098). Было бы там - выглядело бы органично, а так все разорвано и разбросано, что есть не хорошо, ИМХО Не влезет туда, там и так уже более 11.000 символов. Title: Re: FAQ: всё про REPLACE-BY-FEE транзакции Post by: xandry on March 19, 2019, 10:20:54 AM Хорошая тема. Можно было бы ещё включить информацию про то, какие кошельки это поддерживают, а какие нет и как это включать, отсюда: All about "stuck" transactions and what you can do to fix them (https://bitcointalk.org/index.php?topic=1802212.0).
Title: Re: FAQ: всё про REPLACE-BY-FEE транзакции Post by: sankopolo on March 19, 2019, 10:40:53 AM Хорошая тема. Можно было бы ещё включить информацию про то, какие кошельки это поддерживают, а какие нет и как это включать, отсюда: All about "stuck" transactions and what you can do to fix them (https://bitcointalk.org/index.php?topic=1802212.0). Спасибо. Про bitcoin core и electrum скоро добавлю. Про остальные кошельки - когда проверю сам или проверит кто-нибудь ещё. Копировать оттуда информацию по кошелькам без перепроверки не хочу - она могла устареть. И, пользуясь случаем - предлагаю всем поучаствовать в конкурсе (http://bitcointalk.org/index.php?topic=5121816). |