Пример #1
0
    def test_match_generator(self):
        # match_standard_transaction_at_any_index(generator_body: bytes) -> (int,int):
        m = match_standard_transaction_at_any_index(gen1)
        assert m == (EXPECTED_START, EXPECTED_END)

        m = match_standard_transaction_at_any_index(b"\xff" + gen1 + b"\x80")
        assert m == (EXPECTED_START + 1, EXPECTED_END + 1)

        m = match_standard_transaction_at_any_index(gen1[47:])
        assert m is None
Пример #2
0
    def test_multiple_input_gen_refs(self):
        start1, end1 = match_standard_transaction_at_any_index(gen1)
        start2, end2 = match_standard_transaction_at_any_index(gen2)
        ca1 = CompressorArg(FAKE_BLOCK_HEIGHT1,
                            SerializedProgram.from_bytes(gen1), start1, end1)
        ca2 = CompressorArg(FAKE_BLOCK_HEIGHT2,
                            SerializedProgram.from_bytes(gen2), start2, end2)

        prefix_len1 = end1 - start1
        prefix_len2 = end2 - start2
        assert prefix_len1 == prefix_len2
        prefix_len = prefix_len1
        results = []
        for split_offset in range(prefix_len):
            gen_args = MultipleCompressorArg([ca1, ca2], split_offset)
            spend_bundle: SpendBundle = make_spend_bundle(1)
            multi_gen = create_multiple_ref_generator(gen_args, spend_bundle)
            cost, result = run_generator(multi_gen, INFINITE_COST)
            results.append(result)
            assert result is not None
            assert cost > 0
        assert all(r == results[0] for r in results)
Пример #3
0
 def test_compressed_block_results(self):
     sb: SpendBundle = make_spend_bundle(1)
     start, end = match_standard_transaction_at_any_index(
         original_generator)
     ca = CompressorArg(uint32(0),
                        SerializedProgram.from_bytes(original_generator),
                        start, end)
     c = compressed_spend_bundle_solution(ca, sb)
     s = simple_solution_generator(sb)
     assert c != s
     cost_c, result_c = run_generator(c)
     cost_s, result_s = run_generator(s)
     print(result_c)
     assert result_c is not None
     assert result_s is not None
     assert result_c == result_s
Пример #4
0
 def test_get_removals_for_single_coin(self):
     sb: SpendBundle = make_spend_bundle(1)
     start, end = match_standard_transaction_at_any_index(
         original_generator)
     ca = CompressorArg(uint32(0),
                        SerializedProgram.from_bytes(original_generator),
                        start, end)
     c = compressed_spend_bundle_solution(ca, sb)
     removal = sb.coin_spends[0].coin.name()
     error, puzzle, solution = get_puzzle_and_solution_for_coin(
         c, removal, INFINITE_COST)
     assert error is None
     assert bytes(puzzle) == bytes(sb.coin_spends[0].puzzle_reveal)
     assert bytes(solution) == bytes(sb.coin_spends[0].solution)
     # Test non compressed generator as well
     s = simple_solution_generator(sb)
     error, puzzle, solution = get_puzzle_and_solution_for_coin(
         s, removal, INFINITE_COST)
     assert error is None
     assert bytes(puzzle) == bytes(sb.coin_spends[0].puzzle_reveal)
     assert bytes(solution) == bytes(sb.coin_spends[0].solution)