Skip to content
Snippets Groups Projects
util.py 1.28 KiB
Newer Older
Dylan Janssen's avatar
Dylan Janssen committed
import os

from bitcoinlib.keys import HDKey
from bitcoinlib.mnemonic import Mnemonic
from bitcoinlib.wallets import Wallet
Dylan Janssen's avatar
Dylan Janssen committed

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