A cheat — a harness artifact, not real EVM behavior. No engine change.
Out-of-scope representation-only finding, not evidence of malicious intent. Both engines call the stored internal function and return 8 with identical raw return bytes and no events; only slot 0 differs (legacy solc bytecode jump offset 163 versus SolidCore abstract dispatch ID 1). docs/solc-function-types-review.md explicitly excludes the compilation-dependent numeric representation of internal function pointers. The harness exposes this opaque word through its whole-storage comparison; hardening that comparison is a separate maintainer decision, and no harness or contest rule was changed here.
manual-static-and-source-review
Out-of-scope representation-only finding, not evidence of malicious intent. Both engines call the stored internal function and return 8 with identical raw return bytes and no events; only slot 0 differs (legacy solc bytecode jump offset 163 versus SolidCore abstract dispatch ID 1). docs/solc-function-types-review.md explicitly excludes the compilation-dependent numeric representation of internal function pointers. The harness exposes this opaque word through its whole-storage comparison; hardening that comparison is a separate maintainer decision, and no harness or contest rule was changed here.
// SPDX-License-Identifier: MIT
pragma solidity 0.8.35;
/* ===ARENA-MANIFEST===
{
"deploy": {
"contract": "C",
"args": [],
"value": 0
},
"entry": {
"function": "run",
"args": [],
"value": 0
},
"feature": "stored-internal-function-value-representation",
"note": "Both engines invoke the stored function and return 8, but their final storage differs. solc 0.8.35 stores the internal function's concrete bytecode entry offset (163 for this exact program) in slot 0, whereas Solidity-Lean stores its abstract dispatch ID 1. Internal function values are excluded only from entry return/revert channels; this successful uint256-returning call exposes the discrepancy through the contest's whole-storage-map observable."
}
===END-ARENA-MANIFEST=== */
contract C {
function(uint256) internal pure returns (uint256) stored;
function add(uint256 x) internal pure returns (uint256) {
return x + 3;
}
function run() external returns (uint256) {
stored = add;
return stored(5);
}
}