import os from bitcoinlib.keys import HDKey from bitcoinlib.mnemonic import Mnemonic from bitcoinlib.wallets import Wallet import database def get_wallet_name(wallet_id, user_id): return "wallet_{}user_{}".format(wallet_id, user_id) def generate_klist(hd_keys, private): return [hd_keys[x] if x == private else hd_keys[x].public_master_multisig() for x in range(len(hd_keys))] def generate_hd_keys(amount): mnemonics = [Mnemonic().generate(strength=256, add_checksum=True) for i in range(amount)] keys = [HDKey.from_passphrase(passphrase, network=os.getenv("BTC_NETWORK"), multisig=True) for passphrase in mnemonics] return keys, mnemonics pass def generate_wallets(user_wallets): count = user_wallets.count() hd_keys, mnemonics = generate_hd_keys(count) wallets = [] for i in range(count): uw = user_wallets[i] wallet_name = get_wallet_name(uw.wallet_id.id,uw.user_id.id) wallet = Wallet.create(wallet_name, sigs_required=uw.wallet_id.min_co_signers, keys=generate_klist(hd_keys, i), network=os.getenv("BTC_NETWORK"), db_uri=database.get_db_uri()) wallets.append(wallet) return wallets, mnemonics