He estado siguiendo este código para generar direcciones SegWit con python. Sin embargo, estoy confundido porque este script no genera la clave privada de una manera utilizable para Electrum.
Encontré este sitio que me dijo cómo convertir la clave a un WIF comprimido.
Aquí hay un ejemplo, ejecuté el script y obtuve este resultado:
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
Luego agregué mi propio código adicional para convertir a WIF.
WIF: 5KP9tSHuzYd1WTCTwr5ewace9eNM8Kv8xjsWYyELHdEkKcQkiUZ
Compressed WIF: L48nE2detzZwEzdbw5dYTuNJy9wDqLVY92DwS7Br8NwgD6S8NiyT
Importé la clave WIF comprimida a Electrum, pero obtengo 13BaDNdBXkfrGkvJT41HNosBBbbLZRWyZJ como clave pública. Todo en línea confirma que solo las direcciones heredadas comienzan con un '1', pero seguramente es una dirección SegWit, ¿no?.
Cuando veo 'detalles', Electrum me da la clave pública comprimida correcta (03e5ee63efe153ebf1ec537831f2fba227f4b5f80275e750a9d0a8284c9fb4f91f).
¿Por qué Electrum no me da una dirección bech32 o una dirección anidada? ¿He hecho la conversión correcta de la clave privada?
Aquí está mi código en caso de que haya un error obvio de alguna manera.
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
es p2pkh y también se llama dirección heredada. Sí, estas direcciones son distintas. Si BTC se envió a una dirección, no aparecerá para otra. Sí, necesita la misma clave privada para gastar desde ambas direcciones.
pieter wuille