Coin Brief ENDE

Bitcoin Core 32.0 erhält Fixes für Private Broadcast, macOS-Timeout und Genesis-Hash

Bitcoin Core hat am 10. Oktober Pull Request 36427 („[32.x] More Backports") in den 32.x-Release-Zweig übernommen. Er enthält acht Änderungen, die zwischen dem 2. und 8. Oktober in master gelandet waren, damit sie mit dem kommenden Release 32.0 ausgeliefert werden statt erst mit 33.0. Drei davon ändern sichtbares Verhalten.

Private Broadcast nutzt immer alle drei Verbindungen (#36277). Private Broadcast – die Option, die eigene Transaktionen über kurzlebige Verbindungen statt über die regulären Peers verschickt, damit sich eine Transaktion schwerer dem eigenen Knoten zuordnen lässt – baut jetzt immer alle drei anfänglichen Verbindungen auf, auch wenn die Transaktion bereits zurück im Mempool ist oder sich als ungültig erwiesen hat. Autor Andrew Toth begründet das mit theoretischen Timing-Angriffen: Hörte ein Knoten mit dem Senden auf, sobald seine Transaktion zurückkommt, könnte ein Beobachter aus dem Zeitpunkt etwas ableiten. Zudem werden Verbindungsabbrüche verfolgt und Wiederholungsverbindungen ausdrücklich gewährt, um überflüssige zu vermeiden.

-rpcclienttimeout=0 funktioniert unter macOS wieder (#36340). bitcoin-cli -rpcclienttimeout=0 bedeutet laut Dokumentation „kein Timeout". Seit einer früheren Änderung im 32.0-Zyklus scheiterte es unter macOS mit „Could not connect to the server": Die CLI macht aus 0 fünf Jahre, und select() unter macOS lehnt Timeouts über 10^8 Sekunden ab – fünf Jahre sind etwa 1,58 × 10^8. Unter Linux lief derselbe Wert im int über, den poll() erwartet. Der Fix begrenzt die Wartezeit in Sock::WaitMany auf INT_MAX Millisekunden, rund 24,8 Tage, und gilt damit für alle Aufrufer. Der Beitragende kriss39 hat nach eigenen Angaben unter macOS gegen einen laufenden Knoten getestet.

Bitcoin Core 32.0 erhält Fixes für Private Broadcast, macOS-Timeout und Genesis-Hash
Bitcoin Core 32.0 erhält Fixes für Private Broadcast, macOS-Timeout und Genesis-Hash — Coin Brief

bitcoin-util getchainparams gibt den Genesis-Hash richtig herum aus (#36471). Der in 32.0 neue Befehl zeigte den Hash des Genesis-Blocks byteweise umgedreht im Vergleich zu getblockhash 0. Jetzt nutzt er dieselbe Reihenfolge wie die RPCs. Der Autor plädierte gerade deshalb für den Backport vor dem finalen Release, damit sich das Ausgabeformat danach nicht mehr ändern muss.

Der Rest sind Test- und Infrastrukturkorrekturen: HTTP-Logging statt eines wackeligen Drosselungstests (#36303), ein deterministischer Fuzz-Test für Private Broadcast (#36404), isolierte Netzwerke für CI-Container (#36435), ein sauberer Shutdown in einem Dateideskriptor-Test (#36392) und ein OpenRPC-Hex-Muster, das nun leere Strings zulässt (#36462).

Stand des Releases. Der Zweig ging am 12. Oktober zum vierten Release Candidate über. Release Candidates dienen dem Testen; einen Termin für 32.0 final hat Bitcoin Core nicht genannt.

Quellen: Bitcoin Core PR 36427 — https://github.com/bitcoin/bitcoin/pull/36427 ; PR 36277 — https://github.com/bitcoin/bitcoin/pull/36277 ; PR 36340 — https://github.com/bitcoin/bitcoin/pull/36340 ; PR 36471 — https://github.com/bitcoin/bitcoin/pull/36471

Primärquelle
Bitcoin Core (GitHub)
https://github.com/bitcoin/bitcoin/pull/36427
Geschrieben von Victoria Shinder.