Пример #1
0
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
Пример #2
0
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
Пример #3
0
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()
Пример #4
0
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()
Пример #5
0
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)
Пример #6
0
    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
Пример #7
0
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)
Пример #8
0
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)
Пример #9
0
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()
Пример #10
0
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
Пример #11
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
Пример #12
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)
Пример #13
0
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
Пример #14
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()
Пример #15
0
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()
Пример #16
0
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
Пример #17
0
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()
Пример #18
0
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()
Пример #19
0
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)
Пример #20
0
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()
Пример #21
0
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)
Пример #22
0
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
Пример #23
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
Пример #24
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)
Пример #25
0
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)