TW
Tripwire
Find contracts. Test them. Review real vulns.

Analysis Run

019b3836-3db3-7104-9dd5-2e807d1a1f1e

complete
Chain ID
1
Address
Block Number
Created
Fri, Dec 19, 2025 8:03 PM
Review Summary

What survived the funnel

Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?

Confirmed
2
Validated
2
Source
Bytecode only
Review Backing
Not yet
Best current signal
ETH value transfer possible
crit 0 high 1 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
4767 artifact.fetch complete 1 / 3 3 months ago
4768 tool.cast_disasm complete 1 / 3 3 months ago
47824 analysis.bundle complete 1 / 3 1 week ago
47825 capability.graph complete 1 / 3 1 week ago
47826 detector.run complete 1 / 3 1 week ago
47827 validation.fork complete 1 / 3 1 week ago
113283 report.consolidate complete 1 / 6 1 week ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no
Implementation:
Verified Source: no

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
0
No findings?
yes
Summary
Reviewed BYTECODE_BUNDLE.json and the runtime bytecode. The contract is very small, has one inferred selector (0x6d4ce63c), performs no storage reads/writes, no DELEGATECALL/SELFDESTRUCT/upgrade-slot activity, and no proxy indicators. The only external interaction is a single CALL at pc:0x71 to constant address 0x04 (the identity precompile), with constant zero value, used as a memcpy-like operation to return a fixed ABI-encoded string ("Hello World!!"). The detector artifact flags an external CALL / possible ETH transfer, but the static bytecode indicates the call target and value are constant and non-user-controlled; the value passed is 0, so this does not support a meaningful reentrancy, access-control, accounting, signature-validation, or upgradeability finding. Selector inference and guard detection remain best-effort, but on this bytecode the observed behavior is consistent with a pure constant-return function plus a STOP fallback.
View stdout
{"no_findings":true,"summary":"Reviewed BYTECODE_BUNDLE.json and the runtime bytecode. The contract is very small, has one inferred selector (0x6d4ce63c), performs no storage reads/writes, no DELEGATECALL/SELFDESTRUCT/upgrade-slot activity, and no proxy indicators. The only external interaction is a single CALL at pc:0x71 to constant address 0x04 (the identity precompile), with constant zero value, used as a memcpy-like operation to return a fixed ABI-encoded string (\"Hello World!!\"). The detector artifact flags an external CALL / possible ETH transfer, but the static bytecode indicates the call target and value are constant and non-user-controlled; the value passed is 0, so this does not support a meaningful reentrancy, access-control, accounting, signature-validation, or upgradeability finding. Selector inference and guard detection remain best-effort, but on this bytecode the observed behavior is consistent with a pure constant-return function plus a STOP fallback.","findings":[]}
View stderr
OpenAI Codex v0.118.0 (research preview)
--------
workdir: /tmp/codex-n8szwjrs
model: gpt-5.4
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: none
session id: 019d5c15-a3dc-7792-8287-e6238712d6ae
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.

Special cases when reasoning from bytecode (be explicit about uncertainty):
- Selector inference is best-effort; missing selectors are common.
- Fallback/receive paths may be the only entrypoints.
- CALL vs DELEGATECALL semantics differ; DELEGATECALL executes in caller storage.
- Proxy patterns (EIP-1967, minimal proxies, beacon) change which storage is authoritative.
- Storage slots are raw; mappings/arrays appear via keccak patterns, names are unknown.
- Guard detection is heuristic; absence of guards does NOT mean unguarded.
- Returndata checking is unknown unless explicitly shown in evidence.
- Precompiles (0x1..0x9) and common ERC20 transfer selectors may appear; do not over-claim.

Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title.
- Locations can be pc references like "pc:0x123" or selectors like "selector:0xa9059cbb".

Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation,
accounting/invariant breaks, dangerous delegatecall, and untrusted external calls.
Be conservative: if evidence is weak, mark severity low/medium and explain why.
warning: Codex could not find system bubblewrap on PATH. Please install bubblewrap with your package manager. Codex will use the vendored bubblewrap in the meantime.
exec
/bin/bash -lc "pwd && ls -la && rg --files -g 'BYTECODE_BUNDLE.json' -g 'AGENTS.md'" in /tmp/codex-n8szwjrs
 succeeded in 0ms:
