Ablehnung von Bitcoin-Transaktionen: Unterschied zwischen den Versionen

Aus quickguide.bitcointoolz.com
Zur Navigation springenZur Suche springen
(Die Seite wurde neu angelegt: „=Ablehnung von Bitcoin-Transaktionen= Du kennst das sicher: Du möchtest eben schnell eine Bitcoin-Transaktion abschicken, vergleichbar mit einem Einschreiben zur Post bringen. Du widmest dich Online-Gebühren, klickst auf "Senden" – und… wartest. Manchmal ploppt am nächsten Tag die ernüchternde Meldung auf: „Transaktion abgelehnt“. Dieser Artikel erklärt dir anhand anschaulicher Beispiele und Metaphern, warum das passieren kann und wie du es…“)
 
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
=Ablehnung von Bitcoin-Transaktionen=
=Ablehnung von Bitcoin-Transaktionen=


Du kennst das sicher: Du möchtest eben schnell eine [[Bitcoin]]-[[Transaktion]] abschicken, vergleichbar mit einem Einschreiben zur Post bringen. Du widmest dich Online-[[Gebühren]], klickst auf "Senden" und… wartest. Manchmal ploppt am nächsten Tag die ernüchternde Meldung auf: „[[Transaktion]] abgelehnt“. Dieser Artikel erklärt dir anhand anschaulicher Beispiele und Metaphern, warum das passieren kann und wie du es in Zukunft vermeidest.
Du kennst das sicher: Du möchtest eben schnell eine [[Bitcoin]]-[[Transaktion]] abschicken, vergleichbar mit einem Brief, den du zur Post bringst. Du wählst die richtige [[Gebühr]], klickst auf „Senden“ und wartest. Manchmal ploppt Tage später die ernüchternde Meldung auf: „[[Transaktion]] abgelehnt“. Dieser Artikel erklärt dir anhand zahlreicher Beispiele und Metaphern, warum das passieren kann und wie du es in Zukunft vermeidest.


== Analyse des Sachverhalts ==
Bevor wir die Ablehnungsgründe betrachten, schauen wir uns den Weg deiner [[Transaktion]] an:
Bevor wir uns den Ablehnungsgründen widmen, betrachten wir den typischen Ablauf einer [[Transaktion]]:


* '''Broadcast ins P2P-[[Netzwerk]]''': Deine [[Wallet]] sendet die TX wie einen Brief an benachbarte [[Nodes]].
* '''Broadcast ins P2P-[[Netzwerk]]''': Deine [[Wallet]] übermittelt die TX wie einen Brief an benachbarte [[Nodes]].
* '''[[Mempool]] jedes [[Nodes]]''': Die TX wird wie Post im Briefkasten abgelegt, solange sie valide und policy-konform ist.
* '''[[Mempool]] jedes [[Nodes]]''': Die TX landet wie ein Paket im Lager ([[Mempool]]), solange sie valide und policy-konform ist.
* '''[[Mining]] und [[Bestätigung]]''': [[Miner]] wählen die TX mit der höchsten [[Gebühr]], packen sie in einen [[Block]] wie Pakete in einen LKW.
* '''[[Mining]] und [[Bestätigung]]''': [[Miner]] wählen die TX mit der höchsten [[Gebühr]], packen sie in einen [[Block]] wie Fracht in einen LKW.
* '''Blockprüfung und [[Chain]]-Update''': Andere [[Nodes]] prüfen den [[Block]], ergänzen ihre [[Blockchain]], als würden sie die Postzustellung bestätigen.
* '''Blockprüfung und [[Chain]]-Update''': Andere [[Nodes]] prüfen den [[Block]], fügen ihn ihrer [[Blockchain]] hinzu und bestätigen so die Zustellung.


  '''Denkanstoß:''' Wie würdest du handeln, wenn dein „Brief“ länger als zwei Wochen in der Postfiliale liegt und nie zugestellt wird?
  '''Metapher:''' Stell dir vor, du stehst an einer Supermarkt-Kasse. Die „Express–Lane“ (Höhere Gebühr) ist kürzer, die normale Kasse (niedrige Gebühr) deutlich länger. Bezahlt dein Einkauf weniger, musst du in der langen Schlange warten – oder wirst gar nicht erst eingelassen, wenn der Laden kurz vor Ladenschluss ist.


