Skip to content

test_blobhash_gas_cost()

Documentation for tests/cancun/eip4844_blobs/test_blobhash_opcode.py::test_blobhash_gas_cost@008e492e.

Generate fixtures for these test cases for Prague with:

fill -v tests/cancun/eip4844_blobs/test_blobhash_opcode.py::test_blobhash_gas_cost --fork Prague

Tests BLOBHASH opcode gas cost using a variety of indexes.

Asserts that the gas consumption of the BLOBHASH opcode is correct by ensuring it matches HASH_OPCODE_GAS = 3. Includes both valid and invalid random index sizes from the range [0, 2**256-1], for tx types 2 and 3.

Source code in tests/cancun/eip4844_blobs/test_blobhash_opcode.py
 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
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
@pytest.mark.parametrize("blobhash_index", blobhash_index_values)
@pytest.mark.with_all_tx_types
def test_blobhash_gas_cost(
    pre: Alloc,
    fork: Fork,
    tx_type: int,
    blobhash_index: int,
    state_test: StateTestFiller,
    target_blobs_per_block: int,
):
    """
    Tests `BLOBHASH` opcode gas cost using a variety of indexes.

    Asserts that the gas consumption of the `BLOBHASH` opcode is correct by ensuring
    it matches `HASH_OPCODE_GAS = 3`. Includes both valid and invalid random
    index sizes from the range `[0, 2**256-1]`, for tx types 2 and 3.
    """
    gas_measure_code = CodeGasMeasure(
        code=Op.BLOBHASH(blobhash_index),
        overhead_cost=3,
        extra_stack_items=1,
    )

    address = pre.deploy_contract(gas_measure_code)
    sender = pre.fund_eoa()

    tx = Transaction(
        ty=tx_type,
        sender=sender,
        to=address,
        data=Hash(0),
        gas_limit=3_000_000,
        gas_price=10 if tx_type < 2 else None,
        access_list=[] if tx_type >= 1 else None,
        max_fee_per_gas=10 if tx_type >= 2 else None,
        max_priority_fee_per_gas=10 if tx_type >= 2 else None,
        max_fee_per_blob_gas=(fork.min_base_fee_per_blob_gas() * 10) if tx_type == 3 else None,
        blob_versioned_hashes=random_blob_hashes[0:target_blobs_per_block]
        if tx_type == 3
        else None,
    )
    post = {address: Account(storage={0: Spec.HASH_GAS_COST})}

    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) tx_type blobhash_index
