• Difficulty - Medium
    Total Plays - 6
    Allowed Time - 10 sec
    Best time - 2.234

    Why is calldata preferred for router functions?

    Tip: Click "Play" to reveal options and start playing.

    #A
    #B
    #C
    #D
    Explanation:
    Calldata avoids copying user inputs into memory, significantly reducing gas usage for large payloads. Router contracts receive untrusted inputs, so avoiding memory expansion is both cheaper and safer. This is why AMMs and DEX routers heavily rely on calldata
  • Difficulty - Medium
    Total Plays - 5
    Allowed Time - 10 sec
    Best time - 3.026

    Why do auditors flag “silent reverts”?

    Tip: Click "Play" to reveal options and start playing.

    #A
    #B
    #C
    #D
    Explanation:
    Silent reverts hide failure reasons, making debugging and validation difficult. They also open the door for inconsistent execution paths
  • Difficulty - Medium
    Total Plays - 7
    Allowed Time - 10 sec
    Best time - 2.492

    What does REVERT preserve that INVALID does not?

    Tip: Click "Play" to reveal options and start playing.

    #A
    #B
    #C
    #D
    Explanation:
    REVERT allows returning structured revert data back to the caller, which improves debugging and interface guarantees. INVALID terminates execution with no return payload. This distinction is crucial for protocols relying on bubble-up error messaging.
  • Difficulty - Medium
    Total Plays - 7
    Allowed Time - 10 sec
    Best time - 10

    Why are multi-step writes risky?

    Tip: Click "Play" to reveal options and start playing.

    #A
    #B
    #C
    #D
    Explanation:
    Multi-step operations can leave the contract in a partially updated state if execution halts. Attackers exploit these interim states to bypass checks.
  • Difficulty - Medium
    Total Plays - 6
    Allowed Time - 10 sec
    Best time - 3.912

    Which op is used for external code size?

    Tip: Click "Play" to reveal options and start playing.

    #A
    #B
    #C
    #D
    Explanation:
    EXTCODESIZE checks if the target has code deployed. It helps detect contracts vs EOAs in validation logic
  • Difficulty - Medium
    Total Plays - 5
    Allowed Time - 10 sec
    Best time - 5.375

    Why is SELFDESTRUCT dangerous in proxies?

    Tip: Click "Play" to reveal options and start playing.

    #A
    #B
    #C
    #D
    Explanation:
    If the implementation contract is self-destructed, proxies break permanently or redirect unexpectedly. This creates bricked contracts and undefined behavior
  • Difficulty - Medium
    Total Plays - 8
    Allowed Time - 10 sec
    Best time - 10

    What does RETURNDATASIZE prevent?

    Tip: Click "Play" to reveal options and start playing.

    #A
    #B
    #C
    #D
    Explanation:
    RETURNDATASIZE ensures the caller knows exactly how many bytes were returned. It prevents incorrect assumptions and truncation bugs during low-level calls.
  • Difficulty - Medium
    Total Plays - 13
    Allowed Time - 10 sec
    Best time - 1.846

    Why is storing large arrays on-chain discouraged?

    Tip: Click "Play" to reveal options and start playing.

    #A
    #B
    #C
    #D
    Explanation:
    Storage is the most expensive resource in the EVM. Large arrays result in high operational cost and poor long-term scalability.
  • Difficulty - Medium
    Total Plays - 13
    Allowed Time - 10 sec
    Best time - 0.675

    Why is using block.timestamp in fairness-critical logic dangerous?

    Tip: Click "Play" to reveal options and start playing.

    #A
    #B
    #C
    #D
    Explanation:
    Miners can adjust timestamps within a reasonable range, enabling subtle manipulation. This can affect auctions, lotteries, and reward systems
  • Difficulty - Medium
    Total Plays - 7
    Allowed Time - 10 sec
    Best time - 3.010

    5. Why is delegatecall risky?

    Tip: Click "Play" to reveal options and start playing.

    #A
    #B
    #C
    #D
    Explanation:
    delegatecall executes callee code in the caller’s storage context, leading to storage collisions and privilege escalation. This is a key attack vector in proxy contracts.
  • Difficulty - Medium
    Total Plays - 8
    Allowed Time - 10 sec
    Best time - 4.033

    What happens if a constructor of a deployed contract reverts?

    Tip: Click "Play" to reveal options and start playing.

    #A
    #B
    #C
    #D
    Explanation:
    If the constructor reverts, the entire deployment fails and no contract is created. This prevents partially-initialized smart contracts from being pushed on-chain
  • Difficulty - Medium
    Total Plays - 6
    Allowed Time - 10 sec
    Best time - 10

    4. Which opcode is responsible for dynamic memory expansion cost?

    Tip: Click "Play" to reveal options and start playing.

    #A
    #B
    #C
    #D
    Explanation:
    MSTORE triggers memory expansion when writing to higher memory slots. Memory grows quadratically, so developers must understand how loops and large arrays impact gas.
  • Difficulty - Medium
    Total Plays - 5
    Allowed Time - 10 sec
    Best time - 4.975

    1. What does EXTCODEHASH primarily help detect?

    Tip: Click "Play" to reveal options and start playing.

    #A
    #B
    #C
    #D
    Explanation:
    EXTCODEHASH returns the hash of a contract’s deployed bytecode, allowing detection of code changes or empty accounts. Auditors use it to verify contract identity and defend against unexpected contract replacement patterns
  • Difficulty - Medium
    Total Plays - 8
    Allowed Time - 10 sec
    Best time - 5.082

    What is the main security benefit of using immutable variables?

    Tip: Click "Play" to reveal options and start playing.

    #A
    #B
    #C
    #D
    Explanation:
    immutable variables are stored directly in bytecode, not in storage, reducing runtime gas and preventing accidental overwrites. It is a common optimization technique in gas-efficient contract design.