Example #1
0
def test_is_transaction_chain_valid_multiple_rewards(blockchain_ten_blocks):
    reward1 = Transaction.reward(Wallet()).to_json()
    reward2 = Transaction.reward(Wallet()).to_json()
    blockchain_ten_blocks.add_block([reward1, reward2])

    with pytest.raises(Exception, match="Duplicate mining reward in block"):
        BlockChain.is_transaction_chain_valid(blockchain_ten_blocks.chain)
Example #2
0
def test_invalid_reward():
    wallet = Wallet()
    reward = Transaction.reward(wallet)
    reward.output[wallet.address] = 100

    with pytest.raises(Exception, match="Invalid reward transaction"):
        Transaction.is_transaction_valid(reward)
Example #3
0
def route_mine_block():
    """
    Adds a block to local block chain and broadcasts it to all nodes
    """
    transaction_data = transaction_pool.transaction_data()
    transaction_data.append(Transaction.reward(wallet).to_json())
    blockchain.add_block(transaction_data)
    block = blockchain.chain[-1]
    pubsub.broadcast_block(block)
    transaction_pool.clear_transactions_added_to_blockchain(blockchain)
    return jsonify(block.to_json())
Example #4
0
def test_valid_reward():
    reward = Transaction.reward(Wallet())
    Transaction.is_transaction_valid(reward)
Example #5
0
def test_reward():
    miner_wallet = Wallet()
    transaction = Transaction.reward(miner_wallet)

    assert transaction.input == MINIING_REWARD_INPUT
    assert transaction.output[miner_wallet.address] == MINIING_REWARD