Ejemplo n.º 1
0
def test_is_valid_transaction_chain_duplicate_transactions(blockchain_3b):
    trans = Transaction(Wallet(), 'recipient', 1).to_json()
    # Add block with list of transactions containing two identical transactions
    # (a duplicate)
    blockchain_3b.add_block([trans, trans])
    with pytest.raises(Exception, match='is not unique.'):
        Blockchain.is_valid_trans_chain(blockchain_3b.chain)
Ejemplo n.º 2
0
def test_is_valid_transaction_chain_bad_histroric_balance(blockchain_3b):
    wallet = Wallet()
    bad_trans = Transaction(wallet, 'recipient', 1)
    bad_trans.output[wallet.address] = 9001
    bad_trans.input['amount'] = 9002
    bad_trans.input['signature'] = wallet.sign(bad_trans.output)
    blockchain_3b.add_block([bad_trans.to_json()])
    with pytest.raises(Exception, match='has an invalid input amount.'):
        Blockchain.is_valid_trans_chain(blockchain_3b.chain)
Ejemplo n.º 3
0
def test_valid_transaction_chain(blockchain_3b):
    Blockchain.is_valid_trans_chain(blockchain_3b.chain)
Ejemplo n.º 4
0
def test_is_valid_transaction_chain_bad_transaction(blockchain_3b):
    bad_trans = Transaction(Wallet(), 'recipient', 1)
    bad_trans.input['signature'] = Wallet().sign(bad_trans.output)
    blockchain_3b.add_block([bad_trans.to_json()])
    with pytest.raises(Exception):
        Blockchain.is_valid_trans_chain(blockchain_3b.chain)
Ejemplo n.º 5
0
def test_is_valid_transaction_chain_multiple_rewards(blockchain_3b):
    reward1 = Transaction.reward_transaction(Wallet()).to_json()
    reward2 = Transaction.reward_transaction(Wallet()).to_json()
    blockchain_3b.add_block([reward1, reward2])
    with pytest.raises(Exception, match='one mining reward per block.'):
        Blockchain.is_valid_trans_chain(blockchain_3b.chain)