Frage zu BIP-85 bei BitBox02

Die Ableitung erfolgt, wie bei allen anderen Schlüsseln die z.B. für reguläre Bitcoin-Adressen verwendet werden auch, aus dem 512 bit Seedwert, der aus den Wiederherstellungswörtern und einer optionalen Passphrase erzeugt wird.

Wird keine optionale Passphrase verwendet, dann hängen die BIP-85 Child Keys also nur an den Wiederherstellungswörtern.

Es kann aber natürlich eine optionale Passphrase verwendet werden, die dann auch die resultierenden BIP-85 Child Keys beeinflusst, um deine zweite Frage zu beantworten.

2 „Gefällt mir“

Also hängt die Ableitung anhand von dem BIP32 root key und nicht vom BIP39 mnemonic ?

Naja, das eine schließt das andere nicht aus. Der Master Private Key (effektiv nur ein Synonym für den gerade schon erwähnten Seedwert) entsteht schließlich in der Regel aus einer BIP-39 Mnemonic (und optional einer Passphrase).

Also hängen die BIP-85 Child Keys bzw. beliebige Child Keys der Wallet sowohl am Master Private Key als auch an der Mnemonic. In letzter Instanz aber am Master Private Key, da dieser schließlich auch von der verwendeten optionalen Passphrase abhängig ist.

Die allermeisten Erklärungen gehen nicht derart ins Detail und sprechen vereinfacht davon, dass die BIP-85 Child Keys „aus den Wiederherstellungswörtern“ entstehen, was ja auch nicht falsch ist und ausreicht, um sich die Funktionsweise zu veranschaulichen.

Specification

We assume a single BIP32 master root key.

Ja, also kann hier schon das Passphares enthalten sein.

Source: bips/bip-0085.mediawiki at master · bitcoin/bips · GitHub

@Stadicus

Hi Stadicus!

Eine Frage, wahrscheinlich eher Anregung zur BIP-85 Childkeys Implementierung:
So wie ich es verstehe wird auf Basis des aktuellen Privatekeys (generiert aus dem im Secure Element hinterlegten Seed + einer evtl. eingegebenen Passphrase) ein neuer ChildKey/Childseed unter Angabe der Parameter „Anzahl Worte“ und „Index“ abgeleitet.

Im Hilfetext schreibt ihr

„Child Keys“ leiten sich vom Haupt-Seed deiner BitBox ab und ermöglichen die Erstellung neuer Wallets, ohne dass zusätzliche Wiederherstellungswörter gesichert werden müssen. Beispielsweise kannst du einen „Child Key“ generieren und in eine Hot Wallet importieren, anstatt für diese Hot Wallet vollständig neue Wiederherstellungswörter (inkl. neuem Backup) zu generieren.

In dieser Verwendung um einmalig einen Seed für die Nutzung mit einer Hotwallet zu generieren ist das absolut ausreichend und hilfreich.

Wie wäre es aber, wenn ich diesen Childseed nicht nur generieren und notieren, sondern direkt mit der angesteckten Bitbox aktiven nutzen könnte? Mal ein Szenario in den Raum geworfen, wo das helfen kann:

  • Eltern wollen für Kinder auf eigener Wallet einzahlen, und später an die Kinder wenn sie flügge werden übergeben.

Vorteile:

  • es wären keine unterschiedlichen Seedbackups für die Eltern für Eltern- und Kinderwallets nötig
  • später mit Übergabe des Vermögens können die Kinder ihren eigenen abgeleiteten Childkey erhalten, die Eltern müssen nicht wie bei unterschiedlichen Passphrases ihren eigenen Eltern-Seed teilen
  • mit einem Childkey wäre die Wallet der Kinder in der Ansparphase leicht durch Eltern verwaltbar ohne zweites Device einrichten zu müssen oder mit SD-Backups hantieren zu müssen

