Importieren von Hauptschlüsseln auf Bitcoin Core

Ich möchte eine mnemonische Phrase und BIP 39 verwenden, um die Schlüssel zu speichern, und Bitcoin-Core verwenden. Ich verstehe, dass Master Private Keys nicht zumindest direkt importiert werden können und diese mnemonische Phrase nicht unterstützt wird.

Ich weiß auch, dass es die Idee gibt, das Wallet-Format des Bitcoin-Kerns zu überdenken, um Deskriptoren zu verwenden , die die Schlüsselableitung mit BIP32 unterstützen.

Meine Idee war, importmulti zu verwenden, um eine einfach verwendbare Brieftasche mit einigen Adressen zu generieren, die aus dem Hauptkontoschlüssel generiert wurden.

Mit https://iancoleman.io/bip39/ habe ich einen Seed und eine Mnemonik generiert:

rebel image use energy write boil throw okay claw
umbrella advice together clarify water actress

Von dort kann ich den erweiterten privaten Schlüssel des Kontos (44'/1'/0') erhalten:

tprv8fvSBE7NPnC8FJfBwcptSmmgxhQZhsAbbzRWaLo9d9ystozdV7BFUbRHqvYgL18fnV3WfM4GZb2cLKbLq5H8qZqC9XDnq8Mep3RWXfRsZ7o

Von dort aus kann ich einige Deskriptoren erstellen, um eine verwendbare Brieftasche zu erstellen:

Extern

deriveaddresses "combo(tprv8fvSBE7NPnC8FJfBwcptSmmgxhQZhsAbbzRWaLo9d9ystozdV7BFUbRHqvYgL18fnV3WfM4GZb2cLKbLq5H8qZqC9XDnq8Mep3RWXfRsZ7o/0h/*)#quvrmfad" 0
# => ["myeHNHuNnbk1aG4WcJNkWw6foM2G64AXGF", "myeHNHuNnbk1aG4WcJNkWw6foM2G64AXGF", "tb1qcm233e9h79ntuv4c5mhsvmfhe2umvm0hsgafsf", "2N56BvNBqmkTh1Jic4GbpXSYpbtTNHUdQFw"]

Intern

deriveaddresses "wpkh(tprv8fvSBE7NPnC8FJfBwcptSmmgxhQZhsAbbzRWaLo9d9ystozdV7BFUbRHqvYgL18fnV3WfM4GZb2cLKbLq5H8qZqC9XDnq8Mep3RWXfRsZ7o/1h/*)#6gdaynzv" 0
# => ["tb1q5vgxy6ntsugpdde9ryhst66cz8z4c8ztp4k7qv"]

Um die Wallet zu generieren, habe ich eine leere Wallet erstellt (da ich nicht auf Backups angewiesen sein möchte, nur die Mnemonik, die ich zuvor generiert habe) und einige Adressen mit importiert importmulti:

createwallet "mnemonic-test" false true
importmulti '[{"desc": "combo(tprv8fvSBE7NPnC8FJfBwcptSmmgxhQZhsAbbzRWaLo9d9ystozdV7BFUbRHqvYgL18fnV3WfM4GZb2cLKbLq5H8qZqC9XDnq8Mep3RWXfRsZ7o/0h/*)#quvrmfad", "range": 10, "timestamp": "now"}, {"desc": "wpkh(tprv8fvSBE7NPnC8FJfBwcptSmmgxhQZhsAbbzRWaLo9d9ystozdV7BFUbRHqvYgL18fnV3WfM4GZb2cLKbLq5H8qZqC9XDnq8Mep3RWXfRsZ7o/1h/*)#6gdaynzv", "range": 10, "internal": true, "timestamp": "now"}]' '{"rescan": false}'

Es scheint zu funktionieren, alle generierten Adressen werden generiert, es ist kein HD-Seed aktiviert (also werden die Adressen immer vom mnemonischen Seed abgeleitet).

Die Probleme, die ich gefunden habe, sind, dass diese Adressen niemals von Bitcoin-Wallet verwendet werden. Wenn versucht wird, Bitcoin zu erhalten, sagt es, dass es keine Adresse generieren kann (versucht nicht, eine der bereits generierten Adressen zu verwenden) und wenn es ausgegeben wird, sagt es, dass es das tut keine interne Adresse zur Verfügung haben.

Weißt du, wie man diese Coins aktiviert?

Antworten (1)

Sie können keine privaten Schlüssel in den Schlüsselpool importieren. Dies ist derzeit nicht erlaubt, da es zumindest bei der heutigen Funktionsweise des Wallets allgemein als unsicher gilt. Es wird daran gearbeitet, dies in Zukunft zu ändern.

Sie könnten ein Split-Wallet-Setup durchführen, bei dem Sie ein Watch-Only-Wallet mit den in den Schlüsselpool importierten Pubkeys haben und dieses für die Adressgenerierung und Transaktionserstellung verwenden. Dann haben Sie eine Brieftasche mit nur den importierten privaten Schlüsseln und verwenden diese zum Signieren. Aber das ist nicht das, was Sie wollen.

Wenn Sie nicht an die Verwendung eines BIP 39-Seeds gebunden sind, können Sie einen 256-Bit-Seed generieren und verwenden, sethdseedum den HD-Seed einer Brieftasche festzulegen. Das würde tun, was Sie wollen, aber BIP 39 verwendet 512-Bit-Seeds und nicht 256, daher funktioniert es dort nicht.


Importierte Adressen werden niemals automatisch verwendet, wenn Sie dies tun getnewaddress. Wenn Sie sie importieren, müssen Sie für jedes importierte Objekt festlegen, keypool: "true"dass dies funktioniert.

Das Problem ist, keypool: truedass only allowed when wallet private keys are disabled. aber ich möchte sie verwenden, also weiß ich nicht, wie das geht.
Oh, richtig. Das kannst du dann nicht. Der Grund, warum Keypool für Wallets mit privaten Schlüsseln nicht erlaubt ist, ist, dass wir nicht möchten, dass Benutzer Schlüssel verwenden, die offengelegt wurden. Importierte private Schlüssel gelten als exponiert. Das Importieren privater Schlüssel in den Schlüsselpool bedeutet auch, dass Sie möglicherweise Adressen wiederverwenden, und das möchten wir ebenfalls vermeiden.
Könnte ich eine Mnemonik generieren, damit den 512-Bit-Seed generieren, diesen Seed in zwei Teile teilen und den ersten für den Bitcoin-Kern verwenden? Wenn ich jemals den Zugriff auf Bitcoin-Core-Backups verloren habe, kann ich dasselbe Verfahren verwenden, um denselben Seed zu erhalten, ist das richtig? ist es sinnvoll?
Sie könnten das tun, aber der Seed wäre in jeder anderen Software nutzlos.