== Historische Entwicklung ==
== Historische Entwicklung ==
In den ersten [[Bitcoin]]-Jahren war das [[Netzwerk]] wie eine kleine Dorfpost: Jede gültige [[Transaktion]] wurde angenommen und weitergeleitet. Mit zunehmender Popularität verwandelte sich das Dorf in eine Großstadt, die Mempools wurden voll, und [[Nodes]] führten ab Version 0.10 Policy-Regeln ein ('''minrelaytxfee''' und '''dustRelayFee'''). Ab Version 0.12 und 0.13 kamen striktere '''non-standard TX'''-Filter hinzu. Heute trennt [[Bitcoin]] Core klar zwischen [[Konsensus-Layer]] (unabdingbare Regeln) und [[Policy-Layer]] (konfigurierbare Schwellenwerte).
In den ersten [[Bitcoin]]-Jahren war das [[Netzwerk]] wie eine kleine Dorfbäckerei: Jede gültige [[Transaktion]] wurde angenommen und weitergeleitet. Mit steigender [[Nachfrage]] wandelte sich das Dorf in eine Großstadt, die Mempools füllten sich. Ab Version 0.10 kamen deshalb Policy-Regeln wie '''minrelaytxfee''' und '''dustRelayFee''' hinzu; in 0.12/0.13 folgten striktere '''non-standard TX'''-Filter. Heute trennt [[Bitcoin]] Core strikt zwischen '''[[Konsensus-Layer]]''' (unabdingbare Regeln) und [[Policy-Layer]] (konfigurierbare Schwellen).


== Konsensus- vs. Policy-Schicht ==
== Konsensus- vs. Policy-Schicht ==
===== Konsensus-Fehler (unwiderruflich) =====
==== Konsensus-Fehler (unwiderruflich) ====
[[Transaktionen]] werden endgültig verworfen, wenn sie gegen feste [[Blockchain]]-Regeln verstoßen:
[[Transaktionen]] werden endgültig verworfen, wenn sie gegen feste [[Blockchain]]-Regeln verstoßen:


* '''Ungültige [[Signatur]]''' oder [[Skript-Fehler]]: Die [[kryptographische]] Prüfung schlägt fehl, vergleichbar mit einem ungültigen Unterschriftsstempel auf einem Dokument.
* '''Ungültige [[Signatur]]''' oder '''Skript-Fehler''' – wie ein ungültiger Poststempel auf einem Brief.
* Überschreitung des [[Block]]- oder TX-Gewichts (max. 4 000 000 Weight Units).
* Überschreitung des [[Block]]- oder TX-Gewichts (max. 4 000 000 Weight Units).
* Doppeltes Ausgeben desselben [[Coins]] (Double-Spend).
* Doppeltes Ausgeben desselben [[Coins]] (Double-Spend).


===== Policy-Fehler (konfigurierbar) =====
==== Policy-Fehler (konfigurierbar) ====
Jeder [[Node]] kann eigene Regeln setzen, um Spam und Ressourcenverschwendung zu vermeiden:
Jeder [[Node]] kann eigene Regeln setzen, um Spam und Ressourcenverschwendung zu vermeiden:


* '''minrelaytxfee''' (Standard: 1 [[sats]]/vB) – [[Gebühren]] unter diesem [[Wert]] werden nicht weitergereicht.
* '''minrelaytxfee''' (Standard: 1 [[sats]]/vB) – [[Gebühren]] unter diesem [[Wert]] werden nicht weitergeleitet.
* '''[[Dust]]-Limits''': Kleinstbeträge, die das [[Netzwerk]] als [[Staub]] einstuft und nicht relayed.
* '''[[Dust]]-Limits''': Winzigste Beträge, die das [[Netzwerk]] als „Staub“ einstuft und nicht relayed.
* '''Non-Standard-Filter''': Exotische Skript-Typen (z. B. große OP_RETURN-Daten).
* '''Non-Standard-Filter''': Exotische Skript-Typen (z. B. große OP_RETURN-Daten).
* '''Ancestor/Descendant-Limits''': Maximal 25 unbestätigte Vorfahren bzw. Nachkommen pro TX.
* '''Ancestor/Descendant-Limits''': Maximal 25 unbestätigte Vorfahren bzw. Nachkommen pro TX.


'''Beispiel/Metapher/Anekdote:''' Stelle dir vor, dein Paketdienst sortiert alle Pakete nach Größe und Dringlichkeit. Staubfeine Briefe und Kartons ohne Priorität bleiben liegen, wenn das Lager voll ist.
'''Denkanstoß:''' Stell dir vor, dein Paketdienst sortiert alle Pakete nach Größe und Dringlichkeit. Kleinste Päckchen ohne Priorität bleiben liegen, wenn das Lager voll ist.


