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]))
13BaDNdBXkfrGkvJT41HNosBBbbLZRWyZJ
ist 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.
Pieter Wuille