Wie konvertiere ich einen privaten Schlüssel in Hex in einen privaten Segwit-Schlüssel, der von Electrum erwartet wird?

Ich habe diesen Code befolgt, um SegWit-Adressen mit Python zu generieren. Ich bin jedoch verwirrt, weil dieses Skript den privaten Schlüssel nicht in einer für Electrum verwendbaren Weise ausgibt.

Ich habe diese Seite gefunden , die mir sagte, wie man den Schlüssel in ein komprimiertes WIF konvertiert.

Hier ist ein Beispiel, ich habe das Skript ausgeführt und diese Ausgabe erhalten:

Private key: ce534f3d1f481f8736c30d866a6b2c5defe5edc36afaafc0e923586791a2462b
Verifiction key: e5ee63efe153ebf1ec537831f2fba227f4b5f80275e750a9d0a8284c9fb4f91fb5427e034ffec25bacc346263f0f6281f951926f924f7c53f771f632ca9e3cbb
Compressed public key: 03e5ee63efe153ebf1ec537831f2fba227f4b5f80275e750a9d0a8284c9fb4f91f
keyhash: 17f022e2c24238760a0a1b070eaa456df4e8b915
Native address: bc1qzlcz9ckzggu8vzs2rvrsa2j9dh6w3wg4atezy6
P2WPKH_V0: 001417f022e2c24238760a0a1b070eaa456df4e8b915
Hashed P2WPKH_VO: b9502db522524782980563a09355fa7052ee7ff1
P2SH_P2WPKH_V0: a9b9502db522524782980563a09355fa7052ee7ff187
Checksum: 7fcb7c1d
Binary address: 05b9502db522524782980563a09355fa7052ee7ff17fcb7c1d
Nested address: 3JarywCp1dbFiykdGNWyo5pdZyvSLEGZ96

Ich habe dann meinen eigenen zusätzlichen Code hinzugefügt, um in WIF zu konvertieren.

WIF: 5KP9tSHuzYd1WTCTwr5ewace9eNM8Kv8xjsWYyELHdEkKcQkiUZ
Compressed WIF: L48nE2detzZwEzdbw5dYTuNJy9wDqLVY92DwS7Br8NwgD6S8NiyT

Ich habe den komprimierten WIF-Schlüssel in Electrum importiert, aber ich bekomme 13BaDNdBXkfrGkvJT41HNosBBbbLZRWyZJ als öffentlichen Schlüssel. Alles im Internet bestätigt, dass nur Legacy-Adressen mit einer „1“ beginnen, aber es handelt sich sicherlich um eine SegWit-Adresse, oder?

Wenn ich „Details“ ansehe, gibt mir Electrum den korrekten komprimierten öffentlichen Schlüssel (03e5ee63efe153ebf1ec537831f2fba227f4b5f80275e750a9d0a8284c9fb4f91f).

Warum gibt mir Electrum keine bech32-Adresse oder eine verschachtelte Adresse? Habe ich die korrekte Konvertierung des privaten Schlüssels durchgeführt?

Hier ist mein Code für den Fall, dass es irgendwie einen offensichtlichen Fehler gibt.

fullkey = '80' + (private_key.hex())
sha256a = hashlib.sha256(binascii.unhexlify(fullkey)).hexdigest()
sha256b = hashlib.sha256(binascii.unhexlify(sha256a)).hexdigest()
WIF = base58.b58encode(binascii.unhexlify(fullkey+sha256b[:8]))

compressedPubKey = private_key.hex()+'01'
compressed_fullkey = '80' + (compressedPubKey)
compressed_sha256a = hashlib.sha256(binascii.unhexlify(compressed_fullkey)).hexdigest()
compressed_sha256b = hashlib.sha256(binascii.unhexlify(compressed_sha256a)).hexdigest()
compressed_WIF = base58.b58encode(binascii.unhexlify(compressed_fullkey+compressed_sha256b[:8]))
Ich weiß nichts über Electrum, aber die Adresse 1... ist eine P2PKH-Adresse, nicht P2WPKH oder P2SH-P2WPKH. Und es gibt keine Konvertierung, die auf dem Schlüssel durchgeführt werden muss; Schlüssel sind Schlüssel, aber sie können verwendet werden, um mehrere Arten von Adressen zu erstellen. Vermutlich benötigen Sie eine andere Möglichkeit, Electrum mitzuteilen, dass Sie eine P2WSH-Adresse anstelle einer P2PKH-Adresse wünschen.

Antworten (1)

Importieren Sie es, indem Sie den Adresstyp als Präfix angeben:

SCHRIFTTYP: KOMPRIMIERTES WIF

In diesem Beispiel wird es seinp2wpkh:L48nE2detzZwEzdbw5dYTuNJy9wDqLVY92DwS7Br8NwgD6S8NiyT

imp-priv-elektrum

Sie sehen die Adresse: bc1qzlcz9ckzggu8vzs2rvrsa2j9dh6w3wg4atezy6in Brieftasche hinzugefügt

segwit-hinzufügen

Vielen Dank, Sie sind unglaublich, das ist genau das, was gebraucht wurde. Welche Art von Adresse würden Sie also 13BaDNdBXkfrGkvJT41HNosBBbbLZRWyZJ nennen, es kann nicht Legacy sein, oder? Sind diese Adressen unterschiedlich, wenn ich Münzen an bc1qzlcz9ckzggu8vzs2rvrsa2j9dh6w3wg4atezy6 schicke, würden sie nicht auch bei 13BaDNdBXkfrGkvJT41HNosBBbbLZRWyZJ erscheinen, oder? Sie verwenden nur denselben privaten Schlüssel, um auf beide Adressen zuzugreifen, unterscheiden sich jedoch aufgrund des Skripttyps. Habe ich richtig verstanden?
13BaDNdBXkfrGkvJT41HNosBBbbLZRWyZJist p2pkh und wird auch Legacy-Adresse genannt. Ja, diese Adressen sind unterschiedlich. Wenn BTC an eine Adresse gesendet wird, wird es für andere nicht angezeigt. Ja, Sie benötigen denselben privaten Schlüssel, um von beiden Adressen auszugeben.