def test_process_payment_without_signature(self): """ Put coins in Scrooge's wallet, and transfer them to the same wallet without signing """ scrooge = Scrooge() coin = Scroogecoin(value=2, wallet_id=scrooge.wallet.id) created_coins = scrooge.create_coins([coin]).transaction.created_coins payment = Payment(created_coins=[coin], consumed_coins=created_coins) payment_result = scrooge.process_payment(payment, []) self.assertEqual(payment_result, None)
def test_process_payment_with_signature(self): """ Put coins in Scrooge's wallet, and transfer them to the same wallet """ scrooge = Scrooge() coin = Scroogecoin(value=2, wallet_id=scrooge.wallet.id) created_coins = scrooge.create_coins([coin]).transaction.created_coins payment = Payment(created_coins=[coin], consumed_coins=created_coins) signature = scrooge.wallet.sign(encoded_hash_object(payment)) payment_result = scrooge.process_payment( payment, [(scrooge.wallet.verifying_key, signature)]) self.assertFalse(payment_result == None)
scrooge.create_coins(coins) for user in users.values(): LOGGER.write(f'User ID: {user.id}, balance = {len(user.get_balance(scrooge.ledger))}') threading.Thread(target=key_capture_thread, args=(), name='key_capture_thread', daemon=True).start() while keep_going: user_a = random.choice(list(users.values())) user_b = random.choice(list(users.values())) amount = random.randint(1, 10) LOGGER.write(f'Balance: {len(user_a.get_balance(scrooge.ledger))}, {len(user_b.get_balance(scrooge.ledger))}') coins = user_a.get_balance(scrooge.ledger)[:amount] payment = Transaction(amount=amount, coins=coins, sender=user_a, receiver=user_b) payment.signature = user_a.sign(encoded_hash_object(payment)) payment_status = scrooge.process_payment( payment) LOGGER.write(f'Balance: {len(user_a.get_balance(scrooge.ledger))}, {len(user_b.get_balance(scrooge.ledger))}') LOGGER.write(f'==============={payment_status}================\n') LOGGER.write(payment) LOGGER.write('+++++++++++++++++++++++++++++++++++++++\n') LOGGER.write('================BLOCK UNDER CONSTRUCTION===============\n') LOGGER.write(scrooge.ledger.current_block) LOGGER.write('+++++++++++++++++++++++++++++++++++++++\n') if scrooge.ledger.current_block.is_full() and payment_status == 'ACCEPTED TRANSACTION': scrooge.user.sign(encoded_hash_object(scrooge.ledger.current_block)) LOGGER.write(scrooge.ledger) LOGGER.write(scrooge.ledger) LOGGER.close() print(scrooge.ledger.check_blockchain())