== Technische Ursachen im Detail ==
== Technische Ursachen im Detail ==
===== 1. Zu niedrige Gebühr und Mempool-Eviction =====
==== 1. Zu niedrige Gebühr und Mempool-Eviction ====
* Jede [[Transaktion]] zahlt eine [[Gebühr]] in [[sats]]/vB ('''Fee Rate''').
* Jede [[Transaktion]] zahlt eine [[Gebühr]] in [[sats]]/vB ('''Fee Rate''').
* [[Nodes]] speichern unbestätigte TX bis zum '''-maxmempool'''-Limit (Standard: 300 MB).
* [[Nodes]] speichern unbestätigte TX bis zum '''-maxmempool'''-Limit (Standard: 300 MB).
* Wird dieses Limit überschritten, erfolgt eine Eviction: Dabei wird die TX mit dem niedrigsten effektiven Gebührensatz (''Descendant-Score'' inkl. aller abhängigen TX) zuerst entfernt, bis die Speichernutzung wieder unter 95 % des Limits fällt.
* Wird dieses Limit überschritten, erfolgt eine Eviction:
* „Priority“ vs. „Anytime“: Gebührenempfehlungen für „nächster Block“ vs. „irgendwann“ '''→ [https://timechaincalendar.com/en/block/903845 TimeChainCalendar]'''.
** Zuerst jene mit dem niedrigsten effektiven Gebührensatz (''Descendant-Score'': inkl. abhängiger TX).
** Bis die Speichernutzung wieder unter 95 % des Limits fällt.
* Gebührenempfehlungen „Priority“ (schnellster [[Block]]) vs. „Anytime“ (irgendwann bestätigt) '''→ [https://timechaincalendar.com/en/block/903845 TimeChainCalendar]'''.


  '''Denkanstoß:''' Wie würdest du den Parkplatz-Manager überzeugen, dein Auto (TX) mit geringer Gebühr länger stehen zu lassen?
  '''Metapher:''' Denk an einen Flughafen mit zwei Sicherheitskontrollen: Die VIP-Lane (hohe Gebühr) ist leer, die Economy-Lane (niedrige Gebühr) ist überfüllt. Steht deine „Economy“-Transaktion zu lange an, wird sie womöglich gar nicht erst hereingelassen.


===== 2. Ablaufdatum nach 14 Tagen =====
==== 2. Ablaufdatum nach 14 Tagen ====
* Standard: '''mempoolexpiry=336''' Stunden (14 Tage).
* Standard: '''mempoolexpiry=336''' Stunden (14 Tage).
* Unbestätigte TX, die so lange warten, werden gelöscht – unabhängig von [[Gebühr]] oder Größe.
* Unbestätigte TX, die so lange warten, werden gelöscht – unabhängig von [[Gebühr]] oder Größe.
* Verhindert, dass veraltete TX Ressourcen blockieren.
* Verhindert, dass veraltete [[Transaktionen]] Ressourcen blockieren.


===== 3. Non-Standard-Transaktionen =====
'''Denkanstoß:''' Wie würdest du reagieren, wenn dein ungelieferter Koffer nach zwei Wochen aus dem Flughafen-Lager entsorgt wird?
[[Nodes]] lehnen TX ab, deren Skripte oder Formate nicht den Policy-Regeln entsprechen:


* Exotische Skript-Typen (z. B. große OP_RETURN-Nutzlast).
==== 3. Non-Standard-Transaktionen ====
* Bare [[Multisig]] mit mehr als drei [[Signaturen]].
[[Nodes]] lehnen TX ab, deren Skripte/Formate nicht den Policy-Regeln entsprechen:
* Unzulässige Push-Operationen in Skripten.
 
* Exotische Skript-Typen (z. B. große OP_RETURN-Daten).
* Bare [[Multisig]] mit >3 [[Signaturen]].
* Unzulässige Push-Operationen im Skript.
* [[Dust]]-[[Outputs]] unter dem Staublimit.
* [[Dust]]-[[Outputs]] unter dem Staublimit.


