Vai al contenuto
buybitcoinsmart

Glossario / Transazioni e commissioni

Child pays for parent

Noto anche come CPFP, Ancestor mining.

Che cos'è il child pays for parent?
Child pays for parent recupera una transazione con commissione bassa spendendo il suo output non confermato in una seconda transazione la cui commissione copre entrambe, dato che i miner valutano la coppia insieme.

I miner non scelgono le transazioni una alla volta. Bitcoin Core le seleziona in base alla commissione per byte virtuale dell'insieme degli antenati dalla versione 0.13.0, di agosto 2016, quindi una transazione figlia generosa trascina una transazione madre avara nello stesso blocco. È proprio questa singola scelta di progettazione a dare al destinatario di un pagamento bloccato un modo per agire, invece di aspettare un mittente che potrebbe non rispondere mai.

Come funziona

La commissione per byte virtuale è un rapporto, e il child pays for parent funziona migliorando il rapporto di un gruppo invece di quello di una singola transazione.

Un miner che riempie un blocco vuole ottenere il massimo di satoshi per byte virtuale. Quando una transazione nella mempool dipende da una transazione madre non confermata, il codice di mining non può prenderla da sola, quindi valuta l'intero insieme degli antenati: la somma delle commissioni di madre e figlia divisa per la somma delle loro dimensioni. Se quel numero batte la concorrenza, entrano entrambe. La selezione di mining di Bitcoin Core funziona così da 0.13.0, la versione che ha sostituito il semplice ordinamento per singola transazione con l'ordinamento per commissione per byte virtuale degli antenati.

Vale la pena fare il calcolo a mano una volta. Prendi una transazione madre di 141 byte virtuali che paga 1 sat/vB, cioè 141 satoshi. Vuoi che la coppia arrivi a 25 sat/vB. Una transazione figlia che spende quel bitcoin, con un input e un output, occupa circa 111 byte virtuali, quindi il pacchetto è di 252 byte virtuali e richiede 6.300 satoshi in totale. La madre ha già contribuito per 141, quindi la figlia deve portare 6.159, che da sola equivale a una commissione di circa 55 sat/vB. La figlia paga sempre un sovrapprezzo, perché compra spazio nel blocco anche per i byte altrui oltre ai propri.

Due limiti lo vincolano. Una catena di transazioni non confermate non può superare, per impostazione predefinita, 25 antenati o discendenti, e la dimensione totale di quella famiglia è limitata a circa 101 kilobyte virtuali, quindi non puoi impilare transazioni figlie all'infinito. E la trasmissione non è automatica: per anni una transazione figlia che spingeva una madre che pagava poco è stata a sua volta rifiutata dai nodi che avevano già scartato la madre, ed è per questo che Bitcoin Core 28.0 a ottobre 2024 ha aggiunto la trasmissione opportunistica di una madre con una figlia, così che la coppia viaggi sulla rete come un'unica unità.

Esiste una versione più insidiosa della stessa dipendenza. Se qualcun altro può agganciare una transazione figlia grande e a bassa commissione a una transazione condivisa non confermata, può gonfiare la dimensione della famiglia e rendere l'aumento della sua commissione proibitivo. Quell'attacco si chiama transaction pinning, ed è il motivo per cui Lightning e altri protocolli di contratti ora usano topologie di transazione ristrette invece di affidarsi al semplice aumento della commissione.

Perché questo conta quando compri bitcoin

Il child pays for parent è l'unica correzione della commissione disponibile per chi riceve, il che lo rende lo strumento per i prelievi dagli exchange che si bloccano.

La sequenza è questa. Prelevi da un exchange, l'exchange ha raggruppato il tuo pagamento con altri cinquanta a una commissione scelta ore prima, la pressione sulle commissioni sale e il gruppo resta non confermato. Il replace-by-fee qui non ti serve, perché quegli input li ha firmati l'exchange. Quello che puoi fare è spendere il bitcoin in arrivo, non confermato, verso un altro indirizzo nel tuo wallet a una commissione elevata. Ora i miner vedono un pacchetto che vale la pena minare, e le due transazioni si confermano insieme.

