/ home / newsletters /
Bitcoin Optech Newsletter #346
Diese Woche fasst der Newsletter eine Diskussion über das aktualisierte dynamische Feerate-Anpassungssystem von LND zusammen. Außerdem stellen wir wieder unsere regelmäßigen Rubriken vor, in denen wir kürzlich erfolgte Änderungen an Diensten und Client-Software beschreiben, neue Releases und Release-Kandidaten ankündigen und wichtige Merges in populäre Bitcoin-Infrastruktursoftware zusammenfassen.
News
-
● Diskussion zum dynamischen Feerate-Anpassungssystem in LND: Matt Morehouse postete im Delving-Bitcoin-Forum eine Beschreibung des kürzlich neu geschriebenen sweeper-Systems in LND, das die Feerates für Onchain-Transaktionen (einschließlich RBF-Fee-Bumps) festlegt. Zu Beginn erläutert er die sicherheitskritischen Aspekte des Feemanagements in einem LN-Knoten und beschreibt das natürliche Bestreben, Gebühren zu vermeiden. Anschließend stellt er zwei generelle Strategien vor, die LND verwendet:
-
Anfragen an externe Feerate-Schätzungen, z.B. an einen lokalen Bitcoin-Core-Knoten oder einen Drittanbieter. Das wird hauptsächlich verwendet, um anfängliche Feerates festzulegen und nicht-zeitkritische Transaktionen zu beschleunigen.
-
Exponentielles Fee-Bumping, sobald sich ein bestimmter Zeitdruck abzeichnet, um zu gewährleisten, dass Probleme mit dem lokalen Mempool oder der Fee-Schätzung nicht zu einer Verzögerung führen. Beispielsweise verwendet Eclair exponentielles Fee-Bumping, wenn die Deadline bei sechs Blöcken liegt.
Im Anschluss beschreibt Morehouse, wie diese beiden Strategien im neuen Sweeper-System kombiniert werden: „HTLC-Auszahlungen mit ähnlichen Deadlines werden in einer einzigen Batch-Transaktion zusammengefasst. Das Budget für die Batch-Transaktion wird als Summe der Budgets der einzelnen HTLCs berechnet. Auf Basis von Budget und Deadline wird dann eine Gebührenfunktion ermittelt, die steuert, wie viel des Budgets bis zum Erreichen der Deadline verbraucht wird. Standardmäßig wird eine lineare Gebührenfunktion genutzt, die auf einem niedrigen Gebührensatz (bestimmt durch das Minimum-Relay-Gebührenniveau oder einen externen Schätzer) startet und bei nur noch einem Block Restzeit das gesamte Budget für die Gebühr einsetzt.“
Außerdem beschreibt er, wie die neue Logik effektiv gegen Replacement Cycling-Angriffe schützt und kommt zu dem Schluss: „Mit den Standardparametern von LND muss ein Angreifer mindestens das 20-fache des HTLC-Werts aufwenden, um erfolgreich einen Replacement Cycling-Angriff durchzuführen.“ Er fügt hinzu, dass das neue System auch den Schutz von LND gegen Pinning-Angriffe verbessert.
Abschließend verlinkt er auf mehrere „LND-spezifische Fehler- und Verwundbarkeitsbehebungen“, die dank der überarbeiteten Logik den Schutz weiter erhöhen. Abubakar Sadiq Ismail antwortete mit Vorschlägen, wie alle LN-Implementierungen (und andere Software) Bitcoin Cores Fee-Schätzung noch effektiver integrieren können. Auch weitere Entwickler kommentierten, fügten der Beschreibung einige Details hinzu.
-
Änderungen an Diensten und Client-Software
In diesem monatlichen Abschnitt stellen wir interessante Aktualisierungen bei Bitcoin-Wallets und -Diensten vor.
-
● Wally 1.4.0 veröffentlicht: Die libwally-core 1.4.0 Version fügt Unterstützung für Taproot hinzu, erlaubt das Ableiten von BIP85-RSA-Schlüsseln und bietet erweiterte PSBT- und Descriptor-Funktionen.
-
● Bitcoin Core Config Generator angekündigt: Das Projekt Bitcoin Core Config Generator ist eine Terminal-Anwendung zum Erstellen von
bitcoin.conf
-Konfigurationsdateien für Bitcoin Core. -
● Regtest Entwicklungsumgebung im Container: Das Repository regtest-in-a-pod stellt einen Podman-Container bereit, der mit Bitcoin Core, Electrum und Esplora eingerichtet ist, wie im Blog-Beitrag Using Podman Containers for Regtest Bitcoin Development beschrieben.
-
● Explora Transaktions-Visualisierungstool: Explora ist ein webbasiertes Tool zum Anzeigen und Navigieren von Transaktionsinputs und -outputs.
-
● Hashpool v0.1 getaggt: Hashpool ist ein auf dem Stratum v2 Reference-Implementation basierender Mining-Pool, bei dem Mining-Shares als ecash-Token repräsentiert werden (siehe Podcast #337).
-
● DMND startet Pool-Mining: DMND führt Stratum v2 Pool-Mining ein und baut damit auf der früheren Ankündigung von Solo-Mining auf.
-
● Krux fügt Taproot und Miniscript hinzu: Krux integriert Miniscript und Taproot mithilfe der embit-Bibliothek.
-
● Quelloffene Secure Element-Lösung angekündigt: Das TROPIC01 ist ein Secure Element, das auf RISC-V basiert und mit einer offenen Architektur für Auditierbarkeit entwickelt wurde.
-
● Nunchuk startet Group Wallet: Group Wallet bietet Multisignature-Signaturen, Taproot, Coin-Control, Musig2 sowie eine gesicherte Kommunikation zwischen den Teilnehmern durch die Wiederverwendung von Output-Deskriptoren in der BIP129 Bitcoin Secure Multisig Setup (BSMS)-Datei.
-
● FROSTR-Protokoll angekündigt: FROSTR verwendet das FROST Threshold Signature-Verfahren für k-of-n Signaturen und Schlüsselverwaltung in nostr.
-
● Bark auf Signet gestartet: Die Bark-Implementierung von Ark ist nun verfügbar auf Signet, mit einem Faucet und einem Demo-Shop zu Testzwecken.
-
● Cove Bitcoin Wallet angekündigt: Cove Wallet ist eine quelloffene Bitcoin-Mobile-Wallet auf Basis von BDK, die Technologien wie PSBTs, Wallet-Labels, Hardware-Signaturen und mehr unterstützt.
Releases und Release-Kandidaten
Neue Veröffentlichungen und Release-Kandidaten populärer Bitcoin-Infrastrukturprojekte. Bitte erwägen Sie ein Upgrade oder helfen Sie beim Testen neuer Versionen.
- ● Bitcoin Core 29.0rc2 ist ein Release-Kandidat für die nächste Hauptversion des am weitesten verbreiteten Full-Nodes im Netzwerk.
Wichtige Änderungen an Code und Dokumentation
Bedeutende jüngste Änderungen in Bitcoin Core, Core Lightning, Eclair, LDK, LND, libsecp256k1, Hardware Wallet Interface (HWI), Rust Bitcoin, BTCPay Server, BDK, Bitcoin Improvement Proposals (BIPs), Lightning BOLTs, Lightning BLIPs, Bitcoin Inquisition und BINANAs.
-
● Bitcoin Core #31649 entfernt alle Checkpoint-Logik, die nach der Einführung des Headers-Presync-Verfahrens schon seit einigen Jahren nicht mehr nötig ist (siehe Newsletter #216). Durch den Vergleich der gesamten Proof-of-Work (PoW) mit dem vordefinierten Schwellenwert
nMinimumChainWork
kann ein Node während des Initial Block Download (IBD) feststellen, ob eine Header-Kette gültig ist. Nur Ketten, deren gesamte PoW diesen Wert übertrifft, werden gespeichert. Dadurch wird effektiv verhindert, dass das Node massenhaft nutzlose Header laden muss. Diese Änderung macht Checkpoints, die oft als zentralisiertes Element galten, überflüssig. -
● Bitcoin Core #31283 führt eine neue Methode
waitNext()
in dasBlockTemplate
-Interface ein. Sie gibt nur dann ein neues Template zurück, wenn sich die Chain-Spitze ändert oder die Mempool-Gebühren über dieMAX_MONEY
-Grenze steigen. Zuvor erhielten Miner bei jeder Anfrage ein neues Template, was unnötige Template-Erzeugung verursachte. Diese Änderung bringt das Vorgehen in Einklang mit der Stratum V2-Protokollspezifikation. -
● Eclair #3037 erweitert den Befehl
listoffers
(siehe Newsletter #345), sodass alle relevanten Offer-Daten, einschließlich der ZeitstempelcreatedAt
unddisabledAt
, ausgegeben werden und nicht nur rohe Type-Length-Value (TLV)-Daten. Zusätzlich behebt das PR einen Fehler, bei dem der Node abstürzte, wenn das gleiche Angebot zweimal registriert werden sollte. -
● LND #9546 ergänzt den Befehl
lncli constrainmacaroon
(siehe Newsletter #201) um das Flagip_range
, das den Zugriff über ein bestimmtes IP-Adressspektrum einschränkt, sofern man ein entsprechendes Macaroon (Authentifizierungstoken) nutzt. Bisher konnten Macaroons nur auf bestimmte IP-Adressen beschränkt oder freigegeben werden. -
● LND #9458 führt für bestimmte Peers beschränkte Zugriffsslots ein, konfigurierbar über das Flag
--num-restricted-slots
, um anfängliche Zugriffsberechtigungen zu steuern. Peers erhalten Stufen für den Zugriff basierend auf ihrer Channel-Historie: Wer einen bestätigten Channel hatte, besitzt „geschützten“ Zugriff; mit einem unbestätigten Channel gibt es vorübergehenden Zugriff; alle anderen bekommen „eingeschränkten“ Zugriff. -
● BTCPay Server #6581 fügt RBF-Unterstützung hinzu und ermöglicht damit Fee-Bumping für Transaktionen, die keine Nachkommen haben und deren Inputs aus der Wallet des jeweiligen Stores stammen. Nutzer können nun zwischen CPFP und RBF wählen, um eine Transaktion zuFee-bumpen. Fee-Bumping benötigt NBXplorer Version 2.5.22 oder höher.
-
● BDK #1839 erweitert die Logik zum Erkennen und Behandeln zurückgezogener (doppelt ausgegebener) Transaktionen durch ein neues Feld
TxUpdate::evicted_ats
, welches die Timestampslast_evicted
inTxGraph
aktualisiert. Transaktionen gelten als evicted, wenn der Eintrag inlast_evicted
über ihremlast_seen
-Wert liegt. Der Algorithmus zur Kanonisierung (siehe Newsletter #335) ignoriert solche Transaktionen, solange kein kanonischer Nachfolger aufgrund von Transitivitätsregeln existiert. -
● BOLTs #1233 ändert das Node-Verhalten derart, dass ein HTLC niemals upstream beendet wird, wenn dem Node das zugehörige Preimage bekannt ist, was die Begleichung des HTLC sicherstellt. Zuvor empfahl die Spezifikation, ein nicht mehr in einem bestätigten Commitment enthaltenes HTLC upstream zu beenden, selbst wenn man das Preimage kannte. Ein Fehler in älteren LND-Versionen vor 0.18 sorgte bei DoS-Angriffen dafür, dass HTLCs nach einem Neustart abgelehnt wurden, obwohl das Preimage bekannt war, was den Verlust des HTLC-Werts bedeutete (siehe Newsletter #344).