Glossar / Adressen und Schlüssel
Derivation-Pfad
- Was ist ein Derivation-Pfad?
- Ein Derivation-Pfad ist der Weg durch den Schlüsselbaum einer HD-Wallet, geschrieben wie m/84h/0h/0h/0/0, der der Software genau sagt, welchen der Milliarden Schlüssel sie aus Ihrem Seed wiederherstellen soll.
Spezifiziert im BIP-44.
Ein Derivation-Pfad ist eine Koordinate, kein Geheimnis. Zwei Zahlen am Anfang entscheiden, ob Ihre Wörter Adressen wiederherstellen, die mit 1, 3, bc1q oder bc1p beginnen, denn BIP-44, BIP-49, BIP-84 und BIP-86 lesen dieselbe Phrase jeweils anders. Den Pfad neben Ihrer Sicherung zu notieren, ist der Unterschied zwischen einer Wiederherstellung, die Ihre Bitcoin findet, und einer, die null meldet.
So funktioniert es
Ein Pfad wird von links nach rechts gelesen, eine Ebene pro Schrägstrich, und jede Ebene grenzt die Suche ein. Das m am Anfang ist der aus Ihrem Seed erzeugte Hauptschlüssel. Alles danach ist ein Index, und ein Apostroph oder ein h markiert diesen Index als gehärtet (hardened).
Die erste Ebene ist der Verwendungszweck (purpose), und sie entscheidet, wie Ihre Adressen aussehen.
| Standard | Account-Pfad | Erzeugte Adressen |
|---|---|---|
| BIP-44 | m/44h/0h/0h | Legacy, beginnend mit 1 |
| BIP-49 | m/49h/0h/0h | verschachteltes SegWit, beginnend mit 3 |
| BIP-84 | m/84h/0h/0h | natives SegWit, beginnend mit bc1q |
| BIP-86 | m/86h/0h/0h | Taproot, beginnend mit bc1p |
Die zweite Ebene ist der Coin-Typ, entnommen dem SLIP-0044-Register, in dem Bitcoin 0 und jedes Testnetz 1 ist. Die dritte ist die Account-Nummer, durch die ein Seed eine persönliche Wallet bei 0h und eine Firmen-Wallet bei 1h ohne gemeinsamen Verlauf enthalten kann. Danach endet die Härtung: die vierte Ebene ist die Kette, 0 für Adressen, die Sie herausgeben, und 1 für Wechselgeld, und die fünfte ist der Adressindex, der mit jedem Zahlungseingang hochzählt.
Diese Trennung zwischen gehärteten und normalen Ebenen ist beabsichtigt. Weil die Account-Ebene gehärtet ist, kann der erweiterte öffentliche Schlüssel für m/84h/0h/0h auf ein Smartphone oder an einen Buchhalter exportiert werden, der dann jede Empfangs- und Wechselgeldadresse darunter ableiten kann, aber nicht seitwärts in ein anderes Konto oder nach oben zum Hauptschlüssel gelangen kann.
Multisig verwendet einen eigenen Zweig. BIP-48 legt die Schlüssel der Mitunterzeichner bei m/48h/0h/0h/2h für natives SegWit ab, wobei die letzte gehärtete Ebene den Skripttyp angibt, sodass ein Gerät ein Einzelunterschrift-Konto von einem Multisig-Konto unterscheiden kann, bevor es etwas signiert.
Warum das beim Bitcoin-Kauf wichtig ist
Der Pfad berührt Ihre Sicherheit nie. Er ändert nichts daran, wie schwer Ihre Bitcoin zu stehlen sind, und alles daran, ob die Software vor Ihnen sie finden kann.
Der Fehler, den das verursacht, ist häufig und zuverlässig erschreckend. Sie kaufen bei einer Börse, zahlen auf ein Gerät aus, und die Bitcoin landen an bc1q-Adressen unter m/84h/0h/0h. Ein Jahr später stellen Sie dieselben 24 Wörter in einer anderen App wieder her, die standardmäßig Legacy verwendet, und der Saldo zeigt 0,00000000, während ein Block-Explorer Ihr Geld unberührt an der alten Adresse zeigt. Nichts ist verloren. Die App sucht im falschen Zweig eines Baums mit vier Milliarden Kindern pro Ebene.
Die Standardeinstellungen unterscheiden sich zwischen den Wallets, die diese Website bewertet. Trezor Suite und Ledger Live zeigen Konten jeweils nach Adresstyp an und wählen still einen Verwendungszweck für Sie. Electrum fragt bei der Wiederherstellung, welchen Skripttyp Sie möchten, und verbirgt ein Freitext-Pfadfeld hinter einer erweiterten Option. Sparrow durchsucht mehrere Standardpfade gleichzeitig und zeigt Ihnen, welcher einen Verlauf hat. Keine von ihnen ist falsch, und keine kann erraten, was die andere getan hat.
Zwei Gewohnheiten beseitigen das ganze Problem. Schreiben Sie den Account-Pfad und den Adresstyp auf dieselbe Notiz wie den Wallet-Namen, und bewahren Sie diese Notiz an einem Ort auf, den Sie ohne den Seed erreichen, etwa in einem Passwort-Manager, da sie für sich genommen nichts verrät. Vergleichen Sie dann, bevor Sie einer Wiederherstellung vertrauen, die erste angezeigte Empfangsadresse mit der, die Ihr ursprüngliches Gerät anzeigt. Wenn diese beiden Zeichenketten übereinstimmen, stimmen auch alle darunter liegenden Adressen überein.
24 Wörter in Electrum wiederherstellen und null sehen
Eine Wiederherstellung auf dem falschen Pfad läuft so ab. Eine Trezor Model T wurde mit 24 Wörtern eingerichtet, eine Auszahlung von einer Börse ging an ihre erste native SegWit-Adresse, und das Gerät liegt nun in einer Schublade. Monate später wird die Phrase in Electrum auf einem Laptop eingegeben.
Electrum fragt vor dem Scannen nach dem Skripttyp. Wählen Sie Legacy p2pkh, und es leitet m/44h/0h/0h ab, zeigt Adressen, die mit 1 beginnen, findet nichts und meldet eine leere Wallet. Die Bitcoin liegen weiterhin an der bc1q-Adresse, weiterhin bestätigt und weiterhin für jeden mit der txid sichtbar.
Die Lösung dauert eine Minute. Stellen Sie erneut wieder her, wählen Sie natives SegWit, oder öffnen Sie das erweiterte Derivation-Feld und geben Sie m/84'/0'/0' von Hand ein. Electrum scannt erneut, der Saldo erscheint, und die Adressliste beginnt mit derselben Zeichenkette, die die Trezor unter ihrem Empfangs-Tab anzeigt. Wenn weiterhin null angezeigt wird und Sie wissen, dass Zahlungen weiter entlang des Zweigs gingen, erhöhen Sie das Gap-Limit vom Standardwert 20, bevor Sie annehmen, dass etwas fehlt.
Nichts in dieser Abfolge brachte die Bitcoin in Gefahr, denn eine Wiederherstellung ist ein Lesevorgang. Sie können jeden Verwendungszweck der Reihe nach probieren, einer nach dem anderen, und die einzigen Kosten sind die Zeit, die jeder erneute Scan dauert.
Derivation-Pfad vs. Output-Descriptor
Ein Pfad sagt, wo; ein Descriptor sagt, wo, was und ab welchem Schlüssel. Der Descriptor wpkh([fingerprint/84h/0h/0h]xpub/0/*) enthält denselben Pfad, dazu den Skripttyp als Wrapper-Funktion, dazu den erweiterten Schlüssel selbst, dazu eine Prüfsumme, die ein vertipptes Zeichen erkennt. Wenn Sie jemandem einen Pfad geben, verrät das nichts über Ihre Wallet. Wenn Sie jemandem einen Descriptor geben, übergeben Sie Ihren gesamten Adressverlauf und jede künftige Adresse auf diesem Zweig, weshalb der eine gefahrlos per E-Mail verschickt werden kann und der andere nicht.