def transaction__total_input_value__cache__returns_cache_value_sum(): instance = bc.Transaction() input0 = bc.Input() input1 = bc.Input() input0.previous_output().validation.cache.set_value(123) input1.previous_output().validation.cache.set_value(123) instance.set_inputs([input0, input1]) assert instance.total_input_value() == 444
def transaction__fees__nonempty__returns_outputs_minus_inputs(): instance = bc.Transaction() input0 = bc.Input() input1 = bc.Input() input0.previous_output().validation.cache.set_value(123) input1.previous_output().validation.cache.set_value(321) instance.set_inputs([input0, input1]) output0 = bc.Output() output0.set_value(44) instance.set_outputs([output0]) assert instance.fees() == 400
def transaction__is_null_non_coinbase__null_input_prevout__returns_true(): prevout = bc.OutputPoint() prevout.base.set_index(bc.Point.null_index) prevout.base.set_hash(bc.null_hash) input0 = bc.Input() input1 = bc.Input() input1.set_previous_output(prevout) instance = bc.Transaction() instance.set_inputs([input0, input1]) assert not instance.is_coinbase() assert prevout.is_null() assert instance.is_null_non_coinbase()
def transaction__missing_previous_outputs__inputs_with_cache_value__returns_empty( ): instance = bc.Transaction() input = bc.Input() input.previous_output().validation.cache.set_value(123) instance.set_inputs([input]) assert not instance.missing_previous_outputs()
def transaction__double_spends__include_unconfirmed_false_with_unconfirmed__returns_empty( ): instance = bc.Transaction() input = bc.Input() input.previous_output().validation.spent = True instance.set_inputs([input]) assert not instance.double_spends(False)
def _create_input(self, point): input = bc.Input() input.set_sequence(bc.max_uint32) input.set_previous_output(point) # Set the input script. return input
def transaction__is_final__locktime_inputs_final__returns_true(): height = 100 time = 100 input = bc.Input() input.set_sequence(bc.max_input_sequence) instance = bc.Transaction.from_tuple(0, 101, [input], []) assert instance.is_final(height, time)
def transaction__is_double_spend__include_unconfirmed_true_with_unconfirmed__returns_true( ): instance = bc.Transaction() input = bc.Input() input.previous_output().validation.spent = True instance.set_inputs([input]) assert instance.is_double_spend(True)
def transaction__is_coinbase__with_coinbase_input__returns_true(): input = bc.Input() input.set_previous_output( bc.OutputPoint.from_tuple(bc.null_hash, bc.max_input_sequence)) instance = bc.Transaction() instance.set_inputs([input]) assert instance.is_coinbase()
def transaction__missing_previous_outputs__inputs_without_cache_value__returns_single_index( ): instance = bc.Transaction() input = bc.Input() instance.set_inputs([input]) result = instance.missing_previous_outputs() assert len(result) == 1 assert result[-1] == 0
def transaction__immature_inputs__immature_inputs__returns_input_indexes(): instance = bc.Transaction() input = bc.Input() input.previous_output().validation.height = 20 instance.set_inputs([input]) result = instance.immature_inputs(50) assert len(result) == 1 assert result[-1] == 0
def transaction__is_final__locktime_input_not_final__returns_false(): height = 100 time = 100 instance = bc.Transaction() instance.set_locktime(101) input = bc.Input() input.sequence = 1 instance.set_inputs([input]) assert not instance.is_final(height, time)
def transaction__double_spends__include_unconfirmed_true_with_unconfirmed__returns_expected( ): instance = bc.Transaction() input = bc.Input() input.previous_output().validation.spent = True instance.set_inputs([input]) result = instance.double_spends(True) assert len(result) == 1 assert result[-1] == 0
def transaction__is_oversized_coinbase__script_size_below_min__returns_true(): prevout = bc.OutputPoint() prevout.base.set_index(bc.Point.null_index) prevout.base.set_hash(bc.null_hash) input = bc.Input() input.set_previous_output(prevout) instance = bc.Transaction() instance.set_inputs([input]) assert instance.is_coinbase() assert input.script().serialized_size(False) < bc.min_coinbase_size assert instance.is_oversized_coinbase()
def transaction__is_oversized_coinbase__script_size_above_max__returns_true(): prevout = bc.OutputPoint() prevout.base.set_index(bc.Point.null_index) prevout.base.set_hash(bc.null_hash) input_script = bc.Script.from_data( bytes.fromhex("00" * (bc.max_coinbase_size + 10)), False) assert input_script is not None input = bc.Input() input.set_previous_output(prevout) input.set_script(input_script) instance = bc.Transaction() instance.set_inputs([input]) assert instance.is_coinbase() assert input.script().serialized_size(False) > bc.max_coinbase_size assert instance.is_oversized_coinbase()
def new_tx(test, sequence=0): tx = bc.Transaction() input_script = [bc.Script()] if not parse(input_script, test[0]): return tx output_script = [bc.Script()] if not parse(output_script, test[1]): return tx input = bc.Input() input.set_sequence(sequence) input.set_script(input_script[0]) input.previous_output().validation.cache.set_script(output_script[0]) tx.set_inputs([input]) return tx
def transaction__is_locktime_conflict__input_sequence_not_maximum__returns_false( ): input = bc.Input() input.set_sequence(1) instance = bc.Transaction.from_tuple(0, 2143, [input], []) assert not instance.is_locktime_conflict()
def transaction__is_missing_previous_outputs__inputs_without_cache_value__returns_true( ): instance = bc.Transaction() instance.set_inputs([bc.Input()]) assert instance.is_missing_previous_outputs()
def transaction__immature_inputs__mature_inputs__returns_empty(): input = bc.Input() input.previous_output().base.set_index(123) instance = bc.Transaction() instance.set_inputs([input]) assert not instance.immature_inputs(453)
def transaction__is_locktime_conflict__input_max_sequence__returns_true(): input = bc.Input() input.set_sequence(bc.max_input_sequence) instance = bc.Transaction.from_tuple(0, 2143, [input], []) assert instance.is_locktime_conflict()
def transaction__is_immature__immature_inputs__returns_true(): instance = bc.Transaction() input = bc.Input() input.previous_output().validation.height = 20 instance.set_inputs([input]) assert instance.is_immature(50)
def transaction__total_input_value__no_cache__returns_zero(): input = bc.Input() instance = bc.Transaction() instance.set_inputs([input, input]) assert instance.total_input_value() == 0
def transaction__signature_operations_single_input_output_uninitialized__returns_zero( ): instance = bc.Transaction() instance.set_inputs([bc.Input()]) instance.set_outputs([bc.Output()]) assert instance.signature_operations(False) == 0
def transaction__double_spends__unspent_inputs__returns_empty(): instance = bc.Transaction() instance.set_inputs([bc.Input()]) assert not instance.double_spends(False) assert not instance.double_spends(True)
def transaction__is_double_spend__unspent_inputs__returns_false(): instance = bc.Transaction() input = bc.Input() instance.set_inputs([input]) assert not instance.is_double_spend(False) assert not instance.is_double_spend(True)