Coin Brief ENDE

Bitcoin Core: Wallets speichern künftig, welcher Client sie zuletzt geöffnet und entschlüsselt hat

Bitcoin Core hat am 5. Oktober den Pull Request #32895 eingegliedert: „wallet: Prepare for future upgrades by recording versions of last client to open and decrypt“.

Das Problem, auf das er vorbereitet. Wird eine Wallet automatisch aktualisiert, geschieht das so, dass sie sich weiter in einer älteren Version öffnen lässt. Lädt der Nutzer sie danach wieder in eine aktualisierte Version, wird das automatische Upgrade unter Umständen nicht wiederholt, und die Wallet enthält aktualisiertes und nicht aktualisiertes Material zugleich. Wird gespeichert, welcher Client die Wallet zuletzt geöffnet hat, kann eine neuere Version diesen Ablauf Upgrade–Downgrade–Upgrade erkennen und erneut aktualisieren. Damit das funktioniert, muss die Speicherung bereits in Versionen enthalten sein, die vor neuen automatischen Upgrades erscheinen.

Bitcoin Core: Wallets speichern künftig, welcher Client sie zuletzt geöffnet und entschlüsselt hat
Bitcoin Core: Wallets speichern künftig, welcher Client sie zuletzt geöffnet und entschlüsselt hat — Coin Brief

Was der PR in drei Commits macht.

  • Trennt die Wallet-Client-Version von der Node-Version. Alle Wallet-Versionen müssen Bit 19 gesetzt haben; der Anfangswert ist 0 | (1 << 19). Laut Beschreibung müssen die Versionen nur mindestens 299900 betragen, und das erzwungene Bit 19 war ein einfacher Weg, das sicherzustellen.
  • Führt Wallet Client Features ein, Flags in einem eigenen Datensatz, getrennt von den bestehenden Wallet-Feature-Flags, weil Versionsnummern weniger flexibel sind als Flags. Die Wallet-Client-Version wird (1 << 19) + 1.
  • Ergänzt einen Datensatz zu den Features des zuletzt entschlüsselnden Clients, weil manche Upgrades private Schlüssel brauchen und erst nach dem Entschlüsseln laufen können.

Warum v24.0 die Grenze ist. Wallets enthalten bereits einen Datensatz version mit der Client-Version, ältere Releases aktualisierten ihn aber uneinheitlich: Seit v24.0 wird er bei jeder abweichenden Client-Version aktualisiert, frühere Versionen taten das nur, wenn der Client neuer war. Die PR-Beschreibung folgert, dass Bitcoin Core damit Downgrades bis v24.0 erkennen und mehrere Funktionen mit automatischem Upgrade parallel entwickeln kann.