Skip to content

test_isogeny_kernel_values()

Documentation for tests/prague/eip2537_bls_12_381_precompiles/test_bls12_map_fp_to_g1.py::test_isogeny_kernel_values@44293f1e.

Generate fixtures for these test cases for Prague with:

fill -v tests/prague/eip2537_bls_12_381_precompiles/test_bls12_map_fp_to_g1.py::test_isogeny_kernel_values --fork Prague

Test the BLS12_MAP_FP_TO_G1 precompile with isogeny kernel inputs.

The isogeny kernel is simply the set of special field values, that after the two step mapping (first SWU onto an auxiliary curve, then an 11-degree isogeny back to G1), collapse exactly to the identity point.

Please proceed to the generator in helpers.py to see how the isogeny kernel values are generated.

Source code in tests/prague/eip2537_bls_12_381_precompiles/test_bls12_map_fp_to_g1.py
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
@pytest.mark.parametrize("expected_output", [Spec.INF_G1], ids=[""])
@pytest.mark.parametrize(
    "input_data,vector_gas_value",
    [
        pytest.param(t, None, id=f"isogeny_kernel_{i}")
        for i, t in enumerate(G1_FIELD_POINTS_MAP_TO_IDENTITY)
    ],
)
def test_isogeny_kernel_values(
    state_test: StateTestFiller,
    pre: Alloc,
    post: dict,
    tx: Transaction,
):
    """
    Test the BLS12_MAP_FP_TO_G1 precompile with isogeny kernel inputs.

    The isogeny kernel is simply the set of special field values, that after the two step mapping
    (first SWU onto an auxiliary curve, then an 11-degree isogeny back to G1), collapse exactly
    to the identity point.

    Please proceed to the generator in `helpers.py` to see how the isogeny kernel values are
    generated.
    """
    state_test(
        env=Environment(),
        pre=pre,
        tx=tx,
        post=post,
    )

Parametrized Test Cases

The interactive table below is also available as a standalone page.