===== 4. Konflikte und Double-Spend =====
==== 4. Konflikte und Double-Spend ====
* Kommt eine zweite TX mit denselben [[Inputs]] ins [[Mempool]] oder einen [[Block]], wird deine alte TX verworfen.
* Kommt eine zweite TX mit denselben [[Inputs]] ins [[Mempool]] oder einen [[Block]], wird deine alte TX verworfen.
* [[Replace-by-Fee|Replace-By-Fee]] ('''RBF''') erlaubt dir, eine feststeckende TX durch eine mit höherer [[Gebühr]] zu ersetzen.
* [[Replace-by-Fee|Replace-By-Fee]] ('''RBF''') erlaubt, eine feststeckende TX durch eine höhere [[Gebühr]] zu ersetzen.


===== 5. Ancestor/Descendant-Grenzen =====
==== 5. Ancestor/Descendant-Grenzen ====
* Maximal 25 unbestätigte Vorfahren ([[Ancestor Limit]]) bzw. 25 Nachkommen ([[Descendant Limit]]) pro TX.
* Max. 25 unbestätigte Vorfahren ('''Ancestor Limit''') bzw. 25 Nachkommen ('''Descendant Limit''') pro TX.
* Überschreitung dieser Grenze führt zur Ablehnung oder späteren Eviction.
* Überschreitung führt zur Ablehnung oder späteren Eviction.


== Praktische Konsequenzen für Nutzer ==
== Praktische Konsequenzen für Nutzer ==
* Solange du marktübliche [[Gebühren]] ('''≥1–2 [[sats]]/vB''') zahlst, siehst du kaum Ablehnungen.
* Marktübliche [[Gebühren]] (≥1–2 [[sats]]/vB) verhindern Ablehnungen praktisch vollständig.
* Bei extrem niedrigen [[Gebühren]] und hoher Netzlast kann deine TX evicted werden.
* Bei extrem niedrigen [[Gebühren]] und hoher Netzlast kann deine TX evicted werden.
* '''Tipps zur Vermeidung:'''
* '''Tipps zur Vermeidung:'''
* Nutze gebührenempfohlene Werte („Priority“ oder „Anytime“) deiner [[Wallet]].
* Zahle die empfohlene „Priority“- oder „Anytime“-[[Gebühr]].
* Aktiviere '''RBF''', um bei Bedarf nachzubessern.
* Aktiviere '''[[RBF]]''', um bei Bedarf nachzubessern.
* Erwäge [[CPFP]] (Child-Pays-For-Parent), falls eine abhängige TX hängt.
* Nutze [[CPFP]] (Child-Pays-For-Parent), falls eine abhängige TX hängt.


== Ausblick und Optimierungen ==
== Ausblick und Optimierungen ==
* Fee-Markt-Modelle wie ein ''EIP-1559''-ähnlicher Mechanismus könnten die Gebührenschwankungen glätten.
* Protokollvorschläge wie '''Dandelion''' oder '''Cohort-Relay''' zielen auf bessere Weiterleitung ab.
* Protokollerweiterungen wie '''Dandelion''' oder '''Cohort-Relay''' optimieren [[Mempool]]-Propagation und reduzieren Spam.
* Weitergehende [[Mempool]]-Optimierungen sind in Diskussion, aber noch nicht fest implementiert.
* Verbesserte [[Mempool]]-Policies und dynamische Limits könnten künftige Spitzenlasten abmildern.
* Modelle à la EIP-1559 für [[Bitcoin]] sind derzeit spekulativ.


== Wissenswertes ==
== Wissenswertes ==
* 1. '''maxmempool (Standard)''': 300 MB Speicher für unbestätigte TX.
* 1. '''maxmempool (Standard)''': 300 MB Speicher für unbestätigte TX.
* 2. '''mempoolexpiry''': 336 Std. = 14 Tage bis zur automatischen Aussonderung.
* 2. '''mempoolexpiry''': 336 Std. (14 Tage) bis zum automatischen Verfall.
* 3. '''minrelaytxfee''': 1 sat/vB – unterhalb keine Weiterleitung im P2P-Netz.
* 3. '''minrelaytxfee''': 1 sat/vB – unterhalb keine Weiterleitung.
* 4. '''[[Dust]]-Limit''' für [[P2PKH]]: ~546 [[sats]]; [[P2SH]]: ~294 [[sats]].
* 4. '''[[Dust]]-Limit''' für [[P2PKH]]: ~546 [[sats]]; [[P2SH]]: ~294 [[sats]].
* 5. '''Ancestor/Descendant-Limit''': Max. 25 unbestätigte Vorfahren/Nachkommen.
* 5. '''Ancestor/Descendant-Limit''': Max. 25 unbestätigte Vorfahren/Nachkommen.
* 6. '''Non-Standard Policy''' seit [[Bitcoin]] Core 0.12 schützt vor Spam.
* 6. '''Non-Standard Policy''' schützt seit [[Bitcoin]] Core 0.12 vor Spam.
* 7. '''Fee Evictions''' treten nur bei [[Mempool]] >285 MB auf (95 % von 300 MB).
* 7. '''Fee Evictions''' erfolgen ab ca. 285 MB [[Mempool]]-Auslastung.
* 8. '''Double-Spend'''-Konflikte führen unmittelbar zur Ablehnung der älteren TX.
* 8. '''Double-Spend'''-Konflikte führen zur sofortigen Ablehnung der älteren TX.
* 9. Erste spürbare Konkurrenz um [[Blockplatz]] ab [[Mempool]]-Größe von ~50 MB.
* 9. Konkurrenz um [[Blockplatz]] spürbar, sobald der [[Mempool]] mehrere Dutzend MB groß ist.
* 10. Extrem-Spitzen (>300 MB) und damit Evictions gab es in den letzten Jahren nur wenige Male jährlich.


