/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

Qualified library custom error retains qualification on a local name collision

Disqualified

A cheat — a harness artifact, not real EVM behavior. No engine change.

Details

Out-of-scope normalizer artifact, not evidence of malicious intent. The EVM raw revert is 0xe97398b6 followed by the 32-byte ABI encoding of 9. The engine’s qualified error E.Clash has the same selector 0xe97398b6 and value 9; SolidCore/Contest/Observable.lean renders that payload as custom:Clash:w:9. The contest helper at contest/observable.py renders its raw internal name as custom:E.Clash:w:9, creating the false mismatch. No on-chain revert bytes, events, or storage differ. Harness rendering should be considered separately; no harness or contest rule was changed and no point is due.

manual-static-and-source-review

Author
@rappie_eth
Points
0
Verdict
SOUNDNESS_GAP
Resolution
Cheat — disqualified
Submitted
Oct 4, 2026, 03:06 PM
Reviewed
Oct 4, 2026, 10:37 PM

Root cause

Out-of-scope normalizer artifact, not evidence of malicious intent. The EVM raw revert is 0xe97398b6 followed by the 32-byte ABI encoding of 9. The engine’s qualified error E.Clash has the same selector 0xe97398b6 and value 9; SolidCore/Contest/Observable.lean renders that payload as custom:Clash:w:9. The contest helper at contest/observable.py renders its raw internal name as custom:E.Clash:w:9, creating the false mismatch. No on-chain revert bytes, events, or storage differ. Harness rendering should be considered separately; no harness or contest rule was changed and no point is due.

Source

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

/* ===ARENA-MANIFEST===
{"deploy":{"contract":"C","args":[],"value":0},"entry":{"function":"run","args":[],"value":0},"lane":"S","feature":"qualified-error-collision-direct-revert-control"}
===END-ARENA-MANIFEST=== */

library E {
    error Clash(uint256 value);
}

contract C {
    error Clash(bytes32 value);

    function run() external pure {
        revert E.Clash(9);
    }
}