Glossário / Transações e taxas
Child pays for parent
Outros nomes: CPFP, Mineração ancestral.
- O que é o Child pays for parent?
- O Child pays for parent resgata uma transação com taxa baixa ao gastar sua saída não confirmada em uma segunda transação cuja taxa cobre as duas, já que os mineradores avaliam o par em conjunto.
Os mineradores não escolhem transações uma a uma. O Bitcoin Core as seleciona pela taxa por vB dos ancestrais desde a versão 0.13.0, em agosto de 2016, de modo que uma transação filha generosa arrasta uma transação mãe avara para o mesmo bloco. Essa única decisão de projeto é o que dá ao destinatário de um pagamento preso uma forma de agir, em vez de esperar por um remetente que pode nunca responder.
Como funciona
A taxa por vB é uma razão, e o child pays for parent funciona melhorando a razão de um grupo em vez da de uma única transação.
Um minerador que preenche um bloco quer obter o máximo de satoshis por byte virtual que conseguir. Quando uma transação na mempool depende de uma transação mãe não confirmada, o código de mineração não pode pegá-la sozinha, então avalia todo o conjunto de ancestrais: a soma das taxas da mãe e da filha dividida pela soma de seus tamanhos. Se esse número superar a concorrência, as duas entram. A seleção de mineração do Bitcoin Core funciona assim desde a 0.13.0, a versão que substituiu a ordenação simples, transação por transação, pela ordenação pela taxa por vB dos ancestrais.
Vale a pena fazer a conta uma vez à mão. Tome uma transação mãe de 141 bytes virtuais que paga 1 sat/vB, ou seja, 141 satoshis. Você quer que o par chegue a 25 sat/vB. Uma transação filha de uma entrada e uma saída que gaste esse bitcoin ocupa cerca de 111 bytes virtuais, então o pacote tem 252 bytes virtuais e precisa de 6.300 satoshis no total. A mãe já contribuiu com 141, então a filha tem que carregar 6.159, o que equivale a uma taxa própria de cerca de 55 sat/vB. A filha sempre paga um prêmio, porque está comprando espaço de bloco para os bytes de outra pessoa além dos seus.
Dois limites restringem isso. Uma cadeia de transações não confirmadas não pode exceder 25 ancestrais ou descendentes por padrão, e o tamanho total dessa família tem um teto de aproximadamente 101 kilovbytes, então não se pode empilhar filhas indefinidamente. E o relay não é automático: durante anos, uma filha que impulsionava uma mãe que pagava de menos era ela própria rejeitada por nós que já haviam descartado a mãe, e é por isso que o Bitcoin Core 28.0, em outubro de 2024, adicionou o relay oportunista de uma mãe com uma filha, para que o par viaje pela rede como uma unidade.
Existe uma versão mais danosa da mesma dependência. Se outra pessoa puder anexar uma filha grande e de taxa baixa a uma transação compartilhada não confirmada, ela pode inflar o tamanho da família e tornar o aumento da taxa proibitivamente caro. Esse ataque é chamado de transaction pinning, e é a razão pela qual a Lightning e outros protocolos de contrato agora usam topologias de transação restritas em vez de depender do simples aumento de taxa.
Por que isso importa quando você compra bitcoin
O child pays for parent é a única solução de taxa ao alcance de um destinatário, o que o torna a ferramenta para saques de corretoras que ficam presos.
A sequência é esta. Você saca de uma corretora, a corretora agrupou seu pagamento com outros cinquenta a uma taxa que escolheu horas antes, a pressão sobre as taxas aumenta, e o lote fica sem confirmação. O replace-by-fee não serve para nada aqui, porque a corretora assinou aquelas entradas. O que você pode fazer é gastar o bitcoin recebido, ainda não confirmado, para outro endereço em sua própria carteira com uma taxa alta. Agora os mineradores veem um pacote que vale a pena minerar, e as duas transações se confirmam juntas.
Sua carteira tem que colaborar. O Bitcoin Core, o Sparrow e o Electrum permitem selecionar um bitcoin recebido não confirmado e gastá-lo; várias carteiras móveis escondem por completo os saldos não confirmados e não dão nada em que clicar. Se você pretende guardar dinheiro de verdade em autocustódia, verifique isso antes de precisar, não durante um pico de taxas.
Duas advertências. Primeiro, uma filha gasta exatamente o bitcoin que você recebeu, então a taxa sai do dinheiro que você acabou de sacar, e em um saque pequeno o custo pode ser uma parte significativa do valor. Segundo, a filha cria uma nova saída em um novo endereço, o que vincula as duas no registro público. Se o saque fazia parte de uma configuração pensada para a privacidade, aumentar a taxa dessa forma é uma concessão que você deve fazer com conhecimento de causa.
Resgatar um saque de 0,02 BTC preso em um lote de 4 sat/vB
Suponha que uma corretora envie 0,02 BTC em um lote que paga 4 sat/vB, e pela manhã nada abaixo de 30 sat/vB esteja confirmando. O lote é grande, talvez 1.500 bytes virtuais, e não é seu dever pagar por tudo isso. Você só precisa que o pacote que contém seu bitcoin pareça atraente.
Aqui está o detalhe que surpreende as pessoas: o pacote que um minerador avalia inclui a mãe inteira, todos os seus 1.500 bytes, não apenas a sua parte. Adicione uma filha de 111 bytes e o pacote tem 1.611 bytes virtuais, então chegar a 30 sat/vB significa reunir 48.330 satoshis no total. A mãe forneceu 6.000 disso, então a filha deve aproximadamente 42.330 satoshis, o que em um saque de 0,02 BTC é um custo real.
É por isso que o child pays for parent é uma ferramenta de resgate e não de rotina, e por isso funciona muito melhor em uma mãe pequena, como um pagamento enviado diretamente a você por uma só pessoa, do que em um grande lote de corretora. Às vezes a resposta honesta é esperar: as taxas caem na maioria dos fins de semana, e uma transação fica nas mempools por até 14 dias por padrão antes que os nós a esqueçam.
Child pays for parent vs replace-by-fee
Ambos aumentam uma taxa, mas são usados por partes opostas e deixam rastros diferentes. A substituição reescreve a transação original, exige as chaves que assinaram suas entradas, produz um novo ID de transação e faz a primeira versão desaparecer. O child pays for parent adiciona uma nova transação por cima, exige apenas as chaves de uma saída que você recebeu, não muda nada na mãe e deixa as duas na cadeia permanentemente.
A substituição é mais barata quando está disponível, porque você paga apenas pelos bytes de uma transação em vez de duas. Use-a sempre que o pagamento preso tiver saído de sua própria carteira. Recorra à filha quando o pagamento preso vier de outra pessoa.