I asked an LLM to modify your python code, so that it outputs a master xpriv:
import hashlib
import base58
def master_xprv_from_seed(seed_hex, network_byte=0x0488ADE4):
# convert seed from hex to bytes
seed_bytes = bytes.fromhex(seed_hex)
# add network byte prefix
extended_key = bytes([network_byte]) + seed_bytes
# checksum = first 4 bytes of sha256(sha256(key))
checksum = hashlib.sha256(hashlib.sha256(extended_key).digest()).digest()[:4]
# append the checksum to the extended key
extended_key += checksum
# convert to base58
xprv = base58.b58encode(extended_key)
return xprv.decode('utf-8')
if __name__ == "__main__":
seed_hex = input("Enter the seed in hex format: ")
try:
xprv = master_xprv_from_seed(seed_hex)
print("Master xprv:", xprv)
except ValueError:
print("Invalid seed input.")
And then to import the master private key into Bitcoin Core, I would:
importdescriptors '[{"desc": "wpkh([master_xprv/84'/0'/0']/0/*)", "timestamp": "now", "range": [0, 1000], "watchonly": true, "label": "YourLabel"}]'
I assume "wpkh" and "p2wpkh" are arbitrary decisions in this case, but the decision will affect all future addresses that are generated.
I would do all of this work on an offline machine. Then I would use
listdescriptors
to get the xpub, and then on the online machine I would
importmulti '[{"desc":"pkh([Your xpub key])","timestamp":"now","range":[0,100],"watchonly":true,"label":"[Label for the wallet]"}]'
Is that right?