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)
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)
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)
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())
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)
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