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)
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)
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())
def test_valid_reward(): reward = Transaction.reward(Wallet()) Transaction.is_transaction_valid(reward)
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