...fork_Cancun-tx_type_3-state_test-blobhash_index_0 3 0
...fork_Cancun-tx_type_3-state_test-blobhash_index_1 3 1
...fork_Cancun-tx_type_3-state_test-blobhash_index_2 3 2
...fork_Cancun-tx_type_3-state_test-blobhash_index_3 3 3
...fork_Cancun-tx_type_3-state_test-blobhash_index_4 3 4
...fork_Cancun-tx_type_3-state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 3 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Cancun-tx_type_3-state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 3 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Cancun-tx_type_3-blockchain_test_from_state_test-blobhash_index_0 3 0
...fork_Cancun-tx_type_3-blockchain_test_from_state_test-blobhash_index_1 3 1
...fork_Cancun-tx_type_3-blockchain_test_from_state_test-blobhash_index_2 3 2
...fork_Cancun-tx_type_3-blockchain_test_from_state_test-blobhash_index_3 3 3
...fork_Cancun-tx_type_3-blockchain_test_from_state_test-blobhash_index_4 3 4
...fork_Cancun-tx_type_3-blockchain_test_from_state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 3 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Cancun-tx_type_3-blockchain_test_from_state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 3 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Cancun-tx_type_2-state_test-blobhash_index_0 2 0
...fork_Cancun-tx_type_2-state_test-blobhash_index_1 2 1
...fork_Cancun-tx_type_2-state_test-blobhash_index_2 2 2
...fork_Cancun-tx_type_2-state_test-blobhash_index_3 2 3
...fork_Cancun-tx_type_2-state_test-blobhash_index_4 2 4
...fork_Cancun-tx_type_2-state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 2 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Cancun-tx_type_2-state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 2 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Cancun-tx_type_2-blockchain_test_from_state_test-blobhash_index_0 2 0
...fork_Cancun-tx_type_2-blockchain_test_from_state_test-blobhash_index_1 2 1
...fork_Cancun-tx_type_2-blockchain_test_from_state_test-blobhash_index_2 2 2
...fork_Cancun-tx_type_2-blockchain_test_from_state_test-blobhash_index_3 2 3
...fork_Cancun-tx_type_2-blockchain_test_from_state_test-blobhash_index_4 2 4
...fork_Cancun-tx_type_2-blockchain_test_from_state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 2 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Cancun-tx_type_2-blockchain_test_from_state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 2 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Cancun-tx_type_1-state_test-blobhash_index_0 1 0
...fork_Cancun-tx_type_1-state_test-blobhash_index_1 1 1
...fork_Cancun-tx_type_1-state_test-blobhash_index_2 1 2
...fork_Cancun-tx_type_1-state_test-blobhash_index_3 1 3
...fork_Cancun-tx_type_1-state_test-blobhash_index_4 1 4
...fork_Cancun-tx_type_1-state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 1 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Cancun-tx_type_1-state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 1 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Cancun-tx_type_1-blockchain_test_from_state_test-blobhash_index_0 1 0
...fork_Cancun-tx_type_1-blockchain_test_from_state_test-blobhash_index_1 1 1
...fork_Cancun-tx_type_1-blockchain_test_from_state_test-blobhash_index_2 1 2
...fork_Cancun-tx_type_1-blockchain_test_from_state_test-blobhash_index_3 1 3
...fork_Cancun-tx_type_1-blockchain_test_from_state_test-blobhash_index_4 1 4
...fork_Cancun-tx_type_1-blockchain_test_from_state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 1 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Cancun-tx_type_1-blockchain_test_from_state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 1 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Cancun-tx_type_0-state_test-blobhash_index_0 0 0
...fork_Cancun-tx_type_0-state_test-blobhash_index_1 0 1
...fork_Cancun-tx_type_0-state_test-blobhash_index_2 0 2
...fork_Cancun-tx_type_0-state_test-blobhash_index_3 0 3
...fork_Cancun-tx_type_0-state_test-blobhash_index_4 0 4
...fork_Cancun-tx_type_0-state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 0 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Cancun-tx_type_0-state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 0 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Cancun-tx_type_0-blockchain_test_from_state_test-blobhash_index_0 0 0
...fork_Cancun-tx_type_0-blockchain_test_from_state_test-blobhash_index_1 0 1
...fork_Cancun-tx_type_0-blockchain_test_from_state_test-blobhash_index_2 0 2
...fork_Cancun-tx_type_0-blockchain_test_from_state_test-blobhash_index_3 0 3
...fork_Cancun-tx_type_0-blockchain_test_from_state_test-blobhash_index_4 0 4
...fork_Cancun-tx_type_0-blockchain_test_from_state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 0 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Cancun-tx_type_0-blockchain_test_from_state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 0 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Prague-tx_type_3-state_test-blobhash_index_0 3 0
...fork_Prague-tx_type_3-state_test-blobhash_index_1 3 1
...fork_Prague-tx_type_3-state_test-blobhash_index_2 3 2
...fork_Prague-tx_type_3-state_test-blobhash_index_3 3 3
...fork_Prague-tx_type_3-state_test-blobhash_index_4 3 4
...fork_Prague-tx_type_3-state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 3 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Prague-tx_type_3-state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 3 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Prague-tx_type_3-blockchain_test_from_state_test-blobhash_index_0 3 0
...fork_Prague-tx_type_3-blockchain_test_from_state_test-blobhash_index_1 3 1
...fork_Prague-tx_type_3-blockchain_test_from_state_test-blobhash_index_2 3 2
...fork_Prague-tx_type_3-blockchain_test_from_state_test-blobhash_index_3 3 3
...fork_Prague-tx_type_3-blockchain_test_from_state_test-blobhash_index_4 3 4
...fork_Prague-tx_type_3-blockchain_test_from_state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 3 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Prague-tx_type_3-blockchain_test_from_state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 3 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Prague-tx_type_2-state_test-blobhash_index_0 2 0
...fork_Prague-tx_type_2-state_test-blobhash_index_1 2 1
...fork_Prague-tx_type_2-state_test-blobhash_index_2 2 2
...fork_Prague-tx_type_2-state_test-blobhash_index_3 2 3
...fork_Prague-tx_type_2-state_test-blobhash_index_4 2 4
...fork_Prague-tx_type_2-state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 2 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Prague-tx_type_2-state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 2 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Prague-tx_type_2-blockchain_test_from_state_test-blobhash_index_0 2 0
...fork_Prague-tx_type_2-blockchain_test_from_state_test-blobhash_index_1 2 1
...fork_Prague-tx_type_2-blockchain_test_from_state_test-blobhash_index_2 2 2
...fork_Prague-tx_type_2-blockchain_test_from_state_test-blobhash_index_3 2 3
...fork_Prague-tx_type_2-blockchain_test_from_state_test-blobhash_index_4 2 4
...fork_Prague-tx_type_2-blockchain_test_from_state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 2 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Prague-tx_type_2-blockchain_test_from_state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 2 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Prague-tx_type_1-state_test-blobhash_index_0 1 0
...fork_Prague-tx_type_1-state_test-blobhash_index_1 1 1
...fork_Prague-tx_type_1-state_test-blobhash_index_2 1 2
...fork_Prague-tx_type_1-state_test-blobhash_index_3 1 3
...fork_Prague-tx_type_1-state_test-blobhash_index_4 1 4
...fork_Prague-tx_type_1-state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 1 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Prague-tx_type_1-state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 1 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Prague-tx_type_1-blockchain_test_from_state_test-blobhash_index_0 1 0
...fork_Prague-tx_type_1-blockchain_test_from_state_test-blobhash_index_1 1 1
...fork_Prague-tx_type_1-blockchain_test_from_state_test-blobhash_index_2 1 2
...fork_Prague-tx_type_1-blockchain_test_from_state_test-blobhash_index_3 1 3
...fork_Prague-tx_type_1-blockchain_test_from_state_test-blobhash_index_4 1 4
...fork_Prague-tx_type_1-blockchain_test_from_state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 1 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Prague-tx_type_1-blockchain_test_from_state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 1 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Prague-tx_type_0-state_test-blobhash_index_0 0 0
...fork_Prague-tx_type_0-state_test-blobhash_index_1 0 1
...fork_Prague-tx_type_0-state_test-blobhash_index_2 0 2
...fork_Prague-tx_type_0-state_test-blobhash_index_3 0 3
...fork_Prague-tx_type_0-state_test-blobhash_index_4 0 4
...fork_Prague-tx_type_0-state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 0 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Prague-tx_type_0-state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 0 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Prague-tx_type_0-blockchain_test_from_state_test-blobhash_index_0 0 0
...fork_Prague-tx_type_0-blockchain_test_from_state_test-blobhash_index_1 0 1
...fork_Prague-tx_type_0-blockchain_test_from_state_test-blobhash_index_2 0 2
...fork_Prague-tx_type_0-blockchain_test_from_state_test-blobhash_index_3 0 3
...fork_Prague-tx_type_0-blockchain_test_from_state_test-blobhash_index_4 0 4
...fork_Prague-tx_type_0-blockchain_test_from_state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 0 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Prague-tx_type_0-blockchain_test_from_state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 0 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Osaka-tx_type_3-state_test-blobhash_index_0 3 0
...fork_Osaka-tx_type_3-state_test-blobhash_index_1 3 1
...fork_Osaka-tx_type_3-state_test-blobhash_index_2 3 2
...fork_Osaka-tx_type_3-state_test-blobhash_index_3 3 3
...fork_Osaka-tx_type_3-state_test-blobhash_index_4 3 4
...fork_Osaka-tx_type_3-state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 3 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Osaka-tx_type_3-state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 3 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Osaka-tx_type_3-blockchain_test_from_state_test-blobhash_index_0 3 0
...fork_Osaka-tx_type_3-blockchain_test_from_state_test-blobhash_index_1 3 1
...fork_Osaka-tx_type_3-blockchain_test_from_state_test-blobhash_index_2 3 2
...fork_Osaka-tx_type_3-blockchain_test_from_state_test-blobhash_index_3 3 3
...fork_Osaka-tx_type_3-blockchain_test_from_state_test-blobhash_index_4 3 4
...fork_Osaka-tx_type_3-blockchain_test_from_state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 3 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Osaka-tx_type_3-blockchain_test_from_state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 3 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Osaka-tx_type_2-state_test-blobhash_index_0 2 0
...fork_Osaka-tx_type_2-state_test-blobhash_index_1 2 1
...fork_Osaka-tx_type_2-state_test-blobhash_index_2 2 2
...fork_Osaka-tx_type_2-state_test-blobhash_index_3 2 3
...fork_Osaka-tx_type_2-state_test-blobhash_index_4 2 4
...fork_Osaka-tx_type_2-state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 2 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Osaka-tx_type_2-state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 2 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Osaka-tx_type_2-blockchain_test_from_state_test-blobhash_index_0 2 0
...fork_Osaka-tx_type_2-blockchain_test_from_state_test-blobhash_index_1 2 1
...fork_Osaka-tx_type_2-blockchain_test_from_state_test-blobhash_index_2 2 2
...fork_Osaka-tx_type_2-blockchain_test_from_state_test-blobhash_index_3 2 3
...fork_Osaka-tx_type_2-blockchain_test_from_state_test-blobhash_index_4 2 4
...fork_Osaka-tx_type_2-blockchain_test_from_state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 2 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Osaka-tx_type_2-blockchain_test_from_state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 2 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Osaka-tx_type_1-state_test-blobhash_index_0 1 0
...fork_Osaka-tx_type_1-state_test-blobhash_index_1 1 1
...fork_Osaka-tx_type_1-state_test-blobhash_index_2 1 2
...fork_Osaka-tx_type_1-state_test-blobhash_index_3 1 3
...fork_Osaka-tx_type_1-state_test-blobhash_index_4 1 4
...fork_Osaka-tx_type_1-state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 1 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Osaka-tx_type_1-state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 1 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Osaka-tx_type_1-blockchain_test_from_state_test-blobhash_index_0 1 0
...fork_Osaka-tx_type_1-blockchain_test_from_state_test-blobhash_index_1 1 1
...fork_Osaka-tx_type_1-blockchain_test_from_state_test-blobhash_index_2 1 2
...fork_Osaka-tx_type_1-blockchain_test_from_state_test-blobhash_index_3 1 3
...fork_Osaka-tx_type_1-blockchain_test_from_state_test-blobhash_index_4 1 4
...fork_Osaka-tx_type_1-blockchain_test_from_state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 1 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Osaka-tx_type_1-blockchain_test_from_state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 1 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Osaka-tx_type_0-state_test-blobhash_index_0 0 0
...fork_Osaka-tx_type_0-state_test-blobhash_index_1 0 1
...fork_Osaka-tx_type_0-state_test-blobhash_index_2 0 2
...fork_Osaka-tx_type_0-state_test-blobhash_index_3 0 3
...fork_Osaka-tx_type_0-state_test-blobhash_index_4 0 4
...fork_Osaka-tx_type_0-state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 0 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Osaka-tx_type_0-state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 0 72901072107898194510616918724280211781393090952923809435170590639787343028527
...fork_Osaka-tx_type_0-blockchain_test_from_state_test-blobhash_index_0 0 0
...fork_Osaka-tx_type_0-blockchain_test_from_state_test-blobhash_index_1 0 1
...fork_Osaka-tx_type_0-blockchain_test_from_state_test-blobhash_index_2 0 2
...fork_Osaka-tx_type_0-blockchain_test_from_state_test-blobhash_index_3 0 3
...fork_Osaka-tx_type_0-blockchain_test_from_state_test-blobhash_index_4 0 4
...fork_Osaka-tx_type_0-blockchain_test_from_state_test-blobhash_index_115792089237316195423570985008687907853269984665640564039457584007913129639935 0 115792089237316195423570985008687907853269984665640564039457584007913129639935
...fork_Osaka-tx_type_0-blockchain_test_from_state_test-blobhash_index_72901072107898194510616918724280211781393090952923809435170590639787343028527 0 72901072107898194510616918724280211781393090952923809435170590639787343028527