def test_is_valid_transaction_chain_multiple_rewards(blockchain_three_blocks):
    reward_1 = Transaction.reward_transaction(Wallet()).to_json()
    reward_2 = Transaction.reward_transaction(Wallet()).to_json()
    blockchain_three_blocks.add_block([reward_1, reward_2])

    with pytest.raises(Exception, match='one mining reward per block'):
        Blockchain.is_valid_transaction_chain(blockchain_three_blocks.chain)
Exemplo n.º 2
0
def test_invalid_transaction_chain_multiple_mining_rewards(blockchain_init):
    reward_1 = Transaction.reward_transaction(Wallet()).to_json()
    reward_2 = Transaction.reward_transaction(Wallet()).to_json()

    blockchain_init.add_block([reward_1, reward_2])

    with pytest.raises(Exception,
                       match="There can only be one mining reward per block."):
        Blockchain.is_valid_transaction_chain(blockchain_init.chain)
Exemplo n.º 3
0
def test_is_valid_transaction_chain_multiple_rewards():
    blockchain_three_blocks = Blockchain()
    for i in range(3):
        blockchain_three_blocks.add_block([Transaction(Wallet(), 'recipient', i).to_json()])

    reward1 = Transaction.reward_transaction(Wallet()).to_json()
    reward2 = Transaction.reward_transaction(Wallet()).to_json()
    blockchain_three_blocks.add_block([reward1, reward2])

    with pytest.raises(Exception, match='one minig reward per block'):
        Blockchain.is_valid_transaction_chain(blockchain_three_blocks.chain)
def test_invalid_reward_transaction_invalid_amount():
    miner_wallet = Wallet()
    reward_transaction = Transaction.reward_transaction(miner_wallet)
    reward_transaction.output[miner_wallet.address] = 9001

    with pytest.raises(Exception, match='Invalid mining reward'):
        Transaction.is_valid_transaction(reward_transaction)
Exemplo n.º 5
0
def route_blockchain_mine():
    transaction_data = transaction_pool.transaction_data()
    transaction_data.append(Transaction.reward_transaction(wallet).to_json())
    blockchain.add_block(transaction_data)
    block = blockchain.chain[-1]
    pubsub.broadcast_block(block)
    transaction_pool.clear_blockchain_transactions(blockchain)
    return jsonify(block.to_json())
Exemplo n.º 6
0
def test_reward_transaction():
    miner_wallet = Wallet()
    trans = Transaction.reward_transaction(miner_wallet)
    # Assert that the transaction input for the miner wallet is equal to the
    # correct mining reward input.
    assert(trans.input == MINING_REWARD_INPUT)
    # Assert that the transaction output to the miner wallet address is equal
    # to the correct mining reward.
    assert(trans.output[miner_wallet.address] == MINING_REWARD)
Exemplo n.º 7
0
def route_blockchain_mine():
    data = transaction_pool.get_transactions()

    data.append(Transaction.reward_transaction(wallet).to_json())

    blockchain.add_block(data)

    block = blockchain.chain[-1]

    transaction_pool.clear_transaction()

    pusher.trigger('blockchain', 'block-added', block.to_json())

    return jsonify(block.to_json())
def test_invalid_reward_transaction_extra_recipient():
    reward_transaction = Transaction.reward_transaction(Wallet())
    reward_transaction.output['extra_recipient'] = 60

    with pytest.raises(Exception, match='Invalid mining reward'):
        Transaction.is_valid_transaction(reward_transaction)
def test_valid_reward_transaction():
    reward_transaction = Transaction.reward_transaction(Wallet())
    Transaction.is_valid_transaction(reward_transaction)
def test_reward_transaction():
    miner_wallet = Wallet()
    transaction = Transaction.reward_transaction(miner_wallet)

    assert transaction.input == MINING_REWARD_INPUT
    assert transaction.output[miner_wallet.address] == MINING_REWARD