== Wissen - kurz & kompakt ==
== Wissen - kurz & kompakt ==
* Ablehnungen sind selten und meist policy-bedingt (niedrige [[Gebühr]], Ablauf, non-standard).
* Ablehnungen sind selten und meist policy-bedingt (niedrige [[Gebühr]], Ablauf, non-standard).
* Konsensus-Fehler (gültigkeitsrelevant) führen zu sofortiger, endgültiger Verwerfung.
* Konsensus-Fehler (gültigkeitsrelevant) führen zu sofortiger Verwerfung.
* Policy-Fehler (konfigurierbar) lösen Evictions oder Rejections auf [[Node]]-Ebene aus.
* Policy-Fehler (konfigurierbar) lösen Evictions/Rejections auf [[Node]]-Ebene aus.
* [[RBF]] und [[CPFP]] helfen, feststeckende TX freizubekommen.
* RBF und [[CPFP]] helfen, feststeckende TX freizubekommen.
* Gute Fee-Schätzung vermeidet Ablehnungen praktisch komplett.
* Gute Fee-Schätzung vermeidet Ablehnungen praktisch komplett.


== Glossar ==
== Glossar ==
* [[Anytime]]: Mindestgebühr, bei der deine TX irgendwann bestätigt wird.
* '''Anytime''': Mindestgebühr, bei der deine TX irgendwann bestätigt wird.
* [[Ancestor Limit]]: Max. 25 unbestätigte Vorgänger pro [[Transaktion]].
* '''Ancestor Limit''': Max. 25 unbestätigte Vorgänger pro [[Transaktion]].
* [[Descendant Limit]]: Max. 25 unbestätigte Nachfolger pro [[Transaktion]].
* '''Descendant Limit''': Max. 25 unbestätigte Nachfolger pro [[Transaktion]].
* [[Dust]]: Sehr kleine [[Outputs]], die vom [[Netzwerk]] als Spam betrachtet werden.
* [[Dust]]: Sehr kleine [[Outputs]], die als Spam gelten.
* [[Fee Rate]]: [[Gebühr]] in [[sats]] pro virtual Byte ([[sats]]/vB).
* '''[[Fee]] Rate''': [[Gebühr]] in [[sats]] pro virtual Byte ([[sats]]/vB).
* [[Mempool]]: Speicherbereich für unbestätigte [[Transaktionen]] in jedem [[Node]].
* [[Mempool]]: Speicherbereich für unbestätigte [[Transaktionen]] in jedem [[Node]].
* [[minrelaytxfee]]: Policy-Schwelle; niedriger gebührenstarke TX werden nicht relayed.
* '''minrelaytxfee''': Policy-Schwelle; TX unterhalb wird nicht relayed.
* [[mempoolexpiry]]: Zeitgrenze (Std.), nach der TX automatisch verfallen.
* '''mempoolexpiry''': Zeitlimit (Std.), nach dem TX verfallen.
* [[Non-Standard-Transaktion]]: TX, die nicht den Policy-Regeln für Skripte/Formate entspricht.
* '''Non-Standard-[[Transaktion]]''': TX, die nicht den Policy-Regeln entsprechen.
* [[Priority]]: Gebührenvorschlag für schnellstmögliche Aufnahme (nächster [[Block]]).
* '''Priority''': Gebührenvorschlag für die schnellstmögliche Aufnahme.
* [[P2PKH]]: '''Pay-to-[[Public-Key]]-[[Hash]]''', ein Standard-Transaction-[[Output]]-Format.
* [[P2PKH]]: '''Pay-to-[[Public-Key]]-[[Hash]]''', Standard-[[Output]]-Format.
* [[P2SH]]: '''Pay-to-Script-[[Hash]]''', ein flexibleres [[Output]]-Format.
* [[P2SH]]: '''Pay-to-Script-[[Hash]]''', flexibleres [[Output]]-Format.
* [[RBF]]: [[Replace-by-Fee|Replace-By-Fee]] – Mechanismus, um eigene TX durch höhere [[Gebühr]] zu ersetzen.
* [[RBF]]: [[Replace-by-Fee|Replace-By-Fee]] – ersetzt eine TX durch eine mit höherer [[Gebühr]].
* [[CPFP]]: Child-Pays-For-Parent – Kind-[[Transaktion]] zahlt hohe [[Gebühr]], um Eltern-TX zu bestätigen.
* [[CPFP]]: Child-Pays-For-Parent – Kind-TX zahlt höhere [[Gebühr]], um die Eltern-TX zu bestätigen.
* [[Dandelion]]: [[Protokoll]] zur anonymen und gesteuerten TX-Verbreitung.
* '''Dandelion''': [[Protokoll]] zur anonymen TX-Verbreitung.
* [[Cohort-Relay]]: Verbesserte [[Mempool]]-Propagation für schnellere und sicherere Weiterleitung.
* '''Cohort-Relay''': Verbesserte [[Mempool]]-Propagation.


