/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 addmod overflow passed through an internal function-pointer call misses Panic(0x11)

Pending

Submitted, awaiting the pre-agent gates.

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

Source

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

/* ===ARENA-MANIFEST===
{
  "deploy": {
    "contract": "T",
    "args": []
  },
  "entry": {
    "function": "run",
    "args": []
  },
  "feature": "narrow-addmod-through-fnptr-arg",
  "note": "Narrow addmod overflow passed through an internal function-pointer call misses Panic(0x11). solc+EVM observable is revert|panic:17##EVT####STO##; solidity-lean computes success|[w:6]##EVT####STO##0:1 (differing component: revert-vs-success)."
}
===END-ARENA-MANIFEST=== */

contract T {
    bool internal cflag;
    uint256 internal trace;
    function fpt0(uint128 x) internal pure returns (uint128) { return x; }

    constructor() {
        cflag = true;
    }

    function p0() internal returns (uint256) {
        uint128 am0 = uint128(340282366920938463463374607431768211455); uint128 an0 = uint128(9);
        function(uint128) internal pure returns (uint128) fp0 = fpt0;
        return uint256(fp0(uint128(uint128(addmod(uint256(am0 + an0), 1, 7)))));
    }

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