@PieterWuille: Danke für die info. Ich wusste nicht so Recht, was Sie sagen, aber ich kann nicht zugreifen, die von Mauern umgeben.dat per der Bitcoin-Qt? Für die Papier-Brieftasche, die ich noch Schutzbedarf des privaten Schlüssels. Wo sind die fehlenden 5 BTC gegangen? Danke @pebwindkraft und Murch. Ich habe versucht, ändern Sie die Frage, aber es würde sich ändern, so viel, dass vorhandene Kommentare und Antworten würde keinen Sinn mehr, daher bin ich einfach belassen wie es war (fühlen Sie sich frei, um Sie zu schließen). In jedem Fall, Ihre und skang404 die Kommentare im wesentlichen die Frage beantwortet, die ich anfangs hatte.

BIP32 gibt die Serialisierungs-format verwendet erweiterte Tasten wie:

Serialisierung-format Erweitert, öffentliche und private Schlüssel werden serialisiert wie folgt:

  • 4 byte: version Byte (mainnet: 0x0488B21E öffentlichkeit, 0x0488ADE4 private; testnet: 0x043587CF öffentlichkeit, 0x04358394 privat)
  • 1 byte: Tiefe: 0x00 für master-Knoten, 0x01 für level-1 abgeleitete Schlüssel,
  • 4 bytes: der Fingerabdruck des übergeordneten Schlüssel (0x00000000, wenn der master-Schlüssel)
  • 4 bytes: Kind Nummer. Dies ist ser32(i) for i in xi = xpar/i, mit xi der Schlüssel, die serialisiert werden. (0x00000000, wenn der master-Schlüssel)
  • 32 bytes: die chain code
  • 33 bytes: die öffentlichen Schlüssel oder private key-Daten (serP(K) für öffentliche Schlüssel, 0x00 || ser256(k) für den privaten Schlüssel)

Dieser 78-byte-Struktur sein kann codiert wie andere Bitcoin-Daten in Base58, indem Sie zunächst das hinzufügen von 32-Prüfsumme bits (abgeleitet aus dem doppelten SHA-256-Prüfsumme) und dann umwandeln die Base58-Darstellung. Dies führt zu einer Base58-kodierten string bis zu 112 Zeichen. Wegen der Wahl der version bytes, die Base58-Darstellung beginnt mit "xprv" oder "xpub" auf mainnet, "tprv" oder "tpub" auf testnet.

Beachten Sie, dass die Fingerabdrücke der Eltern nur dient als eine schnelle Möglichkeit zum erkennen von übergeordneten und untergeordneten Knoten in software, und die software muss bereit sein, den Umgang mit Kollisionen. Intern, der vollständige 160-bit-Bezeichner verwendet werden könnte.

Beim Einlesen eines serialisierten extended public key-Implementierungen müssen überprüfen Sie, ob der X-Koordinate in die public-key-Daten entspricht ein Punkt auf der Kurve. Wenn nicht, wird der erweiterte public-key ungültig ist.

Ihre PHP-code muss zuerst die b58check Algorithmus, der zum überprüfen der xpub ist korrekt codiert und anschließend decodiert es in den oben genannten Werten. Schließlich müssen Sie überprüfen, dass die pubkey gefunden mit der Entschlüsselung des xpub ist ein Wert, der Punkt auf der secp256k1 Kurve.