FixedFloat Blog

Наши новости, руководства и инструкции

Замена и отмена транзакции Bitcoin

Для чего нужен Replace by fee?

Возникает ситуация, когда требуется отменить или заменить транзакцию. Это может быть вызвано тем, что транзакции долгое время не попадают в блок. Все операции, которые после запуска не добавились в блок, считаются неподтверждёнными. Неподтвержденные транзакции чаще всего случаются именно из-за низких комиссий. У таких транзакций всё же есть возможность стать обработанными.
В блокчейнах Bitcoin, Ethereum и других существует механизм, который позволяет заменить еще неподтвержденную транзакцию другой транзакцией с большей комиссией (transaction fee). Этот механизм называется Replace by Fee.

Ускорение транзакции за счёт повышения комиссии

Замена транзакций была предусмотрена еще создателем системы Сатоши Накамото, но выключена в определенный момент. Затем она была доработана до RBF и включена в код Bitcoin Core 0.12 и старше. Для замены в данных транзакции предусмотрено специальное поле nSequence, которое сигнализирует о том, какая транзакция старше. Чтоб транзакция была потенциально заменяемой, значение nSequence должно быть меньше (0xffffffff - 1).

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

Replace by fee добавляет к уже имеющейся транзакции новую комиссию. Во время создания транзакции в кошельке добавляется коментарий, в котором указывается, что пользователь согласен в случае зависания транзакции повысить комиссию. Для этого, например, в кошельке Electrum есть надстройка "edit fees manually", а также "replace by fee".

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

Активируя опцию RBF, вы сообщаете сети, что готовы платить больше в случае задержки, и новый перевод автоматически принимается вместо старого. Такую функцию имеет биткоин-кошельки Bitcoin core, Electrum и Green Address.

Ускорение транзакции с помощью Child Pays for Parent

Большинство транзакций не только отправляют BTC получателю, но и возвращают "сдачу". Эту сдачу можно потратить на следующую транзакцию. Функцией CPFP может воспользоваться как отправитель, так и получатель средств.

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

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

На данный момент не все майнеры поддерживают CPFP. Однако их достаточно для того, чтобы ваша транзакция подтвердилась в ближайших блоках.

Отмена транзакции

Если транзакция Bitcoin имеет подтверждение, то отмена невозможна. Но если транзакция не имеет подтверждений, то можно это сделать следующим способом: отправить повторный платёж с того же выхода адреса на любой свой адрес, но с более высокой комиссией, чем у предыдущей транзакции. Первой пройдёт та транзакция, которая имеет более высокую комиссию, а вторая ликвидируется автоматически.