Skip to content

test_sufficient_balance_blob_tx()

Documentation for tests/cancun/eip4844_blobs/test_blob_txs.py::test_sufficient_balance_blob_tx@ffe48572.

Generate fixtures for these test cases for Bogota with:

fill -v tests/cancun/eip4844_blobs/test_blob_txs.py::test_sufficient_balance_blob_tx --fork Bogota

Check that transaction is accepted when user can exactly afford the blob gas specified (and max_fee_per_gas would be enough for current block).

  • Transactions with max fee equal or higher than current block base fee
  • Transactions with and without priority fee
  • Transactions with and without value
  • Transactions with and without calldata
  • Transactions with max fee per blob gas lower or higher than the priority fee
Source code in tests/cancun/eip4844_blobs/test_blob_txs.py
@pytest.mark.parametrize_by_fork(
    "blobs_per_tx",
    lambda fork: [
        pytest.param([1], id="single_blob"),
        pytest.param([fork.max_blobs_per_tx()], id="max_blobs"),
    ],
)
@pytest.mark.parametrize(
    "tx_access_list",
    [[], [AccessList(address=100, storage_keys=[100, 200])]],
    ids=["no_access_list", "access_list"],
)
@pytest.mark.parametrize("tx_max_fee_per_gas", [7, 14])
@pytest.mark.parametrize("tx_max_priority_fee_per_gas", [0, 7])
@pytest.mark.parametrize("tx_value", [0, 1])
@pytest.mark.parametrize(
    "tx_calldata",
    [b"", b"\x00", b"\x01"],
    ids=["no_calldata", "single_zero_calldata", "single_one_calldata"],
)
@pytest.mark.parametrize("tx_max_fee_per_blob_gas_multiplier", [1, 100, 10000])
@pytest.mark.valid_from("Cancun")
def test_sufficient_balance_blob_tx(
    state_test: StateTestFiller,
    state_env: Environment,
    pre: Alloc,
    txs: List[Transaction],
) -> None:
    """
    Check that transaction is accepted when user can exactly afford the blob
    gas specified (and max_fee_per_gas would be enough for current block).

    - Transactions with max fee equal or higher than current block base fee
    - Transactions with and without priority fee
    - Transactions with and without value
    - Transactions with and without calldata
    - Transactions with max fee per blob gas lower or higher than the priority
        fee
    """
    assert len(txs) == 1
    state_test(
        pre=pre,
        post={},
        tx=txs[0],
        env=state_env,
    )

Parametrized Test Cases

This test generates 288 parametrized test cases across 5 forks.