== Denkanstöße und weiterführende Fragen ==
== Denkanstöße und weiterführende Fragen ==
* Wie wärest du bereit, zwischen „sofortiger Bestätigung“ und „geringeren Kosten“ abzuwägen?
* Wie würdest du zwischen „sofortiger Bestätigung“ und „geringeren Kosten“ abwägen?
* Welche Kriterien würdest du für non-standard-Skripte in deinem [[Node]] festlegen – genauere Kontrolle oder maximale Flexibilität?
* Welche Kriterien würdest du für non-standard-Skripte in deinem [[Node]] festlegen?
* Inwiefern könnten dynamische [[Mempool]]-Limits helfen, starke Spitzen optimal zu bewältigen?
* Wie könnten dynamische [[Mempool]]-Limits starke Spitzen optimal abfedern?
* Glaubst du, dass Protokollerweiterungen wie EIP-1559, Dandelion oder Cohort-Relay das Ablehnungsproblem nachhaltig reduzieren werden?
* Glaubst du, dass Dandelion oder Cohort-Relay das Ablehnungsproblem nachhaltig reduzieren?

Version vom 3. Juli 2025, 16:57 Uhr

Ablehnung von Bitcoin-Transaktionen

Du kennst das sicher: Du möchtest eben schnell eine Bitcoin-Transaktion abschicken, vergleichbar mit einem Brief, den du zur Post bringst. Du wählst die richtige Gebühr, klickst auf „Senden“ – und wartest. Manchmal ploppt Tage später die ernüchternde Meldung auf: „Transaktion abgelehnt“. Dieser Artikel erklärt dir anhand zahlreicher Beispiele und Metaphern, warum das passieren kann und wie du es in Zukunft vermeidest.

Bevor wir die Ablehnungsgründe betrachten, schauen wir uns den Weg deiner Transaktion an:

Metapher: Stell dir vor, du stehst an einer Supermarkt-Kasse. Die „Express–Lane“ (Höhere Gebühr) ist kürzer, die normale Kasse (niedrige Gebühr) deutlich länger. Bezahlt dein Einkauf weniger, musst du in der langen Schlange warten – oder wirst gar nicht erst eingelassen, wenn der Laden kurz vor Ladenschluss ist.

Historische Entwicklung

In den ersten Bitcoin-Jahren war das Netzwerk wie eine kleine Dorfbäckerei: Jede gültige Transaktion wurde angenommen und weitergeleitet. Mit steigender Nachfrage wandelte sich das Dorf in eine Großstadt, die Mempools füllten sich. Ab Version 0.10 kamen deshalb Policy-Regeln wie minrelaytxfee und dustRelayFee hinzu; in 0.12/0.13 folgten striktere non-standard TX-Filter. Heute trennt Bitcoin Core strikt zwischen Konsensus-Layer (unabdingbare Regeln) und Policy-Layer (konfigurierbare Schwellen).