/tmp/codex-n8szwjrs
total 48
drwx------   2 noahkuhn noahkuhn  4096 Apr  5 05:20 .
drwxrwxrwt 270 nobody   nogroup  24576 Apr  5 05:20 ..
-rw-rw-r--   1 noahkuhn noahkuhn  9528 Apr  5 05:20 BYTECODE_BUNDLE.json
-rw-rw-r--   1 noahkuhn noahkuhn   815 Apr  5 05:20 codex-output-schema.json
BYTECODE_BUNDLE.json

exec
/bin/bash -lc "sed -n '1,260p' BYTECODE_BUNDLE.json" in /tmp/codex-n8szwjrs
 succeeded in 0ms:
{
  "analysis_artifact": {
    "address": "0x9cfe332aeb796e470141a287ab5c76342a040414",
    "artifact_hash": "0x8afaafcf1bbe3894cbaa60634617acf400b3417a368ea52f36b89f9ab6268112",
    "artifact_json": {
      "auth": {
        "guards": []
      },
      "basic_blocks": [
        {
          "end_pc": 23,
          "hash": "0xc72d185188a7303030b5c0466ce2a6a00958de0ed5b5ed109434543334eee584",
          "opcodes": [
            "PUSH1",
            "PUSH1",
            "MSTORE",
            "PUSH1",
            "PUSH1",
            "EXP",
            "PUSH1",
            "CALLDATALOAD",
            "DIV",
            "PUSH4",
            "OP_81",
            "EQ",
            "PUSH1",
            "JUMPI"
          ],
          "start_pc": 0
        },
        {
          "end_pc": 25,
          "hash": "0x56089bfe89cc198c7401cb20fcbbfaed80f503905440c3bef674326d0824ccee",
          "opcodes": [
            "JUMPDEST",
            "STOP"
          ],
          "start_pc": 24
        },
        {
          "end_pc": 158,
          "hash": "0xf267623bfd073dcfebc6f387551a92ce9607a21fc740db0feb0120f2b5f52237",
          "opcodes": [
            "JUMPDEST",
            "PUSH1",
            "PUSH1",
            "MSTORE",
            "PUSH1",
            "PUSH1",
            "MSTORE",
            "PUSH1",
            "PUSH1",
            "OP_90",
            "OP_81",
            "MSTORE",
            "PUSH32",
            "PUSH1",
            "MSTORE",
            "PUSH1",
            "PUSH1",
            "OP_90",
            "OP_81",
            "MSTORE",
            "PUSH1",
            "PUSH1",
            "OP_81",
            "OP_90",
            "MSTORE",
            "OP_81",
            "OP_90",
            "PUSH2",
            "OP_90",
            "PUSH1",
            "OP_90",
            "OP_80",
            "OP_83",
            "OP_81",
            "OP_84",
            "PUSH1",
            "PUSH1",
            "PUSH1",
            "CALL",
            "POP",
            "POP",
            "OP_81",
            "MLOAD",
            "PUSH19",
            "NOT",
            "AND",
            "OP_90",
            "OP_91",
            "MSTORE",
            "POP",
            "POP",
            "PUSH1",
            "MLOAD",
            "PUSH2",
            "OP_81",
            "OP_90",
            "SUB",
            "OP_92",
            "POP",
            "OP_90",
            "POP",
            "RETURN"
          ],
          "start_pc": 26
        }
      ],
      "callsites": [
        {
          "opcode": "CALL",
          "pc": 113,
          "returndata_checked": null,
          "target_expression_category": "constant",
          "value_expression_category": "constant"
        }
      ],
      "cfg_edges": [
        {
          "from": "bb:0",
          "to": "bb:26",
          "type": "control_flow"
        },
        {
          "from": "bb:0",
          "to": "bb:24",
          "type": "control_flow_fallthrough"
        }
      ],
      "cfg_hash": "0xe91e7ee9f451c5eb800aa54348bdeca467bafb28d5fbaaa15602ec634dcc7598",
      "dispatcher_type": "selector_jump_table",
      "function_entries": [
        {
          "entry_pc": null,
          "selector": "0x6d4ce63c"
        }
      ],
      "functions": [
        {
          "auth": {
            "guards": []
          },
          "entry_pc": null,
          "selector": "0x6d4ce63c",
          "sinks": {
            "call": 1,
            "delegatecall": 0,
            "selfdestruct": 0,
            "staticcall": 0
          },
          "storage": {
            "reads": 0,
            "slots": [],
            "writes": 0
          }
        }
      ],
      "selectors": [
        "0x6d4ce63c"
      ],
      "sinks": {
        "call": 1,
        "create": 0,
        "create2": 0,
        "delegatecall": 0,
        "selfdestruct": 0,
        "staticcall": 0,
        "upgrade_slot_write_suspected": false
      },
      "storage": {
        "keccak_count": 0,
        "reads": 0,
        "slots": [],
        "writes": 0
      },
      "version": "analysis_artifact_v1"
    },
    "block_number": null,
    "chain_id": 1,
    "codehash": "0x1a6610ea109dcb1c5234a399938d15e8e4a5654a49ec0d870ea66e798d7b62f0",
    "created_at": "2026-04-04T19:57:17.000000Z",
    "id": 2458,
    "updated_at": "2026-04-04T19:57:17.000000Z",
    "version": "analysis_artifact_v1"
  },
  "analysis_run": {
    "address": "0x9cfe332aeb796e470141a287ab5c76342a040414",
    "block_number": null,
    "chain_id": 1,
    "child_links": [],
    "created_at": "2025-12-19T20:03:57.000000Z",
    "id": "019b3836-3db3-7104-9dd5-2e807d1a1f1e",
    "parent_links": [],
    "status": "running",
    "updated_at": "2026-04-04T19:57:17.000000Z"
  },
  "artifact": {
    "codehash": "0x1a6610ea109dcb1c5234a399938d15e8e4a5654a49ec0d870ea66e798d7b62f0",
    "compiler_json": {
      "etherscan": {
        "skipped": true
      }
    },
    "implementation_address": null,
    "is_proxy": false,
    "runtime_bytecode": {
      "full": "0x606060405260e060020a60003504636d4ce63c8114601a575b005b600060605260c0604052600d60809081527f48656c6c6f20576f726c6421210000000000000000000000000000000000000060a052602060c0908152600d60e081905281906101009060a09080838184600060046012f15050815172ffffffffffffffffffffffffffffffffffffff1916909152505060405161012081900392509050f3",
      "head": null,
      "length": 320,
      "tail": null,
      "truncated": false
    },
    "verified_source": false
  },
  "capability_graph": {
    "address": "0x9cfe332aeb796e470141a287ab5c76342a040414",
    "block_number": null,
    "chain_id": 1,
    "codehash": "0x1a6610ea109dcb1c5234a399938d15e8e4a5654a49ec0d870ea66e798d7b62f0",
    "created_at": "2026-04-04T19:57:17.000000Z",
    "graph_hash": "0x31de1bc7df5caa2ba7662049ac31435b20ef001bc05702a1bbf87025ce16f7c5",
    "graph_json": {
      "edges": [
        {
          "from": "bb:0",
          "to": "bb:26",
          "type": "control_flow"
        },
        {
          "from": "bb:0",
          "to": "bb:24",
          "type": "control_flow_fallthrough"
        },
        {
          "from": "bb:26",
          "to": "call:113",
          "type": "contains"
        },
        {
          "from": "call:113",
          "to": "sink:call",
          "type": "capability"
        }
      ],
      "nodes": [
        {
          "end_pc": 23,
          "hash": "0xc72d185188a7303030b5c0466ce2a6a00958de0ed5b5ed109434543334eee584",
          "id": "bb:0",
          "start_pc": 0,
          "type": "basic_block"
        },
        {
          "end_pc": 25,
          "hash": "0x56089bfe89cc198c7401cb20fcbbfaed80f503905440c3bef674326d0824ccee",
          "id": "bb:24",
          "start_pc": 24,
          "type": "basic_block"
        },

exec
/bin/bash -lc "sed -n '261,520p' BYTECODE_BUNDLE.json" in /tmp/codex-n8szwjrs
 succeeded in 0ms:
        {
          "end_pc": 158,
          "hash": "0xf267623bfd073dcfebc6f387551a92ce9607a21fc740db0feb0120f2b5f52237",
          "id": "bb:26",
          "start_pc": 26,
          "type": "basic_block"
        },
        {
          "id": "call:113",
          "opcode": "CALL",
          "pc": 113,
          "type": "callsite"
        },
        {
          "id": "sink:call",
          "type": "sink"
        },
        {
          "entry_pc": null,
          "id": "fn:0x6d4ce63c",
          "selector": "0x6d4ce63c",
          "type": "function"
        }
      ],
      "version": "capability_graph_v1"
    },
    "id": 2457,
    "updated_at": "2026-04-04T19:57:17.000000Z",
    "version": "capability_graph_v1"
  },
  "detector_findings": [
    {
      "confidence": 55,
      "evidence_json": {
        "eth_value_calls": 1,
        "examples": [
          {
            "opcode": "CALL",
            "pc": 113,
            "returndata_checked": null,
            "target_expression_category": "constant",
            "value_expression_category": "constant"
          }
        ],
        "guards_detected": []
      },
      "normalized_json": {
        "sink": "CALL",
        "value": "nonzero"
      },
      "severity": "high",
      "title": "ETH value transfer possible",
      "validated": true,
      "validation_json": {
        "attempts": 1,
        "call_targets": [
          "0x0000000000000000000000000000000000000004",
          "0x9cfe332aeb796e470141a287ab5c76342a040414"
        ],
        "classification": "target_varies",
        "confirmed": true,
        "errors": 0,
        "matched_probe": null,
        "sink": "CALL",
        "status": "confirmed",
        "target_varies": true,
        "trace_id": "0x8dcad56e84b036e5262403d11b533b6c5d9fbce4ac8404e82149adab52fc54cf",
        "trace_mode": "callTracer"
      }
    },
    {
      "confidence": 40,
      "evidence_json": {
        "call_count": 1
      },
      "normalized_json": {
        "sink": "CALL"
      },
      "severity": "low",
      "title": "External CALL present",
      "validated": true,
      "validation_json": {
        "attempts": 1,
        "call_targets": [
          "0x0000000000000000000000000000000000000004",
          "0x9cfe332aeb796e470141a287ab5c76342a040414"
        ],
        "classification": "target_varies",
        "confirmed": true,
        "errors": 0,
        "matched_probe": null,
        "sink": "CALL",
        "status": "confirmed",
        "target_varies": true,
        "trace_id": "0x8dcad56e84b036e5262403d11b533b6c5d9fbce4ac8404e82149adab52fc54cf",
        "trace_mode": "callTracer"
      }
    }
  ],
  "heuristics_summary": {
    "create2_count": 0,
    "delegatecall_count": 0,
    "flags": [],
    "selfdestruct_count": 0
  }
}
exec
/bin/bash -lc "node -e 'const hex=require(\"fs\").readFileSync(\"BYTECODE_BUNDLE.json\",\"utf8\"); const b=JSON.parse(hex).artifact.runtime_bytecode.full.slice(2); const names={0x00:\"STOP\",0x01:\"ADD\",0x02:\"MUL\",0x03:\"SUB\",0x04:\"DIV\",0x05:\"SDIV\",0x06:\"MOD\",0x07:\"SMOD\",0x08:\"ADDMOD\",0x09:\"MULMOD\",0x0a:\"EXP\",0x0b:\"SIGNEXTEND\",0x10:\"LT\",0x11:\"GT\",0x12:\"SLT\",0x13:\"SGT\",0x14:\"EQ\",0x15:\"ISZERO\",0x16:\"AND\",0x17:\"OR\",0x18:\"XOR\",0x19:\"NOT\",0x1a:\"BYTE\",0x20:\"SHA3\",0x30:\"ADDRESS\",0x31:\"BALANCE\",0x32:\"ORIGIN\",0x33:\"CALLER\",0x34:\"CALLVALUE\",0x35:\"CALLDATALOAD\",0x36:\"CALLDATASIZE\",0x37:\"CALLDATACOPY\",0x38:\"CODESIZE\",0x39:\"CODECOPY\",0x3a:\"GASPRICE\",0x3b:\"EXTCODESIZE\",0x3c:\"EXTCODECOPY\",0x3d:\"RETURNDATASIZE\",0x3e:\"RETURNDATACOPY\",0x40:\"BLOCKHASH\",0x41:\"COINBASE\",0x42:\"TIMESTAMP\",0x43:\"NUMBER\",0x44:\"DIFFICULTY\",0x45:\"GASLIMIT\",0x50:\"POP\",0x51:\"MLOAD\",0x52:\"MSTORE\",0x53:\"MSTORE8\",0x54:\"SLOAD\",0x55:\"SSTORE\",0x56:\"JUMP\",0x57:\"JUMPI\",0x58:\"PC\",0x59:\"MSIZE\",0x5a:\"GAS\",0x5b:\"JUMPDEST\",0xf0:\"CREATE\",0xf1:\"CALL\",0xf2:\"CALLCODE\",0xf3:\"RETURN\",0xf4:\"DELEGATECALL\",0xf5:\"CREATE2\",0xfa:\"STATICCALL\",0xfd:\"REVERT\",0xfe:\"INVALID\",0xff:\"SELFDESTRUCT\"}; for(let i=1;i<=32;i++) names[0x5f+i]="'`PUSH${i}`; for(let i=1;i<=16;i++) names[0x7f+i]=`DUP${i}`; for(let i=1;i<=16;i++) names[0x8f+i]=`SWAP${i}`; for(let i=0;i<=4;i++) names[0xa0+i]=`LOG${i}`; let pc=0; while(pc<b.length/2){ const op=parseInt(b.slice(pc*2,pc*2+2),16); const name=names[op]||`OP_${op.toString(16)}`; if(op>=0x60&&op<=0x7f){ const n=op-0x5f; const data=b.slice(pc*2+2,pc*2+2+n*2); console.log(pc.toString().padStart(3), name, '"'0x'+data); pc+=1+n; } else { console.log(pc.toString().padStart(3), name); pc+=1; } }'" in /tmp/codex-n8szwjrs
 exited 1 in 0ms:
