Newer
Older
from bitcoinlib.keys import HDKey
from bitcoinlib.mnemonic import Mnemonic
from bitcoinlib.wallets import Wallet
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