Skip to content

test_eof_calls_clear_return_buffer()

Documentation for tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_clear_return_buffer@3719e927.

Generate fixtures for these test cases for Osaka with:

fill -v tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_clear_return_buffer --fork Osaka

Test EOF contracts calling clears returndata buffer.

Source code in tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
@pytest.mark.parametrize(
    "opcode",
    [
        Op.EXTCALL,
        Op.EXTDELEGATECALL,
        Op.EXTSTATICCALL,
    ],
)
@pytest.mark.parametrize(
    "target_account_type",
    TargetAccountType,
)
@pytest.mark.parametrize("value", [0, 1])
def test_eof_calls_clear_return_buffer(
    state_test: StateTestFiller,
    pre: Alloc,
    sender: EOA,
    opcode: Op,
    target_address: Address,
    value: int,
):
    """Test EOF contracts calling clears returndata buffer."""
    env = Environment()
    filling_contract_code = Container.Code(
        Op.MSTORE8(0, int.from_bytes(value_returndata_magic, "big")) + Op.RETURN(0, 32),
    )
    filling_callee_address = pre.deploy_contract(filling_contract_code)

    caller_contract = Container.Code(
        # First fill the return buffer and sanity check
        Op.EXTCALL(filling_callee_address, 0, 0, 0)
        + Op.SSTORE(slot_returndatasize_before_clear, Op.RETURNDATASIZE)
        # Then call something that doesn't return and check returndata cleared
        + opcode(address=target_address, value=value)
        + Op.SSTORE(slot_returndatasize, Op.RETURNDATASIZE)
        + Op.SSTORE(slot_code_worked, value_code_worked)
        + Op.STOP,
    )

    calling_contract_address = pre.deploy_contract(caller_contract)

    tx = Transaction(
        sender=sender,
        to=calling_contract_address,
        gas_limit=50000000,
    )

    calling_storage = {
        slot_code_worked: value_code_worked,
        # Sanity check
        slot_returndatasize_before_clear: 0x20,
        slot_returndatasize: 0,
    }

    post = {
        calling_contract_address: Account(storage=calling_storage),
        filling_callee_address: Account(storage={}),
    }

    state_test(
        env=env,
        pre=pre,
        post=post,
        tx=tx,
    )

Parametrized Test Cases

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

