So, I have written a script that generates BIP39 mnemonics. I now want to generate N native SegWit public keys from this mnemonic.

I have found this, but it generates legacy addresses. It uses the module bip32utils.

def bip39(mnemonic_words): mobj = mnemonic.Mnemonic("english") seed = mobj.to_seed(mnemonic_words) bip32_root_key_obj = bip32utils.BIP32Key.fromEntropy(seed) bip32_child_key_obj = bip32_root_key_obj.ChildKey( 44 + bip32utils.BIP32_HARDEN ).ChildKey( 0 + bip32utils.BIP32_HARDEN ).ChildKey( 0 + bip32utils.BIP32_HARDEN ).ChildKey(0).ChildKey(0) return { 'mnemonic_words': mnemonic_words, 'addr': bip32_child_key_obj.Address(), 'publickey': binascii.hexlify(bip32_child_key_obj.PublicKey()).decode(), 'privatekey': bip32_child_key_obj.WalletImportFormat(), 'coin': 'BTC' } if __name__ == '__main__': seed = 'input display smile visa surround learn solar hero vacuum parrot cigar devote' pprint.pprint(bip39(seed))

I assume I need bip44utils or something, but it doesn't exists. I have tried looking at bip-utils but I can't work out how to convert my mnemonic to an address.

Does anyone know how I can convert a mnemonic to a SegWit address (in a way that I can change the derivation path to get multiple addresses)?