Skip to content

test_point_evaluation_precompile_gas_usage()

Documentation for tests/cancun/eip4844_blobs/test_point_evaluation_precompile_gas.py::test_point_evaluation_precompile_gas_usage@verkle@v0.0.6.

Generate fixtures for these test cases for Cancun with:

Cancun only:

fill -v tests/cancun/eip4844_blobs/test_point_evaluation_precompile_gas.py::test_point_evaluation_precompile_gas_usage --fork=Cancun --evm-bin=/path/to/evm-tool-dev-version

For all forks up to and including Cancun:

fill -v tests/cancun/eip4844_blobs/test_point_evaluation_precompile_gas.py::test_point_evaluation_precompile_gas_usage --until=Cancun

Test point evaluation precompile gas usage under different call contexts and gas limits:

  • Test using all call types (CALL, DELEGATECALL, CALLCODE, STATICCALL)
  • Test using different gas limits (exact gas, insufficient gas, extra gas)
  • Test using correct and incorrect proofs
Source code in tests/cancun/eip4844_blobs/test_point_evaluation_precompile_gas.py
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
@pytest.mark.parametrize(
    "call_type",
    [Op.CALL, Op.DELEGATECALL, Op.CALLCODE, Op.STATICCALL],
)
@pytest.mark.parametrize(
    "call_gas",
    [
        Spec.POINT_EVALUATION_PRECOMPILE_GAS,
        Spec.POINT_EVALUATION_PRECOMPILE_GAS - 1,
        Spec.POINT_EVALUATION_PRECOMPILE_GAS + 1,
    ],
    ids=["exact_gas", "insufficient_gas", "extra_gas"],
)
@pytest.mark.parametrize("proof", ["correct", "incorrect"])
@pytest.mark.valid_from("Cancun")
def test_point_evaluation_precompile_gas_usage(
    state_test: StateTestFiller,
    pre: Dict,
    tx: Transaction,
    post: Dict,
):
    """
    Test point evaluation precompile gas usage under different call contexts and gas limits:

    - Test using all call types (CALL, DELEGATECALL, CALLCODE, STATICCALL)
    - Test using different gas limits (exact gas, insufficient gas, extra gas)
    - Test using correct and incorrect proofs
    """
    state_test(
        env=Environment(),
        pre=pre,
        post=post,
        tx=tx,
    )

Parametrized Test Cases

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

Skipped Parameters

For more concise readability, the table below does not list the following parameter values: fork, blockchain_test, state_test, state_test_only, eof_test, eof_state_test.

Test ID proof call_gas call_type
proof_correct-exact_gas-call_type_CALL correct 50000 CALL
proof_correct-exact_gas-call_type_DELEGATECALL correct 50000 DELEGATECALL
proof_correct-exact_gas-call_type_CALLCODE correct 50000 CALLCODE
proof_correct-exact_gas-call_type_STATICCALL correct 50000 STATICCALL
proof_correct-insufficient_gas-call_type_CALL correct 49999 CALL
proof_correct-insufficient_gas-call_type_DELEGATECALL correct 49999 DELEGATECALL
proof_correct-insufficient_gas-call_type_CALLCODE correct 49999 CALLCODE
proof_correct-insufficient_gas-call_type_STATICCALL correct 49999 STATICCALL
proof_correct-extra_gas-call_type_CALL correct 50001 CALL
proof_correct-extra_gas-call_type_DELEGATECALL correct 50001 DELEGATECALL
proof_correct-extra_gas-call_type_CALLCODE correct 50001 CALLCODE
proof_correct-extra_gas-call_type_STATICCALL correct 50001 STATICCALL
proof_incorrect-exact_gas-call_type_CALL incorrect 50000 CALL
proof_incorrect-exact_gas-call_type_DELEGATECALL incorrect 50000 DELEGATECALL
proof_incorrect-exact_gas-call_type_CALLCODE incorrect 50000 CALLCODE
proof_incorrect-exact_gas-call_type_STATICCALL incorrect 50000 STATICCALL
proof_incorrect-insufficient_gas-call_type_CALL incorrect 49999 CALL
proof_incorrect-insufficient_gas-call_type_DELEGATECALL incorrect 49999 DELEGATECALL
proof_incorrect-insufficient_gas-call_type_CALLCODE incorrect 49999 CALLCODE
proof_incorrect-insufficient_gas-call_type_STATICCALL incorrect 49999 STATICCALL
proof_incorrect-extra_gas-call_type_CALL incorrect 50001 CALL
proof_incorrect-extra_gas-call_type_DELEGATECALL incorrect 50001 DELEGATECALL
proof_incorrect-extra_gas-call_type_CALLCODE incorrect 50001 CALLCODE
proof_incorrect-extra_gas-call_type_STATICCALL incorrect 50001 STATICCALL
proof_correct-exact_gas-call_type_CALL correct 50000 CALL
proof_correct-exact_gas-call_type_DELEGATECALL correct 50000 DELEGATECALL
proof_correct-exact_gas-call_type_CALLCODE correct 50000 CALLCODE
proof_correct-exact_gas-call_type_STATICCALL correct 50000 STATICCALL
proof_correct-insufficient_gas-call_type_CALL correct 49999 CALL
proof_correct-insufficient_gas-call_type_DELEGATECALL correct 49999 DELEGATECALL
proof_correct-insufficient_gas-call_type_CALLCODE correct 49999 CALLCODE
proof_correct-insufficient_gas-call_type_STATICCALL correct 49999 STATICCALL
proof_correct-extra_gas-call_type_CALL correct 50001 CALL
proof_correct-extra_gas-call_type_DELEGATECALL correct 50001 DELEGATECALL
proof_correct-extra_gas-call_type_CALLCODE correct 50001 CALLCODE
proof_correct-extra_gas-call_type_STATICCALL correct 50001 STATICCALL
proof_incorrect-exact_gas-call_type_CALL incorrect 50000 CALL
proof_incorrect-exact_gas-call_type_DELEGATECALL incorrect 50000 DELEGATECALL
proof_incorrect-exact_gas-call_type_CALLCODE incorrect 50000 CALLCODE
proof_incorrect-exact_gas-call_type_STATICCALL incorrect 50000 STATICCALL
proof_incorrect-insufficient_gas-call_type_CALL incorrect 49999 CALL
proof_incorrect-insufficient_gas-call_type_DELEGATECALL incorrect 49999 DELEGATECALL
proof_incorrect-insufficient_gas-call_type_CALLCODE incorrect 49999 CALLCODE
proof_incorrect-insufficient_gas-call_type_STATICCALL incorrect 49999 STATICCALL
proof_incorrect-extra_gas-call_type_CALL incorrect 50001 CALL
proof_incorrect-extra_gas-call_type_DELEGATECALL incorrect 50001 DELEGATECALL
proof_incorrect-extra_gas-call_type_CALLCODE incorrect 50001 CALLCODE
proof_incorrect-extra_gas-call_type_STATICCALL incorrect 50001 STATICCALL