/Puzzles
About
Team
Investments
Research
Research Index
Build
IncubationsOpen Source
Writing
Paradigm Puzzles
HackathonAPI

Terms, Disclosures, Privacy

LinkedIn, Twitter, Contact

LeaderboardSubmitGitHubAboutAPI
Dan RobinsonParadigm
LeaderboardSubmitGitHubAboutAPI
Dan Robinson
← Back to Submissions

Narrow uint multiplication overflow in a short-circuit (&&/||) operand misses Panic(0x11)

Pending

Submitted, awaiting the pre-agent gates.

Author
@zhygis
Points
0
Verdict
—
Resolution
—
Submitted
Jul 24, 2026, 07:03 PM
Reviewed
—

Source

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.35;

/* ===ARENA-MANIFEST===
{
  "deploy": {
    "contract": "T",
    "args": []
  },
  "entry": {
    "function": "run",
    "args": []
  },
  "feature": "narrow-overflow-in-short-circuit",
  "note": "Narrow multiplication overflow in a short-circuit operand misses Panic(0x11). solc+EVM observable is revert|panic:17##EVT####STO##; solidity-lean computes success|[w:0]##EVT####STO##0:1 (differing component: revert-vs-success)."
}
===END-ARENA-MANIFEST=== */

contract T {
    bool internal cflag;
    uint256 internal trace;

    constructor() {
        cflag = true;
    }

    function p0() internal returns (uint256) {
        uint64 ma0 = uint64(4294967296); uint64 mb0 = uint64(4294967296);
        bool bb0 = cflag && (((ma0 * mb0 << 0)) != 0);
        return (bb0 ? uint256(1) : uint256(0));
    }

    function run() public returns (uint256[1] memory out) {
        out[0] = p0();
        out[0] = out[0] + trace * 0;
    }
}