NestedMappings

Heimdall Evaluation Report · target: nested-mappings · status: pass

LLM evaluation

Baseline

No LLM evaluation was recorded.

Candidate

Score: 45/100

The state-mutating function (approve) is decompiled perfectly, including the correct nested-mapping storage write keyed by msg.sender and the spender argument. However, both read functions (the explicit allowance getter 0xdd62ed3e and the auto-generated public mapping getter 0x55b6ed5c) are emitted as empty bodies with no storage load, no second argument, and no return value, so two thirds of the contract's observable behavior is missing.

Unified diff

@@ -1,0 +1,46 @@+// SPDX-License-Identifier: MIT+pragma solidity >=0.8.0;++/// @title            Decompiled Contract+/// @author           Jonathan Becker <jonathan@jbecker.dev>+/// @custom:version   heimdall-rs v0.9.2+///+/// @notice           This contract was decompiled using the heimdall-rs decompiler.+///                     It was generated directly by tracing the EVM opcodes from this contract.+///                     As a result, it may not compile or even be valid solidity code.+///                     Despite this, it should be obvious what each function does. Overall+///                     logic should have been preserved throughout decompiling.+///+/// @custom:github    You can find the open-source decompiler here:+///                       https://heimdall.rs++contract DecompiledContract {+    mapping(address => mapping(address => uint256)) storage_map_a; // storage slot: 0x00+    +    +    /// @custom:selector    0xdd62ed3e+    /// @custom:signature   Unresolved_dd62ed3e(address arg0) public pure+    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]+    function Unresolved_dd62ed3e(address arg0) public pure {+        require(0x04 + (msg.data.length - 0x04) - 0x04 >= 0x40);+        require(true);+    }+    +    /// @custom:selector    0x095ea7b3+    /// @custom:signature   approve(address arg0, uint256 arg1) public payable+    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]+    /// @param              arg1 ["uint256", "bytes32", "int256"]+    function approve(address arg0, uint256 arg1) public payable {+        require(0x04 + (msg.data.length - 0x04) - 0x04 >= 0x40);+        require(true);+        storage_map_a[msg.sender][arg0] = arg1;+    }+    +    /// @custom:selector    0x55b6ed5c+    /// @custom:signature   Unresolved_55b6ed5c(address arg0) public pure+    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]+    function Unresolved_55b6ed5c(address arg0) public pure {+        require(0x04 + (msg.data.length - 0x04) - 0x04 >= 0x40);+        require(true);+    }+}