Esempio n. 1
0
def test_for__multiple_rewards_in_is_valid_transaction_chain(three_block_blockchain):
    reward_1 = SystemTransactions.transaction_reward_generation(Wallet()).convert_transaction_data_to_json()
    reward_2 = SystemTransactions.transaction_reward_generation(Wallet()).convert_transaction_data_to_json()
    three_block_blockchain.add_block([reward_1, reward_2])

    with pytest.raises(Exception, match='There can only be one mining reward given per block'):
        Blockchain.transaction_chain_is_valid(three_block_blockchain.chain)
Esempio n. 2
0
def test_for_bad_transaction_in_is_valid_transaction_chain(three_block_blockchain):
    bad_transaction = SystemTransactions(Wallet(), 'recipient', 1)
    bad_transaction.transaction_input['signature'] = Wallet().signature_generation(
        bad_transaction.transaction_output)
    three_block_blockchain.add_block([bad_transaction.convert_transaction_data_to_json()])

    with pytest.raises(Exception):
        Blockchain.transaction_chain_is_valid(three_block_blockchain.chain)
Esempio n. 3
0
def test_for_bad_historic_balance_in_is_valid_transaction_chain(three_block_blockchain):
    wallet = Wallet()
    bad_transaction = SystemTransactions(wallet, 'recipient', 1)
    bad_transaction.transaction_output[wallet.address] = 9000
    bad_transaction.transaction_input['amount'] = 9001
    bad_transaction.transaction_input['signature'] = wallet.signature_generation(bad_transaction.transaction_output)

    three_block_blockchain.add_block([bad_transaction.convert_transaction_data_to_json()])

    with pytest.raises(Exception, match='has an invalid input amount'):
        Blockchain.transaction_chain_is_valid(three_block_blockchain.chain)
Esempio n. 4
0
def test_for_duplicate_transactions_in_is_valid_transaction_chain(three_block_blockchain):
    transaction = SystemTransactions(Wallet(), 'recipient', 1).convert_transaction_data_to_json()
    three_block_blockchain.add_block([transaction, transaction])

    with pytest.raises(Exception, match='is not unique'):
        Blockchain.transaction_chain_is_valid(three_block_blockchain.chain)
Esempio n. 5
0
def test_for_valid_transaction_chain(three_block_blockchain):
    Blockchain.transaction_chain_is_valid(three_block_blockchain.chain)