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@e9958ed2.

Generate fixtures for these test cases for Osaka with:

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

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
 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
104
105
@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,
) -> None:
    """
    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