Skip to content

Test Bls12 Precompiles Before Fork

Documentation for tests/prague/eip2537_bls_12_381_precompiles/test_bls12_precompiles_before_fork.py.

Generate fixtures for these test cases for Prague with:

Prague only:

fill -v tests/prague/eip2537_bls_12_381_precompiles/test_bls12_precompiles_before_fork.py --fork=Prague --evm-bin=/path/to/evm-tool-dev-version
For all forks up to and including Prague:
fill -v tests/prague/eip2537_bls_12_381_precompiles/test_bls12_precompiles_before_fork.py --until=Prague --evm-bin=/path/to/evm-tool-dev-version

Tests BLS12 precompiles of EIP-2537: Precompile for BLS12-381 curve operations

Tests BLS12 precompiles of EIP-2537: Precompile for BLS12-381 curve operations before the Prague hard fork is active

test_precompile_before_fork(state_test, pre, post, tx)

Test all BLS12 precompiles before the Prague hard fork is active.

The call must succeed but the output must be empty.

Source code in tests/prague/eip2537_bls_12_381_precompiles/test_bls12_precompiles_before_fork.py
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
@pytest.mark.parametrize(
    "precompile_address,input",
    [
        pytest.param(
            Spec.G1ADD,
            Spec.INF_G1 + Spec.INF_G1,
            id="G1ADD",
        ),
        pytest.param(
            Spec.G1MSM,
            Spec.INF_G1 + Scalar(0),
            id="G1MSM",
        ),
        pytest.param(
            Spec.G1MUL,
            Spec.INF_G1 + Scalar(0),
            id="G1MUL",
        ),
        pytest.param(
            Spec.G2ADD,
            Spec.INF_G2 + Spec.INF_G2,
            id="G2ADD",
        ),
        pytest.param(
            Spec.G2MSM,
            Spec.INF_G2 + Scalar(0),
            id="G2MSM",
        ),
        pytest.param(
            Spec.G2MUL,
            Spec.INF_G2 + Scalar(0),
            id="G2MUL",
        ),
        pytest.param(
            Spec.PAIRING,
            Spec.INF_G1 + Spec.INF_G2,
            id="PAIRING",
        ),
        pytest.param(
            Spec.MAP_FP_TO_G1,
            FP(0),
            id="MAP_FP_TO_G1",
        ),
        pytest.param(
            Spec.MAP_FP2_TO_G2,
            FP2((0, 0)),
            id="MAP_FP2_TO_G2",
        ),
    ],
)
@pytest.mark.parametrize("expected_output,call_succeeds", [pytest.param(b"", True, id="")])
def test_precompile_before_fork(
    state_test: StateTestFiller,
    pre: Alloc,
    post: dict,
    tx: Transaction,
):
    """
    Test all BLS12 precompiles before the Prague hard fork is active.

    The call must succeed but the output must be empty.
    """
    state_test(
        env=Environment(),
        pre=pre,
        tx=tx,
        post=post,
    )