def test_validate_coinbase_transaction_by_itself_reference_real_output(): cb = _get_example_coinbase_transaction() cb.inputs[0].output_reference = OutputReference(b'c' * 32, 4) with pytest.raises(ValidateTransactionError, match=".*must create.*thin air.*"): validate_coinbase_transaction_by_itself(cb)
def test_validate_coinbase_transaction_by_itself_maximum_coinbasedata_size(): cb = _get_example_coinbase_transaction() cb.inputs[0].signature.signature = b'x' * (MAX_COINBASE_RANDOM_DATA_SIZE + 1) with pytest.raises(ValidateTransactionError, match=".*MAX_COINBASE_RANDOM_DATA_SIZE.*"): validate_coinbase_transaction_by_itself(cb)
def test_validate_coinbase_transaction_by_itself_should_have_coinbasedata(): cb = _get_example_coinbase_transaction() cb.inputs[0].signature = SECP256k1Signature(b'c' * 64) with pytest.raises(ValidateTransactionError, match=".*CoinbaseData.*"): validate_coinbase_transaction_by_itself(cb)
def test_validate_coinbase_transaction_by_itself_exactly_1_input(): cb = _get_example_coinbase_transaction() cb.inputs.append(deepcopy(cb.inputs[0])) with pytest.raises(ValidateTransactionError, match=".*1 input.*"): validate_coinbase_transaction_by_itself(cb)
def test_validate_coinbase_transaction_by_itself_for_valid_coinbase(): cb = _get_example_coinbase_transaction() validate_coinbase_transaction_by_itself(cb)