Ich hatte den Eindruck, dass ein erweiterter öffentlicher Schlüssel aus dem öffentlichen Schlüssel + Kettencode besteht, und ich bin nicht vertraut mit dem, was den erweiterten privaten Schlüssel umfasst.
Dies scheint jedoch nicht der Fall zu sein. Laut pywallet :
The key consists of
* 4 byte version bytes (network key)
* 1 byte depth:
- 0x00 for master nodes,
- 0x01 for level-1 descendants, ....
* 4 byte fingerprint of the parent's key (0x00000000 if master key)
* 4 byte child number. This is the number i in x_i = x_{par}/i,
with x_i the key being serialized. This is encoded in MSB order.
(0x00000000 if master key)
* 32 bytes: the chain code
* 33 bytes: the public key or private key data
(0x02 + X or 0x03 + X for public keys, 0x00 + k for private keys)
(Note that this also supports 0x04 + X + Y uncompressed points,
but this is totally non-standard and this library won't even
generate such data.)
Es ist nicht so einfach wie Publickey + Chaincode. Kann jemand einen erweiterten Schlüssel von Anfang bis Ende dekonstruieren? Laut der erstaunlichen iancoleman-Website hat das Netzwerk auch einen Einfluss darauf, was für mich auch keinen Sinn ergibt, aber eindeutig (wie oben gezeigt) ein Teil dieser Formel ist.
Der erweiterte öffentliche Schlüssel enthält nur ein bisschen mehr Informationen als der öffentliche Schlüssel und der Kettencode, aber für die Schlüsselableitung sind nur der öffentliche Schlüssel und der Kettencode von Bedeutung. Der Rest sind nur Metadaten über die Schlüssel für Wallets und Personen.
Die Versionsbytes unterscheiden zwischen xpub, xpriv und anderen Arten von Schlüsseln. Der Fingerabdruck identifiziert den übergeordneten Schlüssel, sodass eine Brieftasche wissen kann, welcher übergeordnete Schlüssel dieser Schlüssel ist. Der Child-Index teilt einem Wallet mit, wie es diesen Schlüssel wieder vom Parent ableiten soll.
Ich bin nicht vertraut mit dem, was den erweiterten privaten Schlüssel umfasst.
Der erweiterte private Schlüssel ist genau derselbe wie der erweiterte öffentliche Schlüssel, aber anstelle von 33 Bytes öffentlicher Schlüsseldaten sind es 33 Bytes privater Schlüsseldaten.
Das Netzwerk hat auch darauf einen Einfluss, was für mich auch keinen Sinn ergibt, aber eindeutig (wie oben gezeigt) ein Teil dieser Formel ist.
Das Netzwerk bestimmt die Versionsbytes. Diese Versionsbytes sind in allem anderen in Bitcoin vorhanden und sollen dem Benutzer nur anzeigen, für welches Netzwerk der Schlüssel verwendet wird. Dies ist nützlich, um festzustellen, ob ein Schlüssel kompromittiert sein könnte (weil er z. B. zum Testen von Software verwendet wurde).
Kann jemand einen erweiterten Schlüssel von Anfang bis Ende dekonstruieren?
xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnw
Lassen Sie uns als unser xpub verwenden .
Base58-Decodierung ergibt dies
0488B21E013442193E8000000047FDACBD0F1097043B78C63C20C34EF4ED9A111D980047AD16282C7AE6236141035A784662A4A20A65BF6AAB9AE98A6C068A81C52E4B032C0FB5400C706CFCCC56B8B9C580
0488B21E
sind die Versionsbytes, wie durch BIP 32 definiert.
01
bedeutet, dass dieser Schlüssel wie in der Tiefe eins ist
3442193E
ist der Fingerabdruck des übergeordneten Schlüssels
80000000
bedeutet, dass der Schlüssel den Index 0h hat (0-ter gehärteter Schlüssel)
47FDACBD0F1097043B78C63C20C34EF4ED9A111D980047AD16282C7AE6236141
ist der Kettencode
035A784662A4A20A65BF6AAB9AE98A6C068A81C52E4B032C0FB5400C706CFCCC56
ist der öffentliche Schlüssel
B8B9C580
ist die Base58-Check-Encoding-Prüfsumme.
Raghav Sood
Arschbot