Konsensus- vs. Policy-Schicht

Konsensus-Fehler (unwiderruflich)

Transaktionen werden endgültig verworfen, wenn sie gegen feste Blockchain-Regeln verstoßen:

  • Ungültige Signatur oder Skript-Fehler – wie ein ungültiger Poststempel auf einem Brief.
  • Überschreitung des Block- oder TX-Gewichts (max. 4 000 000 Weight Units).
  • Doppeltes Ausgeben desselben Coins (Double-Spend).

Policy-Fehler (konfigurierbar)

Jeder Node kann eigene Regeln setzen, um Spam und Ressourcenverschwendung zu vermeiden:

  • minrelaytxfee (Standard: 1 sats/vB) – Gebühren unter diesem Wert werden nicht weitergeleitet.
  • Dust-Limits: Winzigste Beträge, die das Netzwerk als „Staub“ einstuft und nicht relayed.
  • Non-Standard-Filter: Exotische Skript-Typen (z. B. große OP_RETURN-Daten).
  • Ancestor/Descendant-Limits: Maximal 25 unbestätigte Vorfahren bzw. Nachkommen pro TX.
Denkanstoß: Stell dir vor, dein Paketdienst sortiert alle Pakete nach Größe und Dringlichkeit. Kleinste Päckchen ohne Priorität bleiben liegen, wenn das Lager voll ist.

Technische Ursachen im Detail

1. Zu niedrige Gebühr und Mempool-Eviction

  • Jede Transaktion zahlt eine Gebühr in sats/vB (Fee Rate).
  • Nodes speichern unbestätigte TX bis zum -maxmempool-Limit (Standard: 300 MB).
  • Wird dieses Limit überschritten, erfolgt eine Eviction:
    • Zuerst jene mit dem niedrigsten effektiven Gebührensatz (Descendant-Score: inkl. abhängiger TX).
    • Bis die Speichernutzung wieder unter 95 % des Limits fällt.
  • Gebührenempfehlungen „Priority“ (schnellster Block) vs. „Anytime“ (irgendwann bestätigt) TimeChainCalendar.
Metapher: Denk an einen Flughafen mit zwei Sicherheitskontrollen: Die VIP-Lane (hohe Gebühr) ist leer, die Economy-Lane (niedrige Gebühr) ist überfüllt. Steht deine „Economy“-Transaktion zu lange an, wird sie womöglich gar nicht erst hereingelassen.

2. Ablaufdatum nach 14 Tagen

  • Standard: mempoolexpiry=336 Stunden (14 Tage).
  • Unbestätigte TX, die so lange warten, werden gelöscht – unabhängig von Gebühr oder Größe.
  • Verhindert, dass veraltete Transaktionen Ressourcen blockieren.
Denkanstoß: Wie würdest du reagieren, wenn dein ungelieferter Koffer nach zwei Wochen aus dem Flughafen-Lager entsorgt wird?

3. Non-Standard-Transaktionen

Nodes lehnen TX ab, deren Skripte/Formate nicht den Policy-Regeln entsprechen:

  • Exotische Skript-Typen (z. B. große OP_RETURN-Daten).
  • Bare Multisig mit >3 Signaturen.
  • Unzulässige Push-Operationen im Skript.
  • Dust-Outputs unter dem Staublimit.

4. Konflikte und Double-Spend

5. Ancestor/Descendant-Grenzen

  • Max. 25 unbestätigte Vorfahren (Ancestor Limit) bzw. 25 Nachkommen (Descendant Limit) pro TX.
  • Überschreitung führt zur Ablehnung oder späteren Eviction.

Praktische Konsequenzen für Nutzer

  • Marktübliche Gebühren (≥1–2 sats/vB) verhindern Ablehnungen praktisch vollständig.
  • Bei extrem niedrigen Gebühren und hoher Netzlast kann deine TX evicted werden.
  • Tipps zur Vermeidung:
  • Zahle die empfohlene „Priority“- oder „Anytime“-Gebühr.
  • Aktiviere RBF, um bei Bedarf nachzubessern.
  • Nutze CPFP (Child-Pays-For-Parent), falls eine abhängige TX hängt.

Ausblick und Optimierungen

  • Protokollvorschläge wie Dandelion oder Cohort-Relay zielen auf bessere Weiterleitung ab.
  • Weitergehende Mempool-Optimierungen sind in Diskussion, aber noch nicht fest implementiert.
  • Modelle à la EIP-1559 für Bitcoin sind derzeit spekulativ.