[eval]:1
const hex=require("fs").readFileSync("BYTECODE_BUNDLE.json","utf8"); const b=JSON.parse(hex).artifact.runtime_bytecode.full.slice(2); const names={0x00:"STOP",0x01:"ADD",0x02:"MUL",0x03:"SUB",0x04:"DIV",0x05:"SDIV",0x06:"MOD",0x07:"SMOD",0x08:"ADDMOD",0x09:"MULMOD",0x0a:"EXP",0x0b:"SIGNEXTEND",0x10:"LT",0x11:"GT",0x12:"SLT",0x13:"SGT",0x14:"EQ",0x15:"ISZERO",0x16:"AND",0x17:"OR",0x18:"XOR",0x19:"NOT",0x1a:"BYTE",0x20:"SHA3",0x30:"ADDRESS",0x31:"BALANCE",0x32:"ORIGIN",0x33:"CALLER",0x34:"CALLVALUE",0x35:"CALLDATALOAD",0x36:"CALLDATASIZE",0x37:"CALLDATACOPY",0x38:"CODESIZE",0x39:"CODECOPY",0x3a:"GASPRICE",0x3b:"EXTCODESIZE",0x3c:"EXTCODECOPY",0x3d:"RETURNDATASIZE",0x3e:"RETURNDATACOPY",0x40:"BLOCKHASH",0x41:"COINBASE",0x42:"TIMESTAMP",0x43:"NUMBER",0x44:"DIFFICULTY",0x45:"GASLIMIT",0x50:"POP",0x51:"MLOAD",0x52:"MSTORE",0x53:"MSTORE8",0x54:"SLOAD",0x55:"SSTORE",0x56:"JUMP",0x57:"JUMPI",0x58:"PC",0x59:"MSIZE",0x5a:"GAS",0x5b:"JUMPDEST",0xf0:"CREATE",0xf1:"CALL",0xf2:"CALLCODE",0xf3:"RETURN",0xf4:"DELEGATECALL",0xf5:"CREATE2",0xfa:"STATICCALL",0xfd:"REVERT",0xfe:"INVALID",0xff:"SELFDESTRUCT"}; for(let i=1;i<=32;i++) names[0x5f+i]=`PUSH${i}`; for(let i=1;i<=16;i++) names[0x7f+i]=`DUP${i}`; for(let i=1;i<=16;i++) names[0x8f+i]=`SWAP${i}`; for(let i=0;i<=4;i++) names[0xa0+i]=`LOG${i}`; let pc=0; while(pc<b.length/2){ const op=parseInt(b.slice(pc*2,pc*2+2),16); const name=names[op]||`OP_${op.toString(16)}`; if(op>=0x60&&op<=0x7f){ const n=op-0x5f; const data=b.slice(pc*2+2,pc*2+2+n*2); console.log(pc.toString().padStart(3), name, 0x+data); pc+=1+n; } else { console.log(pc.toString().padStart(3), name); pc+=1; } }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            

