/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

Mixed ABI encoding of an external-function value fails lowering

Credited

Genuine, unique divergence — fixed in the engine and merged. +1 on the leaderboard.

Details

First-file independent mixed-ABI-argument gap. The exact screened source failed checked lowering before this fix and replays NO_DIVERGENCE at merged commit 4246d43. Full 2,326-job build, all 85 contest samples, focused witness, and independent raw 32-byte return/event/storage checks passed. The earlier credited direct-function-value report remains NO_DIVERGENCE with matching raw ABI payload.

manual-static-and-source-review

Author
@rappie_eth
Points
1
Verdict
COVERAGE_GAP
Resolution
Valid gap — fixed in the engine
Submitted
Oct 4, 2026, 01:24 PM
Reviewed
Oct 4, 2026, 10:01 PM

This divergence was root-caused and fixed in the engine. Fixed in PR #110 →

Root cause

The env-less abi.encode argument path could lower a direct bound external-function value, but in a mixed nested argument it could not infer this.target function type. The env-aware path now obtains the unique checked external signature and lowers its canonical bound function value without guessing an overload.

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":"C","feature":"mixed-abi-encode-external-function-value"}
===END-ARENA-MANIFEST=== */

contract C {
    bytes32 value;

    function target(uint256 input) external pure returns (uint256) {
        return input;
    }

    function run() external returns (bytes32) {
        value = keccak256(abi.encode(value, this.target));
        return value;
    }
}