Wissenswertes

  • 1. maxmempool (Standard): 300 MB Speicher für unbestätigte TX.
  • 2. mempoolexpiry: 336 Std. (14 Tage) bis zum automatischen Verfall.
  • 3. minrelaytxfee: 1 sat/vB – unterhalb keine Weiterleitung.
  • 4. Dust-Limit für P2PKH: ~546 sats; P2SH: ~294 sats.
  • 5. Ancestor/Descendant-Limit: Max. 25 unbestätigte Vorfahren/Nachkommen.
  • 6. Non-Standard Policy schützt seit Bitcoin Core 0.12 vor Spam.
  • 7. Fee Evictions erfolgen ab ca. 285 MB Mempool-Auslastung.
  • 8. Double-Spend-Konflikte führen zur sofortigen Ablehnung der älteren TX.
  • 9. Konkurrenz um Blockplatz spürbar, sobald der Mempool mehrere Dutzend MB groß ist.

Wissen - kurz & kompakt

  • Ablehnungen sind selten und meist policy-bedingt (niedrige Gebühr, Ablauf, non-standard).
  • Konsensus-Fehler (gültigkeitsrelevant) führen zu sofortiger Verwerfung.
  • Policy-Fehler (konfigurierbar) lösen Evictions/Rejections auf Node-Ebene aus.
  • RBF und CPFP helfen, feststeckende TX freizubekommen.
  • Gute Fee-Schätzung vermeidet Ablehnungen praktisch komplett.

Glossar

  • Anytime: Mindestgebühr, bei der deine TX irgendwann bestätigt wird.
  • Ancestor Limit: Max. 25 unbestätigte Vorgänger pro Transaktion.
  • Descendant Limit: Max. 25 unbestätigte Nachfolger pro Transaktion.
  • Dust: Sehr kleine Outputs, die als Spam gelten.
  • Fee Rate: Gebühr in sats pro virtual Byte (sats/vB).
  • Mempool: Speicherbereich für unbestätigte Transaktionen in jedem Node.
  • minrelaytxfee: Policy-Schwelle; TX unterhalb wird nicht relayed.
  • mempoolexpiry: Zeitlimit (Std.), nach dem TX verfallen.
  • Non-Standard-Transaktion: TX, die nicht den Policy-Regeln entsprechen.
  • Priority: Gebührenvorschlag für die schnellstmögliche Aufnahme.
  • P2PKH: Pay-to-Public-Key-Hash, Standard-Output-Format.
  • P2SH: Pay-to-Script-Hash, flexibleres Output-Format.
  • RBF: Replace-By-Fee – ersetzt eine TX durch eine mit höherer Gebühr.
  • CPFP: Child-Pays-For-Parent – Kind-TX zahlt höhere Gebühr, um die Eltern-TX zu bestätigen.
  • Dandelion: Protokoll zur anonymen TX-Verbreitung.
  • Cohort-Relay: Verbesserte Mempool-Propagation.

Denkanstöße und weiterführende Fragen

  • Wie würdest du zwischen „sofortiger Bestätigung“ und „geringeren Kosten“ abwägen?
  • Welche Kriterien würdest du für non-standard-Skripte in deinem Node festlegen?
  • Wie könnten dynamische Mempool-Limits starke Spitzen optimal abfedern?
  • Glaubst du, dass Dandelion oder Cohort-Relay das Ablehnungsproblem nachhaltig reduzieren?




Bitte empfiehl diesen Artikel zum Thema »Ablehnung von Bitcoin-Transaktionen« Deinen Freunden & Bekannten und hilf uns damit, dieses nützliche Wissen zu verbreiten!


Teilen auf:

Facebook

Twitter / X

LinkedIn

WhatsApp

oder

Jetzt per E-Mail teilen


Vielen Dank, dass Du dieses Wiki-Projekt weiterempfiehlst und damit entscheidend dazu beiträgst, das BitcoinToolz-Wiki noch bekannter zu machen!


Hilf mit, Wissen frei zu halten.
   Wenn Dir dieser Artikel geholfen hat, gib 21 000 sats oder 5 € zurück – damit finanzierst Du Quellenarbeit, Aktualisierungen und den Server.
Werbefrei & unabhängig – Danke!



Von ❤️ by TöpperwienTentacleTechnology-Systems, HB & AI

Zurück zur → Hauptseite