Glossar / Transaktionen und Gebühren
Child pays for parent
Auch bekannt als CPFP, Ancestor mining.
- Was ist Child pays for parent?
- Child pays for parent rettet eine Transaktion mit niedriger Gebühr, indem der nicht bestätigte Output in einer zweiten Transaktion ausgegeben wird, deren Gebühr beide abdeckt, da Miner das Paar gemeinsam beurteilen.
Miner wählen Transaktionen nicht einzeln aus. Bitcoin Core wählt sie seit Version 0.13.0 im August 2016 nach der Gebührenrate der Vorfahren aus, eine großzügige Kind-Transaktion zieht also eine knauserige Eltern-Transaktion in denselben Block. Diese eine Designentscheidung gibt dem Empfänger einer festhängenden Zahlung eine Handlungsmöglichkeit, statt auf einen Absender zu warten, der vielleicht nie antwortet.
Wie es funktioniert
Die Gebührenrate ist ein Verhältnis, und Child pays for parent wirkt, indem es das Verhältnis einer Gruppe statt einer einzelnen Transaktion verbessert.
Ein Miner, der einen Block füllt, will die meisten Satoshis pro virtuellem Byte, die er bekommen kann. Wenn eine Transaktion im Mempool von einer unbestätigten Eltern-Transaktion abhängt, kann der Mining-Code sie nicht allein nehmen, also bewertet er die gesamte Vorfahrenmenge: die kombinierten Gebühren von Eltern- und Kind-Transaktionen geteilt durch ihre kombinierte Größe. Wenn diese Zahl den Wettbewerb schlägt, kommen beide hinein. Die Mining-Auswahl von Bitcoin Core funktioniert seit 0.13.0 so, der Version, die die einfache Sortierung pro Transaktion durch die Sortierung nach der Gebührenrate der Vorfahren ersetzt hat.
Die Rechnung lohnt sich einmal von Hand. Nehmen Sie eine Eltern-Transaktion mit 141 virtuellen Bytes, die 1 sat/vB zahlt, also 141 Satoshis. Sie wollen, dass das Paar 25 sat/vB erreicht. Eine Kind-Transaktion mit einer Eingabe und einer Ausgabe, die diese Coin ausgibt, umfasst etwa 111 virtuelle Bytes, das Paket hat also 252 virtuelle Bytes und braucht insgesamt 6.300 Satoshis. Die Eltern-Transaktion hat bereits 141 beigetragen, also muss die Kind-Transaktion 6.159 tragen, was für sich genommen eine Gebührenrate von etwa 55 sat/vB ist. Die Kind-Transaktion zahlt immer einen Aufpreis, weil sie Blockplatz für fremde Bytes ebenso wie für eigene kauft.
Zwei Grenzen beschränken dies. Eine Kette unbestätigter Transaktionen darf standardmäßig nicht mehr als 25 Vorfahren oder Nachkommen umfassen, und die Gesamtgröße dieser Familie ist auf rund 101 Kilovbytes begrenzt, Sie können also nicht unbegrenzt Kind-Transaktionen stapeln. Und die Weiterleitung ist nicht automatisch: Jahrelang wurde eine Kind-Transaktion, die eine zu wenig zahlende Eltern-Transaktion anhob, selbst von Nodes abgelehnt, die die Eltern-Transaktion bereits verworfen hatten, weshalb Bitcoin Core 28.0 im Oktober 2024 die opportunistische Weiterleitung für eine Eltern-Transaktion mit einer Kind-Transaktion hinzugefügt hat, damit das Paar als Einheit durch das Netzwerk reist.
Es gibt eine unangenehmere Version derselben Abhängigkeit. Wenn jemand anderes eine große Kind-Transaktion mit niedriger Gebühr an eine gemeinsame unbestätigte Transaktion anhängen kann, kann er die Größe der Familie aufblähen und das Anheben ihrer Gebühr unbezahlbar teuer machen. Dieser Angriff heißt Transaction Pinning, und er ist der Grund, warum Lightning und andere Vertragsprotokolle heute eingeschränkte Transaktionstopologien verwenden, statt sich auf einfaches Gebührenanheben zu verlassen.
Warum das beim Bitcoin-Kauf zählt
Child pays for parent ist die einzige Gebührenkorrektur, die einem Empfänger zur Verfügung steht, was sie zum Werkzeug für Auszahlungen von Börsen macht, die festhängen.
Die Reihenfolge ist so. Sie heben von einer Börse ab, die Börse hat Ihre Zahlung mit fünfzig anderen zu einer Gebührenrate gebündelt, die sie vor Stunden gewählt hat, der Gebührendruck steigt, und das Bündel bleibt unbestätigt. Replace-by-fee nützt Ihnen hier nichts, weil die Börse diese Eingaben signiert hat. Was Sie tun können, ist die eingehende Coin unbestätigt an eine andere Adresse in Ihrer eigenen Wallet auszugeben, zu einer hohen Gebührenrate. Miner sehen nun ein Paket, das es zu minen lohnt, und beide Transaktionen werden zusammen bestätigt.
Ihre Wallet muss mitspielen. Bitcoin Core, Sparrow und Electrum lassen Sie eine unbestätigte eingehende Coin auswählen und ausgeben; mehrere mobile Wallets verbergen unbestätigte Guthaben vollständig und geben Ihnen nichts zum Anklicken. Wenn Sie vorhaben, echtes Geld in Selbstverwahrung zu halten, prüfen Sie das, bevor Sie es brauchen, nicht während eines Gebührenanstiegs.
Zwei Warnungen. Erstens gibt eine Kind-Transaktion genau die Coin aus, die Sie erhalten haben, die Gebühr kommt also aus dem Geld, das Sie gerade abgehoben haben, und bei einer kleinen Auszahlung kann der Aufwand ein erheblicher Teil des Betrags sein. Zweitens erzeugt die Kind-Transaktion eine neue Coin an einer neuen Adresse, was beide im öffentlichen Register verknüpft. Wenn die Auszahlung Teil eines auf Privatsphäre bedachten Aufbaus war, ist das Anheben auf diese Weise ein Tausch, den Sie bewusst eingehen sollten.
Rettung einer 0,02-BTC-Auszahlung, die in einem Bündel mit 4 sat/vB festhängt
Angenommen, eine Börse sendet Ihnen 0,02 BTC in einem Bündel, das 4 sat/vB zahlt, und bis zum Morgen bestätigt sich nichts unter 30 sat/vB. Das Bündel ist groß, vielleicht 1.500 virtuelle Bytes, und es ist nicht Ihre Aufgabe, für alles davon zu zahlen. Sie brauchen nur, dass das Paket mit Ihrer Coin attraktiv aussieht.
Hier ist der Haken, der Leute überrascht: Das Paket, das ein Miner bewertet, enthält die gesamte Eltern-Transaktion, alle 1.500 Bytes davon, nicht nur Ihren Anteil. Fügen Sie eine Kind-Transaktion mit 111 Bytes hinzu, hat das Paket 1.611 virtuelle Bytes; um 30 sat/vB zu erreichen, müssen also insgesamt 48.330 Satoshis gefunden werden. Die Eltern-Transaktion hat davon 6.000 geliefert, die Kind-Transaktion schuldet also rund 42.330 Satoshis, was bei einer Auszahlung von 0,02 BTC echte Kosten sind.
Deshalb ist Child pays for parent ein Rettungswerkzeug und kein Routinemittel, und deshalb funktioniert es bei einer kleinen Eltern-Transaktion, etwa einer Zahlung, die Ihnen eine einzelne Person direkt sendet, weit besser als bei einem großen Börsenbündel. Manchmal ist die ehrliche Antwort, zu warten: Die Gebührenraten fallen an den meisten Wochenenden, und eine Transaktion bleibt standardmäßig bis zu 14 Tage in Mempools, bevor Nodes sie vergessen.
Child pays for parent vs. replace-by-fee
Beide heben eine Gebühr an, aber sie werden von entgegengesetzten Parteien genutzt und hinterlassen unterschiedliche Spuren. Der Ersatz schreibt die ursprüngliche Transaktion neu, erfordert die Schlüssel, die ihre Eingaben signiert haben, erzeugt eine neue Transaktions-ID und lässt die erste Version verschwinden. Child pays for parent fügt eine neue Transaktion obenauf hinzu, erfordert nur die Schlüssel zu einer Ausgabe, die Sie erhalten haben, ändert nichts an der Eltern-Transaktion und lässt beide dauerhaft in der Blockchain.
Der Ersatz ist billiger, wenn er verfügbar ist, weil Sie nur für die Bytes einer Transaktion zahlen statt für zwei. Nutzen Sie ihn, wann immer die festhängende Zahlung aus Ihrer eigenen Wallet kam. Greifen Sie zur Kind-Transaktion, wenn die festhängende Zahlung von jemand anderem kam.