Blockchain/Nível II · Mecânica/2.2 Transações/Lição 6
Replace-by-fee e child-pays-for-parent
Aumento de taxas e o ataque de pinning
MateriaisUm explorador de blocos que mostra a ancestralidade das transações (por exemplo, mempool.space)Uma carteira que suporta aumento de taxas
Curiosidade
- O que um remetente pode fazer quando uma transação fica travada devido a uma taxa muito baixa?
- Como um destinatário pode pagar por um pagamento que ainda não recebeu?
- O que acontece quando uma contraparte mantém deliberadamente seus fundos como reféns no mempool?
Explorar
- Uma transação transmitida com uma taxa por vbyte muito baixa pode ficar dias sem confirmação, ou até ser descartada dos mempools, enquanto transações que pagam mais são confirmadas antes dela. Duas técnicas aumentam a taxa efetiva após a transmissão: o remetente pode substituir a transação por uma versão que pague mais, ou o destinatário pode gastar uma das saídas dela com uma taxa generosa, para que os mineradores incluam as duas juntas.
- O Replace-by-Fee (RBF) permite que o remetente corrija uma taxa subestimada. O BIP125 introduziu a sinalização de substituibilidade por meio do campo nSequence das entradas. Pelas regras de substituição do Bitcoin Core, a transação substituta deve pagar pelo menos o total das taxas de tudo o que ela substitui, mais uma taxa de retransmissão adicional referente ao seu próprio tamanho, e ter uma taxa por vbyte maior do que a das transações com as quais conflita diretamente. A versão 24 do Bitcoin Core adicionou a aceitação de “full RBF”, tratando as transações como substituíveis mesmo sem sinalização explícita, o que se tornou o padrão na versão 28.
- O Child-Pays-For-Parent (CPFP) atende destinatários que não conseguem modificar um pagamento recebido. O destinatário cria uma nova transação que gasta a saída não confirmada da transação pai travada, atribuindo uma taxa alta a essa transação filha. Os mineradores avaliam o pacote combinado pela taxa por vbyte dos ancestrais (ancestor fee rate); incluir a filha obriga a incluir também a pai, porque a filha só é válida se a pai for confirmada no mesmo bloco ou antes.
- A lógica econômica se baseia no valor agregado. Se a transação pai paga 1 sat/vB e uma filha grande paga 50 sat/vB, o pacote combinado se torna uma oportunidade lucrativa para os mineradores confirmarem ambas ao mesmo tempo. Isso permite que o destinatário, na prática, subsidie a inclusão, pelo minerador, do pagamento recebido que está travado, mesmo sem ainda controlar as moedas confirmadas; isso exige um cálculo preciso do peso total e das taxas.
- O pinning de transações representa uma vulnerabilidade crítica nesse sistema. Uma contraparte pode deliberadamente manter no mempool uma transação com taxa por vbyte baixa e muitas descendentes, para impedir que transações com prazo crítico sejam confirmadas antes do vencimento. Em protocolos como a Lightning Network, em que o fechamento de canais depende de timelocks específicos, um atacante que faça pinning da sua transação de fechamento pode chegar a roubar fundos se você for forçado a esperar além da sua janela de segurança.
- Os desenvolvedores responderam com exceções de política (carve-outs), transações da versão 3 (“TRUC”) e package relay (retransmissão de pacotes) em versões recentes do Bitcoin Core, além de âncoras efêmeras (saídas pay-to-anchor), lançadas no Bitcoin Core 28 e 29. Esses recursos permitem que uma transação pai com taxa baixa seja retransmitida junto com uma filha com taxa alta, como um pacote. Essas mitigações reduzem, mas não eliminam por completo, a capacidade de agentes maliciosos de fazer pinning de transações com prazo crítico; o pinning afeta a política de retransmissão, não o consenso.
Fatos-chave
- O child-pays-for-parent permite que o destinatário acelere um pagamento recebido gastando a saída dele com uma taxa alta.
- O BIP125 permite sinalização de substituibilidade por meio dos campos nSequence nas entradas da transação.
- Uma substituição via RBF deve pagar pelo menos as taxas de tudo o que substitui, mais um adicional pelo seu próprio tamanho, com uma taxa por vbyte mais alta.
- O CPFP funciona porque os mineradores avaliam pacotes pai-filha pela taxa por vbyte combinada dos ancestrais.
- A versão 28 do Bitcoin Core tornou a aceitação de full RBF o comportamento padrão dos nós.
- Versões recentes do Bitcoin Core adicionam package relay e transações TRUC (versão 3) para tornar o aumento de taxas mais confiável contra o pinning.
Exercício nove, seis, três, um
9ReunirListe 9 cenários em que a velocidade de confirmação da transação é importante: desde compras no varejo até o fechamento de canais Lightning. Indique o prazo e as consequências de não cumpri-lo.
6AgruparAgrupe os 9 em 6 de acordo com quem pode acelerar a transação: remetente, destinatário, qualquer um dos dois, um terceiro, uma regra de protocolo ou ninguém.
3DestilarReduza os 6 para 3 razões fundamentais pelas quais uma transação pode permanecer presa no mempool além do seu tempo de confirmação esperado.
1CristalizarEscreva 1 frase explicando como o CPFP cria uma dependência financeira entre duas partes que não confiam uma na outra.
Verificação de fatos
Datas, números e afirmações verificados com as fontes publicadas listadas abaixo.