Glossário / Transações e taxas
Substituição por taxa maior
Outros nomes: Replace-by-fee, RBF, Replace by fee, Opt-in replace by fee, Full-RBF, Substituição por taxa.
- O que é a substituição por taxa maior?
- A substituição por taxa maior permite trocar uma transação não confirmada por uma versão dela que paga mais, e as versões modernas do Bitcoin Core retransmitem essa substituição, tenha a original sinalizado isso ou não.
Especificação no BIP-125.
As estimativas de taxa ficam desatualizadas, então o bitcoin permite que o remetente reescreva um pagamento que ainda não foi minerado. A substituição deve pagar novamente toda a taxa da original mais pelo menos um satoshi extra por byte virtual, então aumentar a taxa nunca é gratuito. Para você, a regra prática é direta: nada que não esteja confirmado está liquidado, e só o remetente pode aumentar a taxa.
Como funciona
A substituição é uma política de retransmissão, não uma regra de consenso, e por isso seu comportamento mudou duas vezes sem nenhuma bifurcação.
O BIP125 definiu a versão opt-in e o Bitcoin Core a lançou na versão 0.12.0 em 23 de fevereiro de 2016. O remetente sinalizava a disposição de ser substituído definindo o número de sequência de pelo menos uma entrada como 0xfffffffd ou menos, e os nós então retransmitiam uma transação conflitante que pagasse mais. As carteiras que não definiam o sinalizador produziam pagamentos que seus próprios usuários não conseguiam reparar.
Essa distinção acabou. O Bitcoin Core versão 28.0, lançado em outubro de 2024, mudou o padrão de -mempoolfullrbf para ativado, então um nó bem conectado agora retransmite um conflito que paga mais, independentemente do que a primeira transação sinalizou. Qualquer tela de carteira que ainda prometa que um pagamento sem sinalização “não pode ser substituído” descreve uma rede que não existe mais.
Quatro condições decidem se um nó aceita a troca, e elas existem para impedir que a substituição seja usada para inundar a rede com reescritas gratuitas:
- A substituição deve pagar uma taxa absoluta mais alta do que todas as transações que ela remove, não apenas uma taxa por vB mais alta.
- Ela também deve pagar um valor extra de pelo menos a taxa de retransmissão incremental, que por padrão é de 1 satoshi por byte virtual multiplicado pelo tamanho da nova transação.
- Ela não pode incluir entradas não confirmadas que a original ainda não gastava.
- Ela não pode remover mais de 100 transações de uma vez, contando os descendentes de tudo com que entra em conflito.
A regra da taxa absoluta é a que surpreende as pessoas. Uma substituição que reduz uma transação grande para uma menor a uma taxa melhor ainda pode ser rejeitada, porque o total da taxa caiu. Note também que você paga a nova taxa, não as duas: a original é descartada e nunca é minerada, então a taxa antiga nunca é cobrada.
O Bitcoin Core expõe isso como a RPC bumpfee, e a maioria das carteiras de desktop o apresenta como um botão rotulado "increase fee" ou algo semelhante. O mecanismo usual é reduzir a saída de troco no valor da taxa extra, e por isso um pagamento que enviou um saldo inteiro sem deixar troco não pode ter a taxa aumentada sem adicionar outra entrada.
Por que isso importa quando você compra bitcoin
O momento em que a substituição se torna problema seu é o momento em que você saca de uma corretora para sua própria carteira, ou envia dessa carteira para outra pessoa.
Enviar da sua própria carteira é o caso bom. Se você escolheu uma taxa por vB às 2h00 e a mempool acordou, abra a transação e aumente a taxa. Escolha uma carteira que ofereça o botão antes de precisar dele: isso é um recurso normal no Bitcoin Core, no Sparrow, no Electrum e no Trezor Suite, e um recurso ausente em muitas carteiras de celular que escolhem a taxa por você e não dão nenhuma forma de voltar atrás.
Sacar de uma corretora é o caso ruim. A corretora montou essa transação, ela detém as chaves das entradas, e só ela pode substituí-la. Os setores de suporte em geral não o farão, porque seus lotes de saque atendem dezenas de clientes ao mesmo tempo. Sua única alavanca do lado de quem recebe é o child pays for parent (o filho paga pelo pai), que funciona porque o bitcoin que chega a você é gastável no momento em que existe, mesmo sem confirmação.
É ao receber que a substituição muda como você deve agir. Um vendedor em um mercado ponto a ponto, uma negociação presencial, ou um operador de caixa eletrônico de bitcoin que libera a mercadoria com um pagamento não confirmado está confiando em uma transação que qualquer pessoa com uma mempool pode ver sendo substituída. A substituição completa ser o padrão significa que o conselho antigo, de que uma transação sem sinalização era segura de aceitar com zero confirmações, está aposentado. Espere um bloco. Para valores que importam, espere vários.
Aumentar a taxa de um saque de 3 sat/vB que travou
Suponha que você envie 0,05 BTC da sua própria carteira com uma entrada SegWit nativa e duas saídas, uma para o destinatário e uma para o troco. Essa transação tem cerca de 141 bytes virtuais e, a 3 sat/vB, carrega uma taxa de 423 satoshis.
Na manhã seguinte, a taxa de confirmação mais barata é de 20 sat/vB e seu pagamento não se moveu. Você aumenta a taxa. A substituição tem os mesmos 141 bytes virtuais, então 20 sat/vB significa uma taxa de 2.820 satoshis, tirada da saída de troco, não do valor do destinatário. O piso da política para essa substituição é os 423 satoshis originais mais 1 sat/vB ao longo de 141 bytes, o que dá 564 satoshis, então 2.820 passa com folga.
Você não paga 3.243 satoshis. Você paga 2.820, e a primeira versão morre sem ser minerada. O destinatário ainda recebe exatamente 0,05 BTC, e o ID da transação muda, então, se você já deu o ID antigo a alguém, é preciso enviar o novo.
Isso fica caro quando não resta saída de troco para reduzir. Então a carteira tem que adicionar outra entrada, a transação cresce para aproximadamente 209 bytes virtuais, e os mesmos 20 sat/vB agora custam 4.180 satoshis.
Replace-by-fee vs gasto duplo
O replace-by-fee e uma tentativa de gasto duplo usam o mesmo mecanismo e diferem apenas em onde o dinheiro acaba. Uma substituição geralmente mantém o mesmo destinatário e tira a taxa extra do troco. Um gasto duplo reescreve as saídas para que os bitcoins voltem ao remetente ou vão para outro lugar completamente diferente, e o comerciante que entregou a mercadoria não recebe nada.
Nenhum nó pode distinguir a diferença, porque ambas são simplesmente transações conflitantes e a que paga mais vence. Esse é todo o argumento para esperar confirmações em vez de confiar no rótulo que sua carteira coloca em um pagamento recebido. A proteção é a profundidade na cadeia, não a intenção declarada do remetente.