Und genau um den Punkt der einfachen Verwaltbarkeit geht es nun:

  • Eltern stecken ihre Bitbox an, entsperren sie
  • Senden sich Coins von der Börse (Guthaben 0,1 BTC) auf ihre BTC-Empfangsadresse senden. OK
  • Nun wollen Sie im gleichen Zug eine weitere Auszahlung von der Börse auf die von Ihnen besparte Kinderwallet machen. Aktuell umständlich, aber warum nicht so:

I. Child-Key Watch-only-Wallet
a. bei Erstnutzung von Childkeys BIP-85:

  1. Child Key generieren (let’s say 12 words, Index 0)
  2. Hinweis auf (optionales) Backup des Seed
  3. Nachfrage: willst du diesen Seed als Watchonly-Wallet in der Bitbox-App merken (zpub also speichern, um direkt die Child Key-Wallet besparen zu können)
  4. Willst du eine Empfangstransaktion auf die Child-Key-Wallet vornehmen

b. bei späterer Nutzung von Childkeys BIP-85:
Child Key-Wallet kann als Watch-only-Wallet zum Generieren von Empfangsadressen direkt in Bitbox App verwendet werden (ohne erneut den Seed generieren zu müssen)

II. Child-Key-Wallet -signing mode
Evtl. wäre es technisch ja auch möglich, einen frisch generierten Child Key temporär als aktiven Seed im Speicher zu halten, so dass mit einer der vorher gemerkten Child-Key Watch-only-Wallets dann auch Transaktionen signiert werden können.

Bei abermaliger Generierung eines Child-keys, könnte ja automatisch ein Matching des zPub mit den gemerkten Wallets stattfinden und die Wallet als nun ebenso zum Signing bereit aktiv geflaggt und eine Hinweis ausgegeben werden.

Nach einem kurzen Reboot oder einer Funktion wie Verwerfen der Child-Wallet-Private-Keys aus dem Speicher wäre es dann wieder die Elternwallet.

1 „Gefällt mir“

Hi @FrankE, danke für die Anregung und die ausführliche Beschreibung. Aktuell sind BIP85 Child Seeds eher für unabhängige Anwendungen gedacht, und nicht für die Verwendung innerhalb der BitBox02. Die BitBox verwaltet nur einen Seed gleichzeitig, daher sind wahrscheinlich verschiedene Konten innerhalb der einen Wallet aktuell der beste Weg.

Ich sehe die Vorteile deines Vorschlags, aber auch, dass das sehr schnell enorm kompliziert werden kann. Wie schnell geht vergessen, dass an einem Wallet-Backup noch weitere Unter-Wallets hängen?

Für uns sind die Child-Seeds heute schon ein Feature for fortgeschrittene User und aufgrund der Backup-Komplexität nicht massentauglich.

Ich nehme deine Anregung aber gerne mit.

3 „Gefällt mir“

Hi,

bin gerde dabei mich in das Thema praktisch mit der BB02 einzuarbeiten.
Verständnisfrage:

Nachdem ein Childkey erstellt worden ist, kann ich diesen auf der Bitbox - zu Testzwecken - nur sichtbar/nutzbar machen, in dem ich die BB02 auf Werkseinstellung zurücksetze und dann mit dem Childseed als Wallet auf die Bitbox importiere? Wollte nämlich mal den Umgang damit checken, da der Gedanke ist eine weiter BB02 zu erwerben und diese dann an den neuen Nutzer (Familienmitglied am anderen Wohnort) mit der Childseedwallet weitergeben.

BlueWallet unterstütz Bip85 nicht. Jetzt teste ich noch Sparrow.

Danke vorab für aufklärende Antworten.

Der Childseed ist einfach ein neuer Seed, der deterministisch ausgegeben wird.

Du kannst dann eine weitere BitBox holen und den dort eingeben. Und wenn du bei deiner ersten BitBox den selben Weg gehst, wird dir immer wieder diese Child-Seed genannt