Il tuo wallet deve collaborare. Bitcoin Core, Sparrow e Electrum ti permettono di selezionare un bitcoin in arrivo non confermato e spenderlo; diversi wallet mobili nascondono del tutto i saldi non confermati e non ti danno nulla su cui cliccare. Se pensi di tenere denaro reale in autocustodia, verifica questa funzione prima di averne bisogno, non durante un picco delle commissioni.

Due avvertenze. Primo, una figlia spende esattamente il bitcoin che hai ricevuto, quindi la commissione esce dal denaro che hai appena prelevato, e su un prelievo piccolo il costo può essere una quota significativa dell'importo. Secondo, la figlia crea un nuovo output a un nuovo indirizzo, il che collega le due nel registro pubblico. Se il prelievo faceva parte di un'impostazione attenta alla privacy, aumentarne la commissione in questo modo è un compromesso che dovresti fare consapevolmente.

Recuperare un prelievo di 0,02 BTC bloccato in un gruppo a 4 sat/vB

Supponi che un exchange ti invii 0,02 BTC in un gruppo che paga 4 sat/vB e che al mattino nulla sotto 30 sat/vB si stia confermando. Il gruppo è grande, forse 1.500 byte virtuali, e non tocca a te pagarlo tutto. Ti serve solo che il pacchetto che contiene il tuo bitcoin appaia attraente.

Ecco il dettaglio che sorprende: il pacchetto valutato da un miner include l'intera madre, tutti i suoi 1.500 byte, non solo la tua parte. Aggiungi una figlia di 111 byte e il pacchetto è di 1.611 byte virtuali, quindi arrivare a 30 sat/vB significa trovare 48.330 satoshi in totale. La madre ne ha forniti 6.000, quindi la figlia deve circa 42.330 satoshi, che su un prelievo di 0,02 BTC è un costo reale.

È per questo che il child pays for parent è uno strumento di recupero e non di routine, e che funziona molto meglio su una madre piccola, come un pagamento che una singola persona ti invia direttamente, che su un grande gruppo di un exchange. A volte la risposta onesta è aspettare: le commissioni scendono nella maggior parte dei fine settimana, e una transazione resta nelle mempool fino a 14 giorni per impostazione predefinita prima che i nodi la dimentichino.

Child pays for parent vs replace-by-fee

Entrambi aumentano una commissione, ma li usano parti opposte e lasciano tracce diverse. La sostituzione riscrive la transazione originale, richiede le chiavi che hanno firmato i suoi input, produce un nuovo id di transazione e fa sparire la prima versione. Il child pays for parent aggiunge una nuova transazione sopra, richiede solo le chiavi di un output che hai ricevuto, non cambia nulla della madre e lascia entrambe sulla catena per sempre.

La sostituzione costa meno quando è disponibile, perché paghi i byte di una sola transazione invece che di due. Usala ogni volta che il pagamento bloccato è partito dal tuo wallet. Ricorri alla figlia quando il pagamento bloccato arriva da qualcun altro.

Da non confondere con

Domande frequenti

Posso usare il child pays for parent su un pagamento che sto aspettando di ricevere?

Sì, ed è il suo impiego principale. Il bitcoin in entrata è spendibile nel momento in cui la transazione esiste, quindi puoi inviarlo a tua volta con una commissione per vB alta e i miner confermeranno entrambe le transazioni insieme. Il tuo wallet deve permetterti di spendere bitcoin non confermati.

Perché la commissione della transazione figlia è molto più alta della tariffa che voglio davvero?

Perché la transazione figlia paga anche i byte della transazione madre oltre ai propri. I miner fanno la media della commissione sull'intero pacchetto, quindi la transazione figlia più piccola deve superare di molto l'obiettivo per portare la commissione combinata per vB al livello che vuoi.

Il mittente deve aver attivato qualcosa perché funzioni?

No. Il child pays for parent non richiede alcun flag, alcun segnale e nessuna collaborazione da parte del mittente. Serve solo un output della transazione non confermata di cui detieni la chiave, che per un pagamento in entrata è l'output che paga te.

Leggi anche

Termini correlati

Altro in Transazioni e commissioni

Leggi questa pagina in inglese