Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_wallet_import_public_wallet(self):
pubkey = 'tpubDDkyPBhSAx8DFYxx5aLjvKH6B6Eq2eDK1YN76x1WeijE8eVUswpibGbv8zJjD6yLDHzVcqWzSp2fWVFhEW9XnBssFqM' \
'wt9SrsVeBeqfBbR3'
pubwal = HDWallet.create(
databasefile=DATABASEFILE_UNITTESTS,
name='test_wallet_import_public_wallet',
key=pubkey,
network='testnet',
account_id=0)
newkey = pubwal.new_key()
self.assertEqual(newkey.address, u'mweZrbny4fmpCmQw9hJH7EVfkuWX8te9jc')
def setUp(self):
if os.path.isfile(DATABASEFILE_UNITTESTS):
os.remove(DATABASEFILE_UNITTESTS)
self.wallet = HDWallet.create(
name='test_wallet_create',
databasefile=DATABASEFILE_UNITTESTS)
def test_wallet_import_account_new_keys(self):
accountkey = 'tprv8h4wEmfC2aSckSCYa68t8MhL7F8p9xAy322B5d6ipzY5ZWGGwksJMoajMCqd73cP4EVRygPQubgJPu9duBzPn3QV' \
'8Y7KbKUnaMzx9nnsSvh'
wallet_import = HDWallet.create(
databasefile=DATABASEFILE_UNITTESTS,
name='test_wallet_import_account_new_key',
key=accountkey,
network='testnet',
account_id=99)
newkey = wallet_import.new_key(account_id=99)
newkey_change = wallet_import.new_key_change(account_id=99, name='change')
self.assertEqual(wallet_import.main_key.key_wif, accountkey)
self.assertEqual(newkey.address, u'mfvFzusKPZzGBAhS69AWvziRPjamtRhYpZ')
self.assertEqual(newkey.path, "m/44'/1'/99'/0/0")
self.assertEqual(newkey_change.address, u'mkzpsGwaUU7rYzrDZZVXFne7dXEeo6Zpw2')
self.assertEqual(newkey_change.path, "m/44'/1'/99'/1/0")
def setUp(self):
if os.path.isfile(DATABASEFILE_UNITTESTS):
os.remove(DATABASEFILE_UNITTESTS)
self.pk = 'xprv9s21ZrQH143K2fuscnMTwUadsPqEbYdFQVJ1uWPawUYi7C485NHhCiotGy6Kz3Cz7ReVr65oXNwhREZ8ePrz8p7zy' \
'Hra82D1EGS7cQQmreK'
self.wallet = HDWallet.create(
key=self.pk,
name='test_wallet_electrum',
databasefile=DATABASEFILE_UNITTESTS)
workdir = os.path.dirname(__file__)
with open('%s/%s' % (workdir, 'electrum_keys.json'), 'r') as f:
self.el_keys = json.load(f)
for i in range(0, 20):
self.wallet.key_for_path('m/0/%d' % i, name='Receiving #%d' % i)
for i in range(0, 6):
self.wallet.key_for_path('m/1/%d' % i, name='Change #%d' % i)
passphrase = inp_passphrase.split(' ')
inp = input("\nType 'yes' if you understood and wrote down your key: ")
if inp not in ['yes', 'Yes', 'YES']:
clw_exit("Exiting...")
elif not passphrase:
passphrase = input("Enter Passphrase: ")
if not isinstance(passphrase, list):
passphrase = passphrase.split(' ')
elif len(passphrase) == 1:
passphrase = passphrase[0].split(' ')
if len(passphrase) < 12:
clw_exit("Please specify passphrase with 12 words or more")
passphrase = ' '.join(passphrase)
seed = binascii.hexlify(Mnemonic().to_seed(passphrase))
hdkey = HDKey().from_seed(seed, network=args.network)
return HDWallet.create(name=wallet_name, network=args.network, key=hdkey.wif(), databasefile=databasefile)
try:
sigs_required = int(args.create_multisig[1])
except ValueError:
clw_exit("Number of signatures required (second argument) must be a numeric value. %s" %
args.create_multisig[1])
key_list = args.create_multisig[2:]
keys_missing = sigs_total - len(key_list)
assert(keys_missing >= 0)
if keys_missing:
print("Not all keys provided, creating %d additional keys" % keys_missing)
for _ in range(keys_missing):
passphrase = get_passphrase(args)
passphrase = ' '.join(passphrase)
seed = binascii.hexlify(Mnemonic().to_seed(passphrase))
key_list.append(HDKey.from_seed(seed, network=args.network))
return HDWallet.create(wallet_name, key_list, sigs_required=sigs_required, network=args.network,
cosigner_id=args.cosigner_id, db_uri=db_uri, witness_type=args.witness_type)
elif args.create_from_key:
return HDWallet.create(wallet_name, args.create_from_key, network=args.network,
db_uri=db_uri, witness_type=args.witness_type)
else:
passphrase = args.passphrase
if passphrase is None:
passphrase = get_passphrase(args)
elif not passphrase:
passphrase = input("Enter Passphrase: ")
if not isinstance(passphrase, list):
passphrase = passphrase.split(' ')
elif len(passphrase) == 1:
passphrase = passphrase[0].split(' ')
if len(passphrase) < 12:
clw_exit("Please specify passphrase with 12 words or more")
else:
passphrase = args.passphrase
if passphrase is None:
passphrase = get_passphrase(args)
elif not passphrase:
passphrase = input("Enter Passphrase: ")
if not isinstance(passphrase, list):
passphrase = passphrase.split(' ')
elif len(passphrase) == 1:
passphrase = passphrase[0].split(' ')
if len(passphrase) < 12:
clw_exit("Please specify passphrase with 12 words or more")
passphrase = ' '.join(passphrase)
seed = binascii.hexlify(Mnemonic().to_seed(passphrase))
hdkey = HDKey.from_seed(seed, network=args.network)
return HDWallet.create(wallet_name, hdkey, network=args.network, witness_type=args.witness_type,
db_uri=db_uri)
#
# Create Wallets
#
# First recreate database to avoid already exist errors
test_databasefile = BCL_DATABASE_DIR + 'bitcoinlib.test.sqlite'
test_database = 'sqlite:///' + test_databasefile
if os.path.isfile(test_databasefile):
os.remove(test_databasefile)
print("\n=== Create a simple Mnemonic wallet ===")
passphrase = Mnemonic().generate()
print("Your private key passphrase is:", passphrase)
password = input("Enter password to protect passphrase: ")
wlt = HDWallet.create('mnwlttest1', keys=passphrase, password=password, network='bitcoinlib_test',
db_uri=test_database)
wlt.get_key()
wlt.utxos_update() # Create some test UTXOs
wlt.info()
to_key = wlt.get_key()
print("\n- Create transaction (send to own wallet)")
t = wlt.send_to(to_key.address, 50000000)
t.info()
print("\n- Successfully send, updated wallet info:")
wlt.info()
print("\n=== Create a wallet and a simple transaction ===")
wlt = HDWallet.create('wlttest1', network='bitcoinlib_test', db_uri=test_database)
wlt.get_key()
wlt.utxos_update() # Create some test UTXOs
wlt.info()
to_key = wlt.get_key()
print("\n- Create transaction (send to own wallet)")
t = wlt.send_to(to_key.address, 50000000)
t.info()
print("\n- Successfully send, updated wallet info:")
wlt.info()
print("\n=== Create a wallet, generate 6 UTXOs and create a sweep transaction ===")
wlt = HDWallet.create('wlttest2', network='bitcoinlib_test', db_uri=test_database)
wlt.get_key(number_of_keys=3)
wlt.utxos_update() # Create some test UTXOs
wlt.info()
to_key = wlt.get_key()
print("\n- Create transaction to sweep wallet")
t = wlt.sweep('21Cr5enTHDejL7rQfyzMHQK3i7oAN3TZWDb')
t.info()
print("\n- Successfully send, updated wallet info:")
wlt.info()