Skip to content

test_large_amount()

Documentation for tests/shanghai/eip4895_withdrawals/test_withdrawals.py::test_large_amount@ffe48572.

Generate fixtures for these test cases for Bogota with:

fill -v tests/shanghai/eip4895_withdrawals/test_withdrawals.py::test_large_amount --fork Bogota

Test withdrawals that have a large gwei amount.

Test such that that (gwei * 1e9) could overflow uint64 but not uint256.

Source code in tests/shanghai/eip4895_withdrawals/test_withdrawals.py
@pytest.mark.xdist_group(name="bigmem")
def test_large_amount(
    blockchain_test: BlockchainTestFiller,
    pre: Alloc,
) -> None:
    """
    Test withdrawals that have a large gwei amount.

    Test such that that (gwei * 1e9) could overflow uint64 but not uint256.
    """
    withdrawals: List[Withdrawal] = []
    amounts: List[int] = [
        (2**35),
        (2**64) - 1,
        (2**63) + 1,
        (2**63),
        (2**63) - 1,
    ]

    post = {}

    for i, amount in enumerate(amounts):
        addr = pre.fund_eoa(0)
        withdrawals.append(
            Withdrawal(
                index=i,
                validator_index=i,
                address=addr,
                amount=amount,
            )
        )
        post[addr] = Account(balance=(amount * ONE_GWEI))

    blocks = [
        Block(
            withdrawals=withdrawals,
        )
    ]
    blockchain_test(pre=pre, post=post, blocks=blocks)

Parametrized Test Cases

This test generates 1 parametrized test case across 6 forks.