Test ID (Abbreviated) value target_account_type opcode
...fork_Osaka-state_test-value_0-target_account_type_EMPTY-opcode_EXTCALL 0 EMPTY EXTCALL
...fork_Osaka-state_test-value_0-target_account_type_EMPTY-opcode_EXTDELEGATECALL 0 EMPTY EXTDELEGATECALL
...fork_Osaka-state_test-value_0-target_account_type_EMPTY-opcode_EXTSTATICCALL 0 EMPTY EXTSTATICCALL
...fork_Osaka-state_test-value_0-target_account_type_EOA-opcode_EXTCALL 0 EOA EXTCALL
...fork_Osaka-state_test-value_0-target_account_type_EOA-opcode_EXTDELEGATECALL 0 EOA EXTDELEGATECALL
...fork_Osaka-state_test-value_0-target_account_type_EOA-opcode_EXTSTATICCALL 0 EOA EXTSTATICCALL
...fork_Osaka-state_test-value_0-target_account_type_LEGACY_CONTRACT-opcode_EXTCALL 0 LEGACY_CONTRACT EXTCALL
...fork_Osaka-state_test-value_0-target_account_type_LEGACY_CONTRACT-opcode_EXTDELEGATECALL 0 LEGACY_CONTRACT EXTDELEGATECALL
...fork_Osaka-state_test-value_0-target_account_type_LEGACY_CONTRACT-opcode_EXTSTATICCALL 0 LEGACY_CONTRACT EXTSTATICCALL
...fork_Osaka-state_test-value_0-target_account_type_EOF_CONTRACT-opcode_EXTCALL 0 EOF_CONTRACT EXTCALL
...fork_Osaka-state_test-value_0-target_account_type_EOF_CONTRACT-opcode_EXTDELEGATECALL 0 EOF_CONTRACT EXTDELEGATECALL
...fork_Osaka-state_test-value_0-target_account_type_EOF_CONTRACT-opcode_EXTSTATICCALL 0 EOF_CONTRACT EXTSTATICCALL
...fork_Osaka-state_test-value_0-target_account_type_LEGACY_CONTRACT_INVALID-opcode_EXTCALL 0 LEGACY_CONTRACT_INVALID EXTCALL
...fork_Osaka-state_test-value_0-target_account_type_LEGACY_CONTRACT_INVALID-opcode_EXTDELEGATECALL 0 LEGACY_CONTRACT_INVALID EXTDELEGATECALL
...fork_Osaka-state_test-value_0-target_account_type_LEGACY_CONTRACT_INVALID-opcode_EXTSTATICCALL 0 LEGACY_CONTRACT_INVALID EXTSTATICCALL
...fork_Osaka-state_test-value_0-target_account_type_EOF_CONTRACT_INVALID-opcode_EXTCALL 0 EOF_CONTRACT_INVALID EXTCALL
...fork_Osaka-state_test-value_0-target_account_type_EOF_CONTRACT_INVALID-opcode_EXTDELEGATECALL 0 EOF_CONTRACT_INVALID EXTDELEGATECALL
...fork_Osaka-state_test-value_0-target_account_type_EOF_CONTRACT_INVALID-opcode_EXTSTATICCALL 0 EOF_CONTRACT_INVALID EXTSTATICCALL
...fork_Osaka-state_test-value_0-target_account_type_LEGACY_CONTRACT_REVERT-opcode_EXTCALL 0 LEGACY_CONTRACT_REVERT EXTCALL
...fork_Osaka-state_test-value_0-target_account_type_LEGACY_CONTRACT_REVERT-opcode_EXTDELEGATECALL 0 LEGACY_CONTRACT_REVERT EXTDELEGATECALL
...fork_Osaka-state_test-value_0-target_account_type_LEGACY_CONTRACT_REVERT-opcode_EXTSTATICCALL 0 LEGACY_CONTRACT_REVERT EXTSTATICCALL
...fork_Osaka-state_test-value_0-target_account_type_EOF_CONTRACT_REVERT-opcode_EXTCALL 0 EOF_CONTRACT_REVERT EXTCALL
...fork_Osaka-state_test-value_0-target_account_type_EOF_CONTRACT_REVERT-opcode_EXTDELEGATECALL 0 EOF_CONTRACT_REVERT EXTDELEGATECALL
...fork_Osaka-state_test-value_0-target_account_type_EOF_CONTRACT_REVERT-opcode_EXTSTATICCALL 0 EOF_CONTRACT_REVERT EXTSTATICCALL
...fork_Osaka-state_test-value_0-target_account_type_IDENTITY_PRECOMPILE-opcode_EXTCALL 0 IDENTITY_PRECOMPILE EXTCALL
...fork_Osaka-state_test-value_0-target_account_type_IDENTITY_PRECOMPILE-opcode_EXTDELEGATECALL 0 IDENTITY_PRECOMPILE EXTDELEGATECALL
...fork_Osaka-state_test-value_0-target_account_type_IDENTITY_PRECOMPILE-opcode_EXTSTATICCALL 0 IDENTITY_PRECOMPILE EXTSTATICCALL
...fork_Osaka-state_test-value_1-target_account_type_EMPTY-opcode_EXTCALL 1 EMPTY EXTCALL
...fork_Osaka-state_test-value_1-target_account_type_EMPTY-opcode_EXTDELEGATECALL 1 EMPTY EXTDELEGATECALL
...fork_Osaka-state_test-value_1-target_account_type_EMPTY-opcode_EXTSTATICCALL 1 EMPTY EXTSTATICCALL
...fork_Osaka-state_test-value_1-target_account_type_EOA-opcode_EXTCALL 1 EOA EXTCALL
...fork_Osaka-state_test-value_1-target_account_type_EOA-opcode_EXTDELEGATECALL 1 EOA EXTDELEGATECALL
...fork_Osaka-state_test-value_1-target_account_type_EOA-opcode_EXTSTATICCALL 1 EOA EXTSTATICCALL
...fork_Osaka-state_test-value_1-target_account_type_LEGACY_CONTRACT-opcode_EXTCALL 1 LEGACY_CONTRACT EXTCALL
...fork_Osaka-state_test-value_1-target_account_type_LEGACY_CONTRACT-opcode_EXTDELEGATECALL 1 LEGACY_CONTRACT EXTDELEGATECALL
...fork_Osaka-state_test-value_1-target_account_type_LEGACY_CONTRACT-opcode_EXTSTATICCALL 1 LEGACY_CONTRACT EXTSTATICCALL
...fork_Osaka-state_test-value_1-target_account_type_EOF_CONTRACT-opcode_EXTCALL 1 EOF_CONTRACT EXTCALL
...fork_Osaka-state_test-value_1-target_account_type_EOF_CONTRACT-opcode_EXTDELEGATECALL 1 EOF_CONTRACT EXTDELEGATECALL
...fork_Osaka-state_test-value_1-target_account_type_EOF_CONTRACT-opcode_EXTSTATICCALL 1 EOF_CONTRACT EXTSTATICCALL
...fork_Osaka-state_test-value_1-target_account_type_LEGACY_CONTRACT_INVALID-opcode_EXTCALL 1 LEGACY_CONTRACT_INVALID EXTCALL
...fork_Osaka-state_test-value_1-target_account_type_LEGACY_CONTRACT_INVALID-opcode_EXTDELEGATECALL 1 LEGACY_CONTRACT_INVALID EXTDELEGATECALL
...fork_Osaka-state_test-value_1-target_account_type_LEGACY_CONTRACT_INVALID-opcode_EXTSTATICCALL 1 LEGACY_CONTRACT_INVALID EXTSTATICCALL
...fork_Osaka-state_test-value_1-target_account_type_EOF_CONTRACT_INVALID-opcode_EXTCALL 1 EOF_CONTRACT_INVALID EXTCALL
...fork_Osaka-state_test-value_1-target_account_type_EOF_CONTRACT_INVALID-opcode_EXTDELEGATECALL 1 EOF_CONTRACT_INVALID EXTDELEGATECALL
...fork_Osaka-state_test-value_1-target_account_type_EOF_CONTRACT_INVALID-opcode_EXTSTATICCALL 1 EOF_CONTRACT_INVALID EXTSTATICCALL
...fork_Osaka-state_test-value_1-target_account_type_LEGACY_CONTRACT_REVERT-opcode_EXTCALL 1 LEGACY_CONTRACT_REVERT EXTCALL
...fork_Osaka-state_test-value_1-target_account_type_LEGACY_CONTRACT_REVERT-opcode_EXTDELEGATECALL 1 LEGACY_CONTRACT_REVERT EXTDELEGATECALL
...fork_Osaka-state_test-value_1-target_account_type_LEGACY_CONTRACT_REVERT-opcode_EXTSTATICCALL 1 LEGACY_CONTRACT_REVERT EXTSTATICCALL
...fork_Osaka-state_test-value_1-target_account_type_EOF_CONTRACT_REVERT-opcode_EXTCALL 1 EOF_CONTRACT_REVERT EXTCALL
...fork_Osaka-state_test-value_1-target_account_type_EOF_CONTRACT_REVERT-opcode_EXTDELEGATECALL 1 EOF_CONTRACT_REVERT EXTDELEGATECALL
...fork_Osaka-state_test-value_1-target_account_type_EOF_CONTRACT_REVERT-opcode_EXTSTATICCALL 1 EOF_CONTRACT_REVERT EXTSTATICCALL
...fork_Osaka-state_test-value_1-target_account_type_IDENTITY_PRECOMPILE-opcode_EXTCALL 1 IDENTITY_PRECOMPILE EXTCALL
...fork_Osaka-state_test-value_1-target_account_type_IDENTITY_PRECOMPILE-opcode_EXTDELEGATECALL 1 IDENTITY_PRECOMPILE EXTDELEGATECALL
...fork_Osaka-state_test-value_1-target_account_type_IDENTITY_PRECOMPILE-opcode_EXTSTATICCALL 1 IDENTITY_PRECOMPILE EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_EMPTY-opcode_EXTCALL 0 EMPTY EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_EMPTY-opcode_EXTDELEGATECALL 0 EMPTY EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_EMPTY-opcode_EXTSTATICCALL 0 EMPTY EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_EOA-opcode_EXTCALL 0 EOA EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_EOA-opcode_EXTDELEGATECALL 0 EOA EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_EOA-opcode_EXTSTATICCALL 0 EOA EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_LEGACY_CONTRACT-opcode_EXTCALL 0 LEGACY_CONTRACT EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_LEGACY_CONTRACT-opcode_EXTDELEGATECALL 0 LEGACY_CONTRACT EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_LEGACY_CONTRACT-opcode_EXTSTATICCALL 0 LEGACY_CONTRACT EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_EOF_CONTRACT-opcode_EXTCALL 0 EOF_CONTRACT EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_EOF_CONTRACT-opcode_EXTDELEGATECALL 0 EOF_CONTRACT EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_EOF_CONTRACT-opcode_EXTSTATICCALL 0 EOF_CONTRACT EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_LEGACY_CONTRACT_INVALID-opcode_EXTCALL 0 LEGACY_CONTRACT_INVALID EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_LEGACY_CONTRACT_INVALID-opcode_EXTDELEGATECALL 0 LEGACY_CONTRACT_INVALID EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_LEGACY_CONTRACT_INVALID-opcode_EXTSTATICCALL 0 LEGACY_CONTRACT_INVALID EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_EOF_CONTRACT_INVALID-opcode_EXTCALL 0 EOF_CONTRACT_INVALID EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_EOF_CONTRACT_INVALID-opcode_EXTDELEGATECALL 0 EOF_CONTRACT_INVALID EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_EOF_CONTRACT_INVALID-opcode_EXTSTATICCALL 0 EOF_CONTRACT_INVALID EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_LEGACY_CONTRACT_REVERT-opcode_EXTCALL 0 LEGACY_CONTRACT_REVERT EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_LEGACY_CONTRACT_REVERT-opcode_EXTDELEGATECALL 0 LEGACY_CONTRACT_REVERT EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_LEGACY_CONTRACT_REVERT-opcode_EXTSTATICCALL 0 LEGACY_CONTRACT_REVERT EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_EOF_CONTRACT_REVERT-opcode_EXTCALL 0 EOF_CONTRACT_REVERT EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_EOF_CONTRACT_REVERT-opcode_EXTDELEGATECALL 0 EOF_CONTRACT_REVERT EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_EOF_CONTRACT_REVERT-opcode_EXTSTATICCALL 0 EOF_CONTRACT_REVERT EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_IDENTITY_PRECOMPILE-opcode_EXTCALL 0 IDENTITY_PRECOMPILE EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_IDENTITY_PRECOMPILE-opcode_EXTDELEGATECALL 0 IDENTITY_PRECOMPILE EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_0-target_account_type_IDENTITY_PRECOMPILE-opcode_EXTSTATICCALL 0 IDENTITY_PRECOMPILE EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_EMPTY-opcode_EXTCALL 1 EMPTY EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_EMPTY-opcode_EXTDELEGATECALL 1 EMPTY EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_EMPTY-opcode_EXTSTATICCALL 1 EMPTY EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_EOA-opcode_EXTCALL 1 EOA EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_EOA-opcode_EXTDELEGATECALL 1 EOA EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_EOA-opcode_EXTSTATICCALL 1 EOA EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_LEGACY_CONTRACT-opcode_EXTCALL 1 LEGACY_CONTRACT EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_LEGACY_CONTRACT-opcode_EXTDELEGATECALL 1 LEGACY_CONTRACT EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_LEGACY_CONTRACT-opcode_EXTSTATICCALL 1 LEGACY_CONTRACT EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_EOF_CONTRACT-opcode_EXTCALL 1 EOF_CONTRACT EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_EOF_CONTRACT-opcode_EXTDELEGATECALL 1 EOF_CONTRACT EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_EOF_CONTRACT-opcode_EXTSTATICCALL 1 EOF_CONTRACT EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_LEGACY_CONTRACT_INVALID-opcode_EXTCALL 1 LEGACY_CONTRACT_INVALID EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_LEGACY_CONTRACT_INVALID-opcode_EXTDELEGATECALL 1 LEGACY_CONTRACT_INVALID EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_LEGACY_CONTRACT_INVALID-opcode_EXTSTATICCALL 1 LEGACY_CONTRACT_INVALID EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_EOF_CONTRACT_INVALID-opcode_EXTCALL 1 EOF_CONTRACT_INVALID EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_EOF_CONTRACT_INVALID-opcode_EXTDELEGATECALL 1 EOF_CONTRACT_INVALID EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_EOF_CONTRACT_INVALID-opcode_EXTSTATICCALL 1 EOF_CONTRACT_INVALID EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_LEGACY_CONTRACT_REVERT-opcode_EXTCALL 1 LEGACY_CONTRACT_REVERT EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_LEGACY_CONTRACT_REVERT-opcode_EXTDELEGATECALL 1 LEGACY_CONTRACT_REVERT EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_LEGACY_CONTRACT_REVERT-opcode_EXTSTATICCALL 1 LEGACY_CONTRACT_REVERT EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_EOF_CONTRACT_REVERT-opcode_EXTCALL 1 EOF_CONTRACT_REVERT EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_EOF_CONTRACT_REVERT-opcode_EXTDELEGATECALL 1 EOF_CONTRACT_REVERT EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_EOF_CONTRACT_REVERT-opcode_EXTSTATICCALL 1 EOF_CONTRACT_REVERT EXTSTATICCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_IDENTITY_PRECOMPILE-opcode_EXTCALL 1 IDENTITY_PRECOMPILE EXTCALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_IDENTITY_PRECOMPILE-opcode_EXTDELEGATECALL 1 IDENTITY_PRECOMPILE EXTDELEGATECALL
...fork_Osaka-blockchain_test_from_state_test-value_1-target_account_type_IDENTITY_PRECOMPILE-opcode_EXTSTATICCALL 1 IDENTITY_PRECOMPILE EXTSTATICCALL