SyntaxError: Invalid or unexpected token
    at makeContextifyScript (node:internal/vm:185:14)
    at node:internal/process/execution:107:22
    at [eval]-wrapper:6:24
    at runScript (node:internal/process/execution:101:62)
    at evalScript (node:internal/process/execution:136:3)
    at node:internal/main/eval_string:53:3

Node.js v23.3.0

exec
/bin/bash -lc "node - <<'NODE'
const hex=require('fs').readFileSync('BYTECODE_BUNDLE.json','utf8');
const b=JSON.parse(hex).artifact.runtime_bytecode.full.slice(2);
const names={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'};
for(let i=1;i<=32;i++) names[0x5f+i]="'`PUSH${i}`;
for(let i=1;i<=16;i++) names[0x7f+i]=`DUP${i}`;
for(let i=1;i<=16;i++) names[0x8f+i]=`SWAP${i}`;
for(let i=0;i<=4;i++) names[0xa0+i]=`LOG${i}`;
let pc=0;
while(pc<b.length/2){
  const op=parseInt(b.slice(pc*2,pc*2+2),16);
  const name=names[op]||`OP_${op.toString(16)}`;
  if(op>=0x60&&op<=0x7f){
    const n=op-0x5f;
    const data=b.slice(pc*2+2,pc*2+2+n*2);
    console.log(String(pc).padStart(3), name, '"'0x'+data);
    pc+=1+n;
  } else {
    console.log(String(pc).padStart(3), name);
    pc+=1;
  }
}
NODE" in /tmp/codex-n8szwjrs
 succeeded in 0ms:
  0 PUSH1 0x60
  2 PUSH1 0x40
  4 MSTORE
  5 PUSH1 0xe0
  7 PUSH1 0x02
  9 EXP
 10 PUSH1 0x00
 12 CALLDATALOAD
 13 DIV
 14 PUSH4 0x6d4ce63c
 19 DUP2
 20 EQ
 21 PUSH1 0x1a
 23 JUMPI
 24 JUMPDEST
 25 STOP
 26 JUMPDEST
 27 PUSH1 0x00
 29 PUSH1 0x60
 31 MSTORE
 32 PUSH1 0xc0
 34 PUSH1 0x40
 36 MSTORE
 37 PUSH1 0x0d
 39 PUSH1 0x80
 41 SWAP1
 42 DUP2
 43 MSTORE
 44 PUSH32 0x48656c6c6f20576f726c64212100000000000000000000000000000000000000
 77 PUSH1 0xa0
 79 MSTORE
 80 PUSH1 0x20
 82 PUSH1 0xc0
 84 SWAP1
 85 DUP2
 86 MSTORE
 87 PUSH1 0x0d
 89 PUSH1 0xe0
 91 DUP2
 92 SWAP1
 93 MSTORE
 94 DUP2
 95 SWAP1
 96 PUSH2 0x0100
 99 SWAP1
100 PUSH1 0xa0
102 SWAP1
103 DUP1
104 DUP4
105 DUP2
106 DUP5
107 PUSH1 0x00
109 PUSH1 0x04
111 PUSH1 0x12
113 CALL
114 POP
115 POP
116 DUP2
117 MLOAD
118 PUSH19 0xffffffffffffffffffffffffffffffffffffff
138 NOT
139 AND
140 SWAP1
141 SWAP2
142 MSTORE
143 POP
144 POP
145 PUSH1 0x40
147 MLOAD
148 PUSH2 0x0120
151 DUP2
152 SWAP1
153 SUB
154 SWAP3
155 POP
156 SWAP1
157 POP
158 RETURN

codex
{"no_findings":true,"summary":"Reviewed BYTECODE_BUNDLE.json and the runtime bytecode. The contract is very small, has one inferred selector (0x6d4ce63c), performs no storage reads/writes, no DELEGATECALL/SELFDESTRUCT/upgrade-slot activity, and no proxy indicators. The only external interaction is a single CALL at pc:0x71 to constant address 0x04 (the identity precompile), with constant zero value, used as a memcpy-like operation to return a fixed ABI-encoded string (\"Hello World!!\"). The detector artifact flags an external CALL / possible ETH transfer, but the static bytecode indicates the call target and value are constant and non-user-controlled; the value passed is 0, so this does not support a meaningful reentrancy, access-control, accounting, signature-validation, or upgradeability finding. Selector inference and guard detection remain best-effort, but on this bytecode the observed behavior is consistent with a pure constant-return function plus a STOP fallback.","findings":[]}
tokens used
14,024
Metadata
{
    "codex": {
        "ran_at": "2026-04-05T05:21:42.656042+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "bytecode",
        "bytecode_length": 320,
        "bytecode_truncated": false,
        "capability_graph_present": true,
        "analysis_artifact_present": true
    },
    "summary": "Reviewed BYTECODE_BUNDLE.json and the runtime bytecode. The contract is very small, has one inferred selector (0x6d4ce63c), performs no storage reads/writes, no DELEGATECALL/SELFDESTRUCT/upgrade-slot activity, and no proxy indicators. The only external interaction is a single CALL at pc:0x71 to constant address 0x04 (the identity precompile), with constant zero value, used as a memcpy-like operation to return a fixed ABI-encoded string (\"Hello World!!\"). The detector artifact flags an external CALL / possible ETH transfer, but the static bytecode indicates the call target and value are constant and non-user-controlled; the value passed is 0, so this does not support a meaningful reentrancy, access-control, accounting, signature-validation, or upgradeability finding. Selector inference and guard detection remain best-effort, but on this bytecode the observed behavior is consistent with a pure constant-return function plus a STOP fallback.",
    "raw_final": {
        "summary": "Reviewed BYTECODE_BUNDLE.json and the runtime bytecode. The contract is very small, has one inferred selector (0x6d4ce63c), performs no storage reads/writes, no DELEGATECALL/SELFDESTRUCT/upgrade-slot activity, and no proxy indicators. The only external interaction is a single CALL at pc:0x71 to constant address 0x04 (the identity precompile), with constant zero value, used as a memcpy-like operation to return a fixed ABI-encoded string (\"Hello World!!\"). The detector artifact flags an external CALL / possible ETH transfer, but the static bytecode indicates the call target and value are constant and non-user-controlled; the value passed is 0, so this does not support a meaningful reentrancy, access-control, accounting, signature-validation, or upgradeability finding. Selector inference and guard detection remain best-effort, but on this bytecode the observed behavior is consistent with a pure constant-return function plus a STOP fallback.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
1
EXT*/BALANCE
0
Total opcodes
78
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0xe0
00000007: PUSH1 0x02
00000009: EXP
0000000a: PUSH1 0x00
0000000c: CALLDATALOAD
0000000d: DIV
0000000e: PUSH4 0x6d4ce63c
00000013: DUP2
00000014: EQ
00000015: PUSH1 0x1a
00000017: JUMPI
00000018: JUMPDEST
00000019: STOP
0000001a: JUMPDEST
0000001b: PUSH1 0x00
0000001d: PUSH1 0x60
0000001f: MSTORE
00000020: PUSH1 0xc0
00000022: PUSH1 0x40
00000024: MSTORE
00000025: PUSH1 0x0d
00000027: PUSH1 0x80
00000029: SWAP1
0000002a: DUP2
0000002b: MSTORE
0000002c: PUSH32 0x48656c6c6f20576f726c64212100000000000000000000000000000000000000
0000004d: PUSH1 0xa0
0000004f: MSTORE
00000050: PUSH1 0x20
00000052: PUSH1 0xc0
00000054: SWAP1
00000055: DUP2
00000056: MSTORE
00000057: PUSH1 0x0d
00000059: PUSH1 0xe0
0000005b: DUP2
0000005c: SWAP1
0000005d: MSTORE
0000005e: DUP2
0000005f: SWAP1
00000060: PUSH2 0x0100
00000063: SWAP1
00000064: PUSH1 0xa0
00000066: SWAP1
00000067: DUP1
00000068: DUP4
00000069: DUP2
0000006a: DUP5
0000006b: PUSH1 0x00
0000006d: PUSH1 0x04
0000006f: PUSH1 0x12
00000071: CALL
00000072: POP
00000073: POP
00000074: DUP2
00000075: MLOAD
00000076: PUSH19 0xffffffffffffffffffffffffffffffffffffff
0000008a: NOT
0000008b: AND
0000008c: SWAP1
0000008d: SWAP2
0000008e: MSTORE
0000008f: POP
00000090: POP
00000091: PUSH1 0x40
00000093: MLOAD
00000094: PUSH2 0x0120
00000097: DUP2
00000098: SWAP1
00000099: SUB
0000009a: SWAP3
0000009b: POP
0000009c: SWAP1
0000009d: POP
0000009e: RETURN
View stderr
Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment.

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector ETH value transfer possible 55 yes yes
view
trace_id: 0x8dcad56e84b036e5262403d11b533b6c5d9fbce4ac8404e82149adab52fc54cf
call_targets: 0x0000000000000000000000000000000000000004, 0x9cfe332aeb796e470141a287ab5c76342a040414
target_varies: yes
classification: target_varies
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "confirmed",
    "attempts": 1,
    "trace_id": "0x8dcad56e84b036e5262403d11b533b6c5d9fbce4ac8404e82149adab52fc54cf",
    "confirmed": true,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x0000000000000000000000000000000000000004",
        "0x9cfe332aeb796e470141a287ab5c76342a040414"
    ],
    "matched_probe": null,
    "target_varies": true,
    "classification": "target_varies"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x6d4ce63c",
            "selector": "0x6d4ce63c",
            "calldata_variants": [
                "0x6d4ce63c",
                "0x6d4ce63c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 113,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "constant",
            "target_expression_category": "constant"
        }
    ],
    "eth_value_calls": 1,
    "guards_detected": []
}
low other detector External CALL present 40 yes yes
view
trace_id: 0x8dcad56e84b036e5262403d11b533b6c5d9fbce4ac8404e82149adab52fc54cf
call_targets: 0x0000000000000000000000000000000000000004, 0x9cfe332aeb796e470141a287ab5c76342a040414
target_varies: yes
classification: target_varies
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "confirmed",
    "attempts": 1,
    "trace_id": "0x8dcad56e84b036e5262403d11b533b6c5d9fbce4ac8404e82149adab52fc54cf",
    "confirmed": true,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x0000000000000000000000000000000000000004",
        "0x9cfe332aeb796e470141a287ab5c76342a040414"
    ],
    "matched_probe": null,
    "target_varies": true,
    "classification": "target_varies"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x6d4ce63c",
            "selector": "0x6d4ce63c",
            "calldata_variants": [
                "0x6d4ce63c",
                "0x6d4ce63c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "call_count": 1
}