Test ID (Abbreviated) input_data vector_gas_value expected_output precompile_address
...fork_Prague-state_test-isogeny_kernel_0-- FP(x=1731081574565817469321317449275278355306982786154072576198758675751495027640363897075486577327802192163339186341827) None PointG1(x=0, y=0) 16
...fork_Prague-state_test-isogeny_kernel_1-- FP(x=861410691052762088300790587394810074303505896628048305535645284922135116676755956131724844456716837983264353875219) None PointG1(x=0, y=0) 16
...fork_Prague-state_test-isogeny_kernel_2-- FP(x=1006044755431560595281793557931171729984964515682961911911398807521437683216171091013202870577238485832047490326971) None PointG1(x=0, y=0) 16
...fork_Prague-state_test-isogeny_kernel_3-- FP(x=1562001338336877267717400325455189014780228097985596277514975439801739125527323838522116502949589758528550231396418) None PointG1(x=0, y=0) 16
...fork_Prague-state_test-isogeny_kernel_4-- FP(x=2271327980655849924096472376460625801249900033784935309133299460372536622850473967367201051801213471874555086217960) None PointG1(x=0, y=0) 16
...fork_Prague-state_test-isogeny_kernel_5-- FP(x=3140998864168905305116999238341094082253376923310959579796412851201896533814081908310962784672298826054629918684568) None PointG1(x=0, y=0) 16
...fork_Prague-state_test-isogeny_kernel_6-- FP(x=2996364799790106798135996267804732426571918304256045973420659328602593967274666773429484758551777178205846782232816) None PointG1(x=0, y=0) 16
...fork_Prague-state_test-isogeny_kernel_7-- FP(x=2440408216884790125700389500280715141776654721953411607817082696322292524963514025920571126179425905509344041163369) None PointG1(x=0, y=0) 16
...fork_Prague-blockchain_test_from_state_test-isogeny_kernel_0-- FP(x=1731081574565817469321317449275278355306982786154072576198758675751495027640363897075486577327802192163339186341827) None PointG1(x=0, y=0) 16
...fork_Prague-blockchain_test_from_state_test-isogeny_kernel_1-- FP(x=861410691052762088300790587394810074303505896628048305535645284922135116676755956131724844456716837983264353875219) None PointG1(x=0, y=0) 16
...fork_Prague-blockchain_test_from_state_test-isogeny_kernel_2-- FP(x=1006044755431560595281793557931171729984964515682961911911398807521437683216171091013202870577238485832047490326971) None PointG1(x=0, y=0) 16
...fork_Prague-blockchain_test_from_state_test-isogeny_kernel_3-- FP(x=1562001338336877267717400325455189014780228097985596277514975439801739125527323838522116502949589758528550231396418) None PointG1(x=0, y=0) 16
...fork_Prague-blockchain_test_from_state_test-isogeny_kernel_4-- FP(x=2271327980655849924096472376460625801249900033784935309133299460372536622850473967367201051801213471874555086217960) None PointG1(x=0, y=0) 16
...fork_Prague-blockchain_test_from_state_test-isogeny_kernel_5-- FP(x=3140998864168905305116999238341094082253376923310959579796412851201896533814081908310962784672298826054629918684568) None PointG1(x=0, y=0) 16
...fork_Prague-blockchain_test_from_state_test-isogeny_kernel_6-- FP(x=2996364799790106798135996267804732426571918304256045973420659328602593967274666773429484758551777178205846782232816) None PointG1(x=0, y=0) 16
...fork_Prague-blockchain_test_from_state_test-isogeny_kernel_7-- FP(x=2440408216884790125700389500280715141776654721953411607817082696322292524963514025920571126179425905509344041163369) None PointG1(x=0, y=0) 16
...fork_Osaka-state_test-isogeny_kernel_0-- FP(x=1731081574565817469321317449275278355306982786154072576198758675751495027640363897075486577327802192163339186341827) None PointG1(x=0, y=0) 16
...fork_Osaka-state_test-isogeny_kernel_1-- FP(x=861410691052762088300790587394810074303505896628048305535645284922135116676755956131724844456716837983264353875219) None PointG1(x=0, y=0) 16
...fork_Osaka-state_test-isogeny_kernel_2-- FP(x=1006044755431560595281793557931171729984964515682961911911398807521437683216171091013202870577238485832047490326971) None PointG1(x=0, y=0) 16
...fork_Osaka-state_test-isogeny_kernel_3-- FP(x=1562001338336877267717400325455189014780228097985596277514975439801739125527323838522116502949589758528550231396418) None PointG1(x=0, y=0) 16
...fork_Osaka-state_test-isogeny_kernel_4-- FP(x=2271327980655849924096472376460625801249900033784935309133299460372536622850473967367201051801213471874555086217960) None PointG1(x=0, y=0) 16
...fork_Osaka-state_test-isogeny_kernel_5-- FP(x=3140998864168905305116999238341094082253376923310959579796412851201896533814081908310962784672298826054629918684568) None PointG1(x=0, y=0) 16
...fork_Osaka-state_test-isogeny_kernel_6-- FP(x=2996364799790106798135996267804732426571918304256045973420659328602593967274666773429484758551777178205846782232816) None PointG1(x=0, y=0) 16
...fork_Osaka-state_test-isogeny_kernel_7-- FP(x=2440408216884790125700389500280715141776654721953411607817082696322292524963514025920571126179425905509344041163369) None PointG1(x=0, y=0) 16
...fork_Osaka-blockchain_test_from_state_test-isogeny_kernel_0-- FP(x=1731081574565817469321317449275278355306982786154072576198758675751495027640363897075486577327802192163339186341827) None PointG1(x=0, y=0) 16
...fork_Osaka-blockchain_test_from_state_test-isogeny_kernel_1-- FP(x=861410691052762088300790587394810074303505896628048305535645284922135116676755956131724844456716837983264353875219) None PointG1(x=0, y=0) 16
...fork_Osaka-blockchain_test_from_state_test-isogeny_kernel_2-- FP(x=1006044755431560595281793557931171729984964515682961911911398807521437683216171091013202870577238485832047490326971) None PointG1(x=0, y=0) 16
...fork_Osaka-blockchain_test_from_state_test-isogeny_kernel_3-- FP(x=1562001338336877267717400325455189014780228097985596277514975439801739125527323838522116502949589758528550231396418) None PointG1(x=0, y=0) 16
...fork_Osaka-blockchain_test_from_state_test-isogeny_kernel_4-- FP(x=2271327980655849924096472376460625801249900033784935309133299460372536622850473967367201051801213471874555086217960) None PointG1(x=0, y=0) 16
...fork_Osaka-blockchain_test_from_state_test-isogeny_kernel_5-- FP(x=3140998864168905305116999238341094082253376923310959579796412851201896533814081908310962784672298826054629918684568) None PointG1(x=0, y=0) 16
...fork_Osaka-blockchain_test_from_state_test-isogeny_kernel_6-- FP(x=2996364799790106798135996267804732426571918304256045973420659328602593967274666773429484758551777178205846782232816) None PointG1(x=0, y=0) 16
...fork_Osaka-blockchain_test_from_state_test-isogeny_kernel_7-- FP(x=2440408216884790125700389500280715141776654721953411607817082696322292524963514025920571126179425905509344041163369) None PointG1(x=0, y=0) 16