Glossar / Adressen und Schlüssel
Master Chain Code
Auch bekannt als Privater Hauptschlüssel.
- Was ist der Master Chain Code?
- Der Master Chain Code ist die rechte Hälfte des 64 Byte großen Hashes Ihres Seeds, das Gegenstück zum privaten Hauptschlüssel, der auf Tiefe null des Baums einer HD-Wallet sitzt.
Spezifiziert im BIP-32.
Jeder Schlüssel, den Sie jemals verwenden werden, stammt von diesem einen Paar ab. Ein einziger HMAC-SHA512-Durchlauf über den Seed, mit der ASCII-Zeichenkette Bitcoin seed als Schlüssel, liefert 64 Byte: Die ersten 32 werden zum privaten Hauptschlüssel, die letzten 32 zum Master Chain Code. Wer den Seed kopiert, hat alles darunter kopiert, und genau deshalb ist eine Sicherung ein Satz und kein Aktenschrank.
So funktioniert es
Die Erzeugung des Hauptpaares läuft genau einmal, bei der Erstellung der Wallet. BIP-32 akzeptiert einen Seed zwischen 128 und 512 Bit, empfiehlt 256 und schickt ihn durch den oben beschriebenen schlüsselbasierten Hash. Das Paar, das dabei herauskommt, ist der Knoten, der als m am Anfang jedes Ableitungspfads geschrieben wird, und darüber steht nichts.
In diesem Schritt steckt eine Gültigkeitsprüfung. Wenn die linken 32 Byte als null herauskommen oder als eine Zahl, die größer oder gleich der Ordnung der secp256k1-Kurve ist, erklärt BIP-32 den Seed für ungültig, und die Implementierung muss ihn zurückweisen. Die Wahrscheinlichkeit, auf einen der beiden Fälle zu stoßen, ist geringer als 1 zu 2 hoch 127, deshalb hat noch keine Wallet einen gemeldet, aber die Regel ist es, die jeden akzeptierten Seed eindeutig verwendbar macht.
Serialisiert kündigt sich die Wurzel selbst an. Private erweiterte Schlüssel im Mainnet tragen die Versionsbytes 0x0488ADE4 und erscheinen als xprv, öffentliche tragen 0x0488B21E und erscheinen als xpub. An der Wurzel ist das Tiefenbyte 0x00, und sowohl der Eltern-Fingerabdruck als auch die Kindnummer sind vier Nullbytes, weil es keinen Elternknoten gibt, auf den sie zeigen könnten.
Die Zahl, mit der Sie tatsächlich umgehen, ist der Fingerabdruck, nicht die Rohbytes. Den öffentlichen Hauptschlüssel zuerst mit SHA-256 und dann mit RIPEMD-160 zu hashen und die ersten vier Byte zu behalten, ergibt eine achtstellige Hexadezimalzeichenkette, die eine Wallet identifiziert, ohne etwas preiszugeben, das sich daraus ableiten ließe.
Wo sie auftaucht
Consumer-Software verbirgt das Hauptpaar vollständig und zeigt stattdessen den Fingerabdruck. Sparrow druckt ihn neben jeden Keystore, Bitcoin Core beginnt jede Zeile der Ausgabe von listdescriptors mit ihm in eckigen Klammern, und eine Coldcard zeigt ihn auf dem Startbildschirm an, damit Sie bestätigen können, welchen Seed das Gerät gerade enthält. Wenn eine PSBT eintrifft, vergleicht ein Signiergerät den Fingerabdruck im Feld für die Schlüsselherkunft mit seinem eigenen, bevor es überhaupt entscheidet, ob die Anfrage an es gerichtet ist.
Bei Multisig hört die Wurzelidentität auf, eine Nebensache zu sein. Eine Wallet mit 2 von 3 lässt sich nicht allein aus drei Seed-Phrasen wiederherstellen, weil der Wiederaufbau erfordert, auch den Fingerabdruck und den Pfad jedes Mitunterzeichners zu kennen. Deshalb rät jedes ernsthafte Multisig-Werkzeug dazu, den Wallet-Deskriptor neben den Wörtern aufzubewahren, und deshalb können Bitcoin verloren gehen, die keine einzelne Phrase erreicht, wenn der Deskriptor verloren geht.
Der einzige Moment, in dem Sie den privaten Hauptschlüssel direkt anfassen, ist ein Import. Eine xprv in Software einzufügen übergibt den gesamten Baum: jeden Verwendungszweck, jedes Konto, jede künftige Adresse, ohne Möglichkeit, die Vollmacht auf einen Zweig zu beschränken. Es gibt keine Teilversion einer Wurzel, weshalb Hardware-Wallets sich weigern, eine zu exportieren.
Master Chain Code vs. Seed-Phrase
Die Phrase kommt zuerst und das Hauptpaar danach, und sie gehören zu verschiedenen Standards. BIP-39 macht aus 12 oder 24 Wörtern einen 512 Bit großen Seed, indem PBKDF2 2.048 Runden lang läuft; BIP-32 macht aus diesem Seed dann den privaten Hauptschlüssel und den Master Chain Code. Die Ebenen bleiben so unabhängig, dass eine zusätzliche Passphrase den Seed ändert und damit das Hauptpaar und jede Adresse darunter, während die Wörter auf Ihrer Karte genau gleich bleiben. Electrum zeigt es von der anderen Seite: Seine Wiederherstellungsphrasen sind überhaupt kein BIP-39, und trotzdem ergeben sie eine gewöhnliche BIP-32-Wurzel.