Was macht einen erweiterten öffentlichen oder privaten Schlüssel aus?

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.

Die Netzwerkbytes sind ein Sicherheitsmerkmal für Menschen, sie wirken sich nicht auf die Schlüsselableitung aus. Sie dienen hauptsächlich dazu, zu identifizieren, welches Netzwerk ein Programm überprüfen soll, wenn es einen erweiterten Schlüssel erhält
Also wirkt sich nur der öffentliche oder private Schlüssel + Chaincode auf die Schlüsselableitung aus? Sind der Rest nur Kennungen? Was ist mit dem erweiterten Pub/Privat-Schlüssel bei root vor dem Münztyp? Die Geldbörse kann mehrere Münzen darunter haben. Sollten diese Daten einfach nicht aufgenommen werden?

Antworten (1)

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?

xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnwLassen Sie uns als unser xpub verwenden .

Base58-Decodierung ergibt dies

0488B21E013442193E8000000047FDACBD0F1097043B78C63C20C34EF4ED9A111D980047AD16282C7AE6236141035A784662A4A20A65BF6AAB9AE98A6C068A81C52E4B032C0FB5400C706CFCCC56B8B9C580

0488B21Esind die Versionsbytes, wie durch BIP 32 definiert.

01bedeutet, dass dieser Schlüssel wie in der Tiefe eins ist

3442193Eist der Fingerabdruck des übergeordneten Schlüssels

80000000bedeutet, dass der Schlüssel den Index 0h hat (0-ter gehärteter Schlüssel)

47FDACBD0F1097043B78C63C20C34EF4ED9A111D980047AD16282C7AE6236141ist der Kettencode

035A784662A4A20A65BF6AAB9AE98A6C068A81C52E4B032C0FB5400C706CFCCC56ist der öffentliche Schlüssel

B8B9C580ist die Base58-Check-Encoding-Prüfsumme.