Example #1
0
 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)
Example #2
0
 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)
Example #3
0
    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())