a707eba1-cb00-477e-932b-94b34a323437
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 30689 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 75130 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 75131 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 75132 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 75133 | capability.graph | complete | 1 / 3 | 1 week ago |
| 75134 | detector.run | complete | 1 / 3 | 1 week ago |
| 75135 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:425109] OpenAI Codex v0.77.0 (research preview)
[codex:425109] --------
[codex:425109] workdir: /tmp/codex-multi-0uwuii5m
[codex:425109] model: gpt-5.2-codex
[codex:425109] provider: openai
[codex:425109] approval: never
[codex:425109] sandbox: read-only
[codex:425109] reasoning effort: xhigh
[codex:425109] reasoning summaries: auto
[codex:425109] session id: 019b6f84-b851-7c22-b035-20cc6f061d89
[codex:425109] --------
[codex:425109] user
[codex:425109] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:425109] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:425109] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:425109]
[codex:425109] Scope rules:
[codex:425109] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:425109] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:425109]
[codex:425109] Output MUST be valid JSON matching the provided schema.
[codex:425109] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:425109] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:425109]
[codex:425109] Output constraints (IMPORTANT):
[codex:425109] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:425109] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:425109] mcp startup: no servers
[codex:425109]
[codex:425109] thinking
[codex:425109] **Preparing to read audit instructions**
[codex:425109] exec
[codex:425109] /bin/bash -lc ls in /tmp/codex-multi-0uwuii5m succeeded in 7ms:
[codex:425109] AUDIT_BUNDLE.txt
[codex:425109] codex-output-schema.json
[codex:425109] contracts
[codex:425109] exec
[codex:425109] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-0uwuii5m succeeded in 5ms:
[codex:425109] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:425109]
[codex:425109] ================================================================================
[codex:425109] FILE: contracts/Contract.sol
[codex:425109] ================================================================================
[codex:425109] pragma solidity 0.5.7;
[codex:425109] // produced by the Solididy File Flattener (c) David Appleton 2018
[codex:425109] // contact : dave@akomba.com
[codex:425109] // released under Apache 2.0 licence
[codex:425109] interface IERC20 {
[codex:425109] /**
[codex:425109] * @dev Returns the amount of tokens in existence.
[codex:425109] */
[codex:425109] function totalSupply() external view returns (uint256);
[codex:425109]
[codex:425109] /**
[codex:425109] * @dev Returns the amount of tokens owned by `account`.
[codex:425109] */
[codex:425109] function balanceOf(address account) external view returns (uint256);
[codex:425109]
[codex:425109]
[codex:425109] thinking
[codex:425109] **Analyzing contract for vulnerabilities**
[codex:425109] exec
[codex:425109] /bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '140,240p'" in /tmp/codex-multi-0uwuii5m succeeded in 7ms:
[codex:425109] 140 }
[codex:425109] 141
[codex:425109] 142 uint256 c = a * b;
[codex:425109] 143 require(c / a == b, "SafeMath: multiplication overflow");
[codex:425109] 144
[codex:425109] 145 return c;
[codex:425109] 146 }
[codex:425109] 147
[codex:425109] 148 /**
[codex:425109] 149 * @dev Returns the integer division of two unsigned integers. Reverts on
[codex:425109] 150 * division by zero. The result is rounded towards zero.
[codex:425109] 151 *
[codex:425109] 152 * Counterpart to Solidity's `/` operator. Note: this function uses a
[codex:425109] 153 * `revert` opcode (which leaves remaining gas untouched) while Solidity
[codex:425109] 154 * uses an invalid opcode to revert (consuming all remaining gas).
[codex:425109] 155 *
[codex:425109] 156 * Requirements:
[codex:425109] 157 * - The divisor cannot be zero.
[codex:425109] 158 */
[codex:425109] 159 function div(uint256 a, uint256 b) internal pure returns (uint256) {
[codex:425109]
[codex:425109] thinking
[codex:425109] **Preparing to add line numbers for renounce usage**
[codex:425109] exec
[codex:425109] /bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '360,520p'" in /tmp/codex-multi-0uwuii5m succeeded in 6ms:
[codex:425109] 360 * @dev Returns the address of the current nominated owner.
[codex:425109] 361 */
[codex:425109] 362 function nominatedOwner() external view returns (address) {
[codex:425109] 363 return _nominatedOwner;
[codex:425109] 364 }
[codex:425109] 365
[codex:425109] 366 /**
[codex:425109] 367 * @dev Throws if called by any account other than the owner.
[codex:425109] 368 */
[codex:425109] 369 modifier onlyOwner() {
[codex:425109] 370 _onlyOwner();
[codex:425109] 371 _;
[codex:425109] 372 }
[codex:425109] 373
[codex:425109] 374 function _onlyOwner() internal view {
[codex:425109] 375 require(_msgSender() == _owner, "caller is not owner");
[codex:425109] 376 }
[codex:425109] 377
[codex:425109] 378 /**
[codex:425109] 379 * @dev Nominates a new owner `newOwner`.
[codex:425109]
[codex:425109] thinking
[codex:425109] **Preparing to create JSON output**
[codex:425109] exec
[codex:425109] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-0uwuii5m succeeded in 6ms:
[codex:425109] {"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
[codex:425109]
[codex:425109] thinking
[codex:425109] **Summarizing access control vulnerability**
[codex:425109]
[codex:425109] I’m putting together a concise JSON report about a low-severity issue where renouncing ownership can be undone if a nominee is set. The key finding is that renounceOwnership clears the owner but leaves _nominatedOwner intact, allowing the nominee to reclaim ownership by calling acceptOwnership later. I’m including file paths with relevant line numbers for evidence and detailing the exploit scenario and recommended fix to clear _nominatedOwner in renounceOwnership and acceptOwnership. This should clearly outline the risk and help guide a secure update.
[codex:425109] codex
[codex:425109] {"no_findings":false,"summary":"Found 1 low-severity access control issue where renouncing ownership is reversible if a nominee is set.","findings":[{"severity":"low","category":"access_control","title":"renounceOwnership can be reversed by a previously nominated owner","exploit_scenario":"The owner nominates a new owner (e.g., Alice) but later calls renounceOwnership expecting a permanent lock. Because _nominatedOwner is not cleared, Alice can still call acceptOwnership and regain control, contradicting the “cannot be undone” expectation.","recommendation":"Clear _nominatedOwner in renounceOwnership and/or acceptOwnership, or require _nominatedOwner == address(0) before allowing renounceOwnership.","evidence":"renounceOwnership only sets _owner = address(0) without clearing _nominatedOwner, while acceptOwnership checks only _nominatedOwner == msg.sender.","locations":["contracts/Contract.sol:383","contracts/Contract.sol:392","contracts/Contract.sol:403"]}]}
[codex:425109] tokens used
[codex:425109] 18,529
[codex:425109] {"no_findings":false,"summary":"Found 1 low-severity access control issue where renouncing ownership is reversible if a nominee is set.","findings":[{"severity":"low","category":"access_control","title":"renounceOwnership can be reversed by a previously nominated owner","exploit_scenario":"The owner nominates a new owner (e.g., Alice) but later calls renounceOwnership expecting a permanent lock. Because _nominatedOwner is not cleared, Alice can still call acceptOwnership and regain control, contradicting the “cannot be undone” expectation.","recommendation":"Clear _nominatedOwner in renounceOwnership and/or acceptOwnership, or require _nominatedOwner == address(0) before allowing renounceOwnership.","evidence":"renounceOwnership only sets _owner = address(0) without clearing _nominatedOwner, while acceptOwnership checks only _nominatedOwner == msg.sender.","locations":["contracts/Contract.sol:383","contracts/Contract.sol:392","contracts/Contract.sol:403"]}]}
{
"codex": {
"ran_at": "2025-12-30T13:49:39.799012+00:00",
"returncode": 0
},
"summary": "Found 1 low-severity access control issue where renouncing ownership is reversible if a nominee is set.",
"raw_final": {
"summary": "Found 1 low-severity access control issue where renouncing ownership is reversible if a nominee is set.",
"findings": [
{
"title": "renounceOwnership can be reversed by a previously nominated owner",
"category": "access_control",
"evidence": "renounceOwnership only sets _owner = address(0) without clearing _nominatedOwner, while acceptOwnership checks only _nominatedOwner == msg.sender.",
"severity": "low",
"locations": [
"contracts/Contract.sol:383",
"contracts/Contract.sol:392",
"contracts/Contract.sol:403"
],
"recommendation": "Clear _nominatedOwner in renounceOwnership and/or acceptOwnership, or require _nominatedOwner == address(0) before allowing renounceOwnership.",
"exploit_scenario": "The owner nominates a new owner (e.g., Alice) but later calls renounceOwnership expecting a permanent lock. Because _nominatedOwner is not cleared, Alice can still call acceptOwnership and regain control, contradicting the \u201ccannot be undone\u201d expectation."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLVALUE 00000006: DUP1 00000007: ISZERO 00000008: PUSH2 0x0010 0000000b: JUMPI 0000000c: PUSH1 0x00 0000000e: DUP1 0000000f: REVERT 00000010: JUMPDEST 00000011: POP 00000012: PUSH1 0x04 00000014: CALLDATASIZE 00000015: LT 00000016: PUSH2 0x0088 00000019: JUMPI 0000001a: PUSH1 0x00 0000001c: CALLDATALOAD 0000001d: PUSH1 0xe0 0000001f: SHR 00000020: DUP1 00000021: PUSH4 0x79ba5097 00000026: GT 00000027: PUSH2 0x005b 0000002a: JUMPI 0000002b: DUP1 0000002c: PUSH4 0x79ba5097 00000031: EQ 00000032: PUSH2 0x016b 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0x8da5cb5b 0000003c: EQ 0000003d: PUSH2 0x0173 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0xa3fbbaae 00000047: EQ 00000048: PUSH2 0x017b 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0xc4e2c1e6 00000052: EQ 00000053: PUSH2 0x01ae 00000056: JUMPI 00000057: PUSH2 0x0088 0000005a: JUMP 0000005b: JUMPDEST 0000005c: DUP1 0000005d: PUSH4 0x1627540c 00000062: EQ 00000063: PUSH2 0x008d 00000066: JUMPI 00000067: DUP1 00000068: PUSH4 0x481c6a75 0000006d: EQ 0000006e: PUSH2 0x00c2 00000071: JUMPI 00000072: DUP1 00000073: PUSH4 0x4fdb7f44 00000078: EQ 00000079: PUSH2 0x00f3 0000007c: JUMPI 0000007d: DUP1 0000007e: PUSH4 0x53a47bb7 00000083: EQ 00000084: PUSH2 0x0163 00000087: JUMPI 00000088: JUMPDEST 00000089: PUSH1 0x00 0000008b: DUP1 0000008c: REVERT 0000008d: JUMPDEST 0000008e: PUSH2 0x00c0 00000091: PUSH1 0x04 00000093: DUP1 00000094: CALLDATASIZE 00000095: SUB 00000096: PUSH1 0x20 00000098: DUP2 00000099: LT 0000009a: ISZERO 0000009b: PUSH2 0x00a3 0000009e: JUMPI 0000009f: PUSH1 0x00 000000a1: DUP1 000000a2: REVERT 000000a3: JUMPDEST 000000a4: POP 000000a5: CALLDATALOAD 000000a6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000000bb: AND 000000bc: PUSH2 0x01f1 000000bf: JUMP 000000c0: JUMPDEST 000000c1: STOP 000000c2: JUMPDEST 000000c3: PUSH2 0x00ca 000000c6: PUSH2 0x0308 000000c9: JUMP 000000ca: JUMPDEST 000000cb: PUSH1 0x40 000000cd: DUP1 000000ce: MLOAD 000000cf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000000e4: SWAP1 000000e5: SWAP3 000000e6: AND 000000e7: DUP3 000000e8: MSTORE 000000e9: MLOAD 000000ea: SWAP1 000000eb: DUP2 000000ec: SWAP1 000000ed: SUB 000000ee: PUSH1 0x20 000000f0: ADD 000000f1: SWAP1 000000f2: RETURN 000000f3: JUMPDEST 000000f4: PUSH2 0x00c0 000000f7: PUSH1 0x04 000000f9: DUP1 000000fa: CALLDATASIZE 000000fb: SUB 000000fc: PUSH1 0x20 000000fe: DUP2 000000ff: LT 00000100: ISZERO 00000101: PUSH2 0x0109 00000104: JUMPI 00000105: PUSH1 0x00 00000107: DUP1 00000108: REVERT 00000109: JUMPDEST 0000010a: DUP2 0000010b: ADD 0000010c: SWAP1 0000010d: PUSH1 0x20 0000010f: DUP2 00000110: ADD 00000111: DUP2 00000112: CALLDATALOAD 00000113: PUSH5 0x0100000000 00000119: DUP2 0000011a: GT 0000011b: ISZERO 0000011c: PUSH2 0x0124 0000011f: JUMPI 00000120: PUSH1 0x00 00000122: DUP1 00000123: REVERT 00000124: JUMPDEST 00000125: DUP3 00000126: ADD 00000127: DUP4 00000128: PUSH1 0x20 0000012a: DUP3 0000012b: ADD 0000012c: GT 0000012d: ISZERO 0000012e: PUSH2 0x0136 00000131: JUMPI 00000132: PUSH1 0x00 00000134: DUP1 00000135: REVERT 00000136: JUMPDEST 00000137: DUP1 00000138: CALLDATALOAD 00000139: SWAP1 0000013a: PUSH1 0x20 0000013c: ADD 0000013d: SWAP2 0000013e: DUP5 0000013f: PUSH1 0x01 00000141: DUP4 00000142: MUL 00000143: DUP5 00000144: ADD 00000145: GT 00000146: PUSH5 0x0100000000 0000014c: DUP4 0000014d: GT 0000014e: OR 0000014f: ISZERO 00000150: PUSH2 0x0158 00000153: JUMPI 00000154: PUSH1 0x00 00000156: DUP1 00000157: REVERT 00000158: JUMPDEST 00000159: POP 0000015a: SWAP1 0000015b: SWAP3 0000015c: POP 0000015d: SWAP1 0000015e: POP 0000015f: PUSH2 0x0324 00000162: JUMP 00000163: JUMPDEST 00000164: PUSH2 0x00ca 00000167: PUSH2 0x04e3 0000016a: JUMP 0000016b: JUMPDEST 0000016c: PUSH2 0x00c0 0000016f: PUSH2 0x04ff 00000172: JUMP 00000173: JUMPDEST 00000174: PUSH2 0x00ca 00000177: PUSH2 0x0623 0000017a: JUMP 0000017b: JUMPDEST 0000017c: PUSH2 0x00c0 0000017f: PUSH1 0x04 00000181: DUP1 00000182: CALLDATASIZE 00000183: SUB 00000184: PUSH1 0x20 00000186: DUP2 00000187: LT 00000188: ISZERO 00000189: PUSH2 0x0191 0000018c: JUMPI 0000018d: PUSH1 0x00 0000018f: DUP1 00000190: REVERT 00000191: JUMPDEST 00000192: POP 00000193: CALLDATALOAD 00000194: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000001a9: AND 000001aa: PUSH2 0x063f 000001ad: JUMP 000001ae: JUMPDEST 000001af: PUSH2 0x00c0 000001b2: PUSH1 0x04 000001b4: DUP1 000001b5: CALLDATASIZE 000001b6: SUB 000001b7: PUSH1 0x60 000001b9: DUP2 000001ba: LT 000001bb: ISZERO 000001bc: PUSH2 0x01c4 000001bf: JUMPI 000001c0: PUSH1 0x00 000001c2: DUP1 000001c3: REVERT 000001c4: JUMPDEST 000001c5: POP 000001c6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000001db: DUP2 000001dc: CALLDATALOAD 000001dd: DUP2 000001de: AND 000001df: SWAP2 000001e0: PUSH1 0x20 000001e2: DUP2 000001e3: ADD 000001e4: CALLDATALOAD 000001e5: SWAP2 000001e6: PUSH1 0x40 000001e8: SWAP1 000001e9: SWAP2 000001ea: ADD 000001eb: CALLDATALOAD 000001ec: AND 000001ed: PUSH2 0x0757 000001f0: JUMP 000001f1: JUMPDEST 000001f2: PUSH2 0x01f9 000001f5: PUSH2 0x0880 000001f8: JUMP 000001f9: JUMPDEST 000001fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000020f: DUP2 00000210: AND 00000211: PUSH2 0x027b 00000214: JUMPI 00000215: PUSH1 0x40 00000217: DUP1 00000218: MLOAD 00000219: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000023a: DUP2 0000023b: MSTORE 0000023c: PUSH1 0x20 0000023e: PUSH1 0x04 00000240: DUP3 00000241: ADD 00000242: MSTORE 00000243: PUSH1 0x16 00000245: PUSH1 0x24 00000247: DUP3 00000248: ADD 00000249: MSTORE 0000024a: PUSH32 0x6e6577206f776e65722069732030206164647265737300000000000000000000 0000026b: PUSH1 0x44 0000026d: DUP3 0000026e: ADD 0000026f: MSTORE 00000270: SWAP1 00000271: MLOAD 00000272: SWAP1 00000273: DUP2 00000274: SWAP1 00000275: SUB 00000276: PUSH1 0x64 00000278: ADD 00000279: SWAP1 0000027a: REVERT 0000027b: JUMPDEST 0000027c: PUSH1 0x00 0000027e: DUP1 0000027f: SLOAD 00000280: PUSH1 0x40 00000282: MLOAD 00000283: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000298: DUP1 00000299: DUP6 0000029a: AND 0000029b: SWAP4 0000029c: SWAP3 0000029d: AND 0000029e: SWAP2 0000029f: PUSH32 0xb59bab42c554cfd49f4f001c983b6ed93ede25748b10114b7d1cb1b3c97df7af 000002c0: SWAP2 000002c1: LOG3 000002c2: PUSH1 0x01 000002c4: DUP1 000002c5: SLOAD 000002c6: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 000002e7: AND 000002e8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002fd: SWAP3 000002fe: SWAP1 000002ff: SWAP3 00000300: AND 00000301: SWAP2 00000302: SWAP1 00000303: SWAP2 00000304: OR 00000305: SWAP1 00000306: SSTORE 00000307: JUMP 00000308: JUMPDEST 00000309: PUSH1 0x02 0000030b: SLOAD 0000030c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000321: AND 00000322: DUP2 00000323: JUMP 00000324: JUMPDEST 00000325: PUSH2 0x032c 00000328: PUSH2 0x0880 0000032b: JUMP 0000032c: JUMPDEST 0000032d: PUSH1 0x60 0000032f: PUSH1 0x40 00000331: MLOAD 00000332: DUP1 00000333: PUSH1 0x60 00000335: ADD 00000336: PUSH1 0x40 00000338: MSTORE 00000339: DUP1 0000033a: PUSH1 0x35 0000033c: DUP2 0000033d: MSTORE 0000033e: PUSH1 0x20 00000340: ADD 00000341: PUSH2 0x0c3c 00000344: PUSH1 0x35 00000346: SWAP2 00000347: CODECOPY 00000348: SWAP1 00000349: POP 0000034a: DUP1 0000034b: PUSH1 0x40 0000034d: MLOAD 0000034e: PUSH1 0x20 00000350: ADD 00000351: DUP1 00000352: DUP3 00000353: DUP1 00000354: MLOAD 00000355: SWAP1 00000356: PUSH1 0x20 00000358: ADD 00000359: SWAP1 0000035a: DUP1 0000035b: DUP4 0000035c: DUP4 0000035d: JUMPDEST 0000035e: PUSH1 0x20 00000360: DUP4 00000361: LT 00000362: PUSH2 0x039a 00000365: JUMPI 00000366: DUP1 00000367: MLOAD 00000368: DUP3 00000369: MSTORE 0000036a: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 0000038b: SWAP1 0000038c: SWAP3 0000038d: ADD 0000038e: SWAP2 0000038f: PUSH1 0x20 00000391: SWAP2 00000392: DUP3 00000393: ADD 00000394: SWAP2 00000395: ADD 00000396: PUSH2 0x035d 00000399: JUMP 0000039a: JUMPDEST 0000039b: PUSH1 0x01 0000039d: DUP4 0000039e: PUSH1 0x20 000003a0: SUB 000003a1: PUSH2 0x0100 000003a4: EXP 000003a5: SUB 000003a6: DUP1 000003a7: NOT 000003a8: DUP3 000003a9: MLOAD 000003aa: AND 000003ab: DUP2 000003ac: DUP5 000003ad: MLOAD 000003ae: AND 000003af: DUP1 000003b0: DUP3 000003b1: OR 000003b2: DUP6 000003b3: MSTORE 000003b4: POP 000003b5: POP 000003b6: POP 000003b7: POP 000003b8: POP 000003b9: POP 000003ba: SWAP1 000003bb: POP 000003bc: ADD 000003bd: SWAP2 000003be: POP 000003bf: POP 000003c0: PUSH1 0x40 000003c2: MLOAD 000003c3: PUSH1 0x20 000003c5: DUP2 000003c6: DUP4 000003c7: SUB 000003c8: SUB 000003c9: DUP2 000003ca: MSTORE 000003cb: SWAP1 000003cc: PUSH1 0x40 000003ce: MSTORE 000003cf: DUP1 000003d0: MLOAD 000003d1: SWAP1 000003d2: PUSH1 0x20 000003d4: ADD 000003d5: KECCAK256 000003d6: DUP4 000003d7: DUP4 000003d8: PUSH1 0x40 000003da: MLOAD 000003db: PUSH1 0x20 000003dd: ADD 000003de: DUP1 000003df: DUP4 000003e0: DUP4 000003e1: DUP1 000003e2: DUP3 000003e3: DUP5 000003e4: CALLDATACOPY 000003e5: DUP1 000003e6: DUP4 000003e7: ADD 000003e8: SWAP3 000003e9: POP 000003ea: POP 000003eb: POP 000003ec: SWAP3 000003ed: POP 000003ee: POP 000003ef: POP 000003f0: PUSH1 0x40 000003f2: MLOAD 000003f3: PUSH1 0x20 000003f5: DUP2 000003f6: DUP4 000003f7: SUB 000003f8: SUB 000003f9: DUP2 000003fa: MSTORE 000003fb: SWAP1 000003fc: PUSH1 0x40 000003fe: MSTORE 000003ff: DUP1 00000400: MLOAD 00000401: SWAP1 00000402: PUSH1 0x20 00000404: ADD 00000405: KECCAK256 00000406: EQ 00000407: PUSH2 0x0471 0000040a: JUMPI 0000040b: PUSH1 0x40 0000040d: DUP1 0000040e: MLOAD 0000040f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000430: DUP2 00000431: MSTORE 00000432: PUSH1 0x20 00000434: PUSH1 0x04 00000436: DUP3 00000437: ADD 00000438: MSTORE 00000439: PUSH1 0x15 0000043b: PUSH1 0x24 0000043d: DUP3 0000043e: ADD 0000043f: MSTORE 00000440: PUSH32 0x6465636c61726174696f6e20696e636f72726563740000000000000000000000 00000461: PUSH1 0x44 00000463: DUP3 00000464: ADD 00000465: MSTORE 00000466: SWAP1 00000467: MLOAD 00000468: SWAP1 00000469: DUP2 0000046a: SWAP1 0000046b: SUB 0000046c: PUSH1 0x64 0000046e: ADD 0000046f: SWAP1 00000470: REVERT 00000471: JUMPDEST 00000472: PUSH1 0x00 00000474: DUP1 00000475: SLOAD 00000476: PUSH1 0x40 00000478: MLOAD 00000479: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000048e: SWAP1 0000048f: SWAP2 00000490: AND 00000491: SWAP1 00000492: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 000004b3: SWAP1 000004b4: DUP4 000004b5: SWAP1 000004b6: LOG3 000004b7: POP 000004b8: POP 000004b9: PUSH1 0x00 000004bb: DUP1 000004bc: SLOAD 000004bd: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 000004de: AND 000004df: SWAP1 000004e0: SSTORE 000004e1: POP 000004e2: JUMP 000004e3: JUMPDEST 000004e4: PUSH1 0x01 000004e6: SLOAD 000004e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004fc: AND 000004fd: SWAP1 000004fe: JUMP 000004ff: JUMPDEST 00000500: PUSH2 0x0507 00000503: PUSH2 0x0925 00000506: JUMP 00000507: JUMPDEST 00000508: PUSH1 0x01 0000050a: SLOAD 0000050b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000520: SWAP1 00000521: DUP2 00000522: AND 00000523: SWAP2 00000524: AND 00000525: EQ 00000526: PUSH2 0x0590 00000529: JUMPI 0000052a: PUSH1 0x40 0000052c: DUP1 0000052d: MLOAD 0000052e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000054f: DUP2 00000550: MSTORE 00000551: PUSH1 0x20 00000553: PUSH1 0x04 00000555: DUP3 00000556: ADD 00000557: MSTORE 00000558: PUSH1 0x0c 0000055a: PUSH1 0x24 0000055c: DUP3 0000055d: ADD 0000055e: MSTORE 0000055f: PUSH32 0x756e617574686f72697a65640000000000000000000000000000000000000000 00000580: PUSH1 0x44 00000582: DUP3 00000583: ADD 00000584: MSTORE 00000585: SWAP1 00000586: MLOAD 00000587: SWAP1 00000588: DUP2 00000589: SWAP1 0000058a: SUB 0000058b: PUSH1 0x64 0000058d: ADD 0000058e: SWAP1 0000058f: REVERT 00000590: JUMPDEST 00000591: PUSH1 0x01 00000593: SLOAD 00000594: PUSH1 0x00 00000596: DUP1 00000597: SLOAD 00000598: PUSH1 0x40 0000059a: MLOAD 0000059b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005b0: SWAP4 000005b1: DUP5 000005b2: AND 000005b3: SWAP4 000005b4: SWAP1 000005b5: SWAP2 000005b6: AND 000005b7: SWAP2 000005b8: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 000005d9: SWAP2 000005da: LOG3 000005db: PUSH1 0x01 000005dd: SLOAD 000005de: PUSH1 0x00 000005e0: DUP1 000005e1: SLOAD 000005e2: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00000603: AND 00000604: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000619: SWAP1 0000061a: SWAP3 0000061b: AND 0000061c: SWAP2 0000061d: SWAP1 0000061e: SWAP2 0000061f: OR 00000620: SWAP1 00000621: SSTORE 00000622: JUMP 00000623: JUMPDEST 00000624: PUSH1 0x00 00000626: SLOAD 00000627: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000063c: AND 0000063d: SWAP1 0000063e: JUMP 0000063f: JUMPDEST 00000640: PUSH2 0x0647 00000643: PUSH2 0x0880 00000646: JUMP 00000647: JUMPDEST 00000648: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000065d: DUP2 0000065e: AND 0000065f: PUSH2 0x06c9 00000662: JUMPI 00000663: PUSH1 0x40 00000665: DUP1 00000666: MLOAD 00000667: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000688: DUP2 00000689: MSTORE 0000068a: PUSH1 0x20 0000068c: PUSH1 0x04 0000068e: DUP3 0000068f: ADD 00000690: MSTORE 00000691: PUSH1 0x13 00000693: PUSH1 0x24 00000695: DUP3 00000696: ADD 00000697: MSTORE 00000698: PUSH32 0x63616e6e6f742062652030206164647265737300000000000000000000000000 000006b9: PUSH1 0x44 000006bb: DUP3 000006bc: ADD 000006bd: MSTORE 000006be: SWAP1 000006bf: MLOAD 000006c0: SWAP1 000006c1: DUP2 000006c2: SWAP1 000006c3: SUB 000006c4: PUSH1 0x64 000006c6: ADD 000006c7: SWAP1 000006c8: REVERT 000006c9: JUMPDEST 000006ca: PUSH1 0x02 000006cc: SLOAD 000006cd: PUSH1 0x40 000006cf: MLOAD 000006d0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006e5: DUP1 000006e6: DUP5 000006e7: AND 000006e8: SWAP3 000006e9: AND 000006ea: SWAP1 000006eb: PUSH32 0x9cb45c728de594dab506a1f1a8554e24c8eeaf983618d5ec5dd7bc6f3c49feee 0000070c: SWAP1 0000070d: PUSH1 0x00 0000070f: SWAP1 00000710: LOG3 00000711: PUSH1 0x02 00000713: DUP1 00000714: SLOAD 00000715: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00000736: AND 00000737: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000074c: SWAP3 0000074d: SWAP1 0000074e: SWAP3 0000074f: AND 00000750: SWAP2 00000751: SWAP1 00000752: SWAP2 00000753: OR 00000754: SWAP1 00000755: SSTORE 00000756: JUMP 00000757: JUMPDEST 00000758: PUSH1 0x02 0000075a: SLOAD 0000075b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000770: AND 00000771: PUSH2 0x0778 00000774: PUSH2 0x0925 00000777: JUMP 00000778: JUMPDEST 00000779: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000078e: AND 0000078f: EQ 00000790: PUSH2 0x07fa 00000793: JUMPI 00000794: PUSH1 0x40 00000796: DUP1 00000797: MLOAD 00000798: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000007b9: DUP2 000007ba: MSTORE 000007bb: PUSH1 0x20 000007bd: PUSH1 0x04 000007bf: DUP3 000007c0: ADD 000007c1: MSTORE 000007c2: PUSH1 0x0f 000007c4: PUSH1 0x24 000007c6: DUP3 000007c7: ADD 000007c8: MSTORE 000007c9: PUSH32 0x6d757374206265206d616e616765720000000000000000000000000000000000 000007ea: PUSH1 0x44 000007ec: DUP3 000007ed: ADD 000007ee: MSTORE 000007ef: SWAP1 000007f0: MLOAD 000007f1: SWAP1 000007f2: DUP2 000007f3: SWAP1 000007f4: SUB 000007f5: PUSH1 0x64 000007f7: ADD 000007f8: SWAP1 000007f9: REVERT 000007fa: JUMPDEST 000007fb: PUSH2 0x0821 000007fe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000813: DUP5 00000814: AND 00000815: DUP3 00000816: DUP5 00000817: PUSH4 0xffffffff 0000081c: PUSH2 0x0929 0000081f: AND 00000820: JUMP 00000821: JUMPDEST 00000822: DUP1 00000823: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000838: AND 00000839: DUP3 0000083a: DUP5 0000083b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000850: AND 00000851: PUSH31 0x1a143d5b175701cb3246058ffac3d63945192075a926ff73a19930f09d587a 00000871: PUSH1 0x40 00000873: MLOAD 00000874: PUSH1 0x40 00000876: MLOAD 00000877: DUP1 00000878: SWAP2 00000879: SUB 0000087a: SWAP1 0000087b: LOG4 0000087c: POP 0000087d: POP 0000087e: POP 0000087f: JUMP 00000880: JUMPDEST 00000881: PUSH1 0x00 00000883: SLOAD 00000884: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000899: AND 0000089a: PUSH2 0x08a1 0000089d: PUSH2 0x0925 000008a0: JUMP 000008a1: JUMPDEST 000008a2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008b7: AND 000008b8: EQ 000008b9: PUSH2 0x0923 000008bc: JUMPI 000008bd: PUSH1 0x40 000008bf: DUP1 000008c0: MLOAD 000008c1: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000008e2: DUP2 000008e3: MSTORE 000008e4: PUSH1 0x20 000008e6: PUSH1 0x04 000008e8: DUP3 000008e9: ADD 000008ea: MSTORE 000008eb: PUSH1 0x13 000008ed: PUSH1 0x24 000008ef: DUP3 000008f0: ADD 000008f1: MSTORE 000008f2: PUSH32 0x63616c6c6572206973206e6f74206f776e657200000000000000000000000000 00000913: PUSH1 0x44 00000915: DUP3 00000916: ADD 00000917: MSTORE 00000918: SWAP1 00000919: MLOAD 0000091a: SWAP1 0000091b: DUP2 0000091c: SWAP1 0000091d: SUB 0000091e: PUSH1 0x64 00000920: ADD 00000921: SWAP1 00000922: REVERT 00000923: JUMPDEST 00000924: JUMP 00000925: JUMPDEST 00000926: CALLER 00000927: SWAP1 00000928: JUMP 00000929: JUMPDEST 0000092a: PUSH1 0x40 0000092c: DUP1 0000092d: MLOAD 0000092e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000943: DUP5 00000944: AND 00000945: PUSH1 0x24 00000947: DUP3 00000948: ADD 00000949: MSTORE 0000094a: PUSH1 0x44 0000094c: DUP1 0000094d: DUP3 0000094e: ADD 0000094f: DUP5 00000950: SWAP1 00000951: MSTORE 00000952: DUP3 00000953: MLOAD 00000954: DUP1 00000955: DUP4 00000956: SUB 00000957: SWAP1 00000958: SWAP2 00000959: ADD 0000095a: DUP2 0000095b: MSTORE 0000095c: PUSH1 0x64 0000095e: SWAP1 0000095f: SWAP2 00000960: ADD 00000961: SWAP1 00000962: SWAP2 00000963: MSTORE 00000964: PUSH1 0x20 00000966: DUP2 00000967: ADD 00000968: DUP1 00000969: MLOAD 0000096a: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000987: AND 00000988: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000 000009a9: OR 000009aa: SWAP1 000009ab: MSTORE 000009ac: PUSH2 0x09b6 000009af: SWAP1 000009b0: DUP5 000009b1: SWAP1 000009b2: PUSH2 0x09bb 000009b5: JUMP 000009b6: JUMPDEST 000009b7: POP 000009b8: POP 000009b9: POP 000009ba: JUMP 000009bb: JUMPDEST 000009bc: PUSH2 0x09da 000009bf: DUP3 000009c0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009d5: AND 000009d6: PUSH2 0x0bff 000009d9: JUMP 000009da: JUMPDEST 000009db: PUSH2 0x0a45 000009de: JUMPI 000009df: PUSH1 0x40 000009e1: DUP1 000009e2: MLOAD 000009e3: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000a04: DUP2 00000a05: MSTORE 00000a06: PUSH1 0x20 00000a08: PUSH1 0x04 00000a0a: DUP3 00000a0b: ADD 00000a0c: MSTORE 00000a0d: PUSH1 0x1f 00000a0f: PUSH1 0x24 00000a11: DUP3 00000a12: ADD 00000a13: MSTORE 00000a14: PUSH32 0x5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400 00000a35: PUSH1 0x44 00000a37: DUP3 00000a38: ADD 00000a39: MSTORE 00000a3a: SWAP1 00000a3b: MLOAD 00000a3c: SWAP1 00000a3d: DUP2 00000a3e: SWAP1 00000a3f: SUB 00000a40: PUSH1 0x64 00000a42: ADD 00000a43: SWAP1 00000a44: REVERT 00000a45: JUMPDEST 00000a46: PUSH1 0x00 00000a48: PUSH1 0x60 00000a4a: DUP4 00000a4b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a60: AND 00000a61: DUP4 00000a62: PUSH1 0x40 00000a64: MLOAD 00000a65: DUP1 00000a66: DUP3 00000a67: DUP1 00000a68: MLOAD 00000a69: SWAP1 00000a6a: PUSH1 0x20 00000a6c: ADD 00000a6d: SWAP1 00000a6e: DUP1 00000a6f: DUP4 00000a70: DUP4 00000a71: JUMPDEST 00000a72: PUSH1 0x20 00000a74: DUP4 00000a75: LT 00000a76: PUSH2 0x0aae 00000a79: JUMPI 00000a7a: DUP1 00000a7b: MLOAD 00000a7c: DUP3 00000a7d: MSTORE 00000a7e: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00000a9f: SWAP1 00000aa0: SWAP3 00000aa1: ADD 00000aa2: SWAP2 00000aa3: PUSH1 0x20 00000aa5: SWAP2 00000aa6: DUP3 00000aa7: ADD 00000aa8: SWAP2 00000aa9: ADD 00000aaa: PUSH2 0x0a71 00000aad: JUMP 00000aae: JUMPDEST 00000aaf: PUSH1 0x01 00000ab1: DUP4 00000ab2: PUSH1 0x20 00000ab4: SUB 00000ab5: PUSH2 0x0100 00000ab8: EXP 00000ab9: SUB 00000aba: DUP1 00000abb: NOT 00000abc: DUP3 00000abd: MLOAD 00000abe: AND 00000abf: DUP2 00000ac0: DUP5 00000ac1: MLOAD 00000ac2: AND 00000ac3: DUP1 00000ac4: DUP3 00000ac5: OR 00000ac6: DUP6 00000ac7: MSTORE 00000ac8: POP 00000ac9: POP 00000aca: POP 00000acb: POP 00000acc: POP 00000acd: POP 00000ace: SWAP1 00000acf: POP 00000ad0: ADD 00000ad1: SWAP2 00000ad2: POP 00000ad3: POP 00000ad4: PUSH1 0x00 00000ad6: PUSH1 0x40 00000ad8: MLOAD 00000ad9: DUP1 00000ada: DUP4 00000adb: SUB 00000adc: DUP2 00000add: PUSH1 0x00 00000adf: DUP7 00000ae0: GAS 00000ae1: CALL 00000ae2: SWAP2 00000ae3: POP 00000ae4: POP 00000ae5: RETURNDATASIZE 00000ae6: DUP1 00000ae7: PUSH1 0x00 00000ae9: DUP2 00000aea: EQ 00000aeb: PUSH2 0x0b10 00000aee: JUMPI 00000aef: PUSH1 0x40 00000af1: MLOAD 00000af2: SWAP2 00000af3: POP 00000af4: PUSH1 0x1f 00000af6: NOT 00000af7: PUSH1 0x3f 00000af9: RETURNDATASIZE 00000afa: ADD 00000afb: AND 00000afc: DUP3 00000afd: ADD 00000afe: PUSH1 0x40 00000b00: MSTORE 00000b01: RETURNDATASIZE 00000b02: DUP3 00000b03: MSTORE 00000b04: RETURNDATASIZE 00000b05: PUSH1 0x00 00000b07: PUSH1 0x20 00000b09: DUP5 00000b0a: ADD 00000b0b: RETURNDATACOPY 00000b0c: PUSH2 0x0b15 00000b0f: JUMP 00000b10: JUMPDEST 00000b11: PUSH1 0x60 00000b13: SWAP2 00000b14: POP 00000b15: JUMPDEST 00000b16: POP 00000b17: SWAP2 00000b18: POP 00000b19: SWAP2 00000b1a: POP 00000b1b: DUP2 00000b1c: PUSH2 0x0b86 00000b1f: JUMPI 00000b20: PUSH1 0x40 00000b22: DUP1 00000b23: MLOAD 00000b24: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000b45: DUP2 00000b46: MSTORE 00000b47: PUSH1 0x20 00000b49: PUSH1 0x04 00000b4b: DUP3 00000b4c: ADD 00000b4d: DUP2 00000b4e: SWAP1 00000b4f: MSTORE 00000b50: PUSH1 0x24 00000b52: DUP3 00000b53: ADD 00000b54: MSTORE 00000b55: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 00000b76: PUSH1 0x44 00000b78: DUP3 00000b79: ADD 00000b7a: MSTORE 00000b7b: SWAP1 00000b7c: MLOAD 00000b7d: SWAP1 00000b7e: DUP2 00000b7f: SWAP1 00000b80: SUB 00000b81: PUSH1 0x64 00000b83: ADD 00000b84: SWAP1 00000b85: REVERT 00000b86: JUMPDEST 00000b87: DUP1 00000b88: MLOAD 00000b89: ISZERO 00000b8a: PUSH2 0x0bf9 00000b8d: JUMPI 00000b8e: DUP1 00000b8f: DUP1 00000b90: PUSH1 0x20 00000b92: ADD 00000b93: SWAP1 00000b94: MLOAD 00000b95: PUSH1 0x20 00000b97: DUP2 00000b98: LT 00000b99: ISZERO 00000b9a: PUSH2 0x0ba2 00000b9d: JUMPI 00000b9e: PUSH1 0x00 00000ba0: DUP1 00000ba1: REVERT 00000ba2: JUMPDEST 00000ba3: POP 00000ba4: MLOAD 00000ba5: PUSH2 0x0bf9 00000ba8: JUMPI 00000ba9: PUSH1 0x40 00000bab: MLOAD 00000bac: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000bcd: DUP2 00000bce: MSTORE 00000bcf: PUSH1 0x04 00000bd1: ADD 00000bd2: DUP1 00000bd3: DUP1 00000bd4: PUSH1 0x20 00000bd6: ADD 00000bd7: DUP3 00000bd8: DUP2 00000bd9: SUB 00000bda: DUP3 00000bdb: MSTORE 00000bdc: PUSH1 0x2a 00000bde: DUP2 00000bdf: MSTORE 00000be0: PUSH1 0x20 00000be2: ADD 00000be3: DUP1 00000be4: PUSH2 0x0c71 00000be7: PUSH1 0x2a 00000be9: SWAP2 00000bea: CODECOPY 00000beb: PUSH1 0x40 00000bed: ADD 00000bee: SWAP2 00000bef: POP 00000bf0: POP 00000bf1: PUSH1 0x40 00000bf3: MLOAD 00000bf4: DUP1 00000bf5: SWAP2 00000bf6: SUB 00000bf7: SWAP1 00000bf8: REVERT 00000bf9: JUMPDEST 00000bfa: POP 00000bfb: POP 00000bfc: POP 00000bfd: POP 00000bfe: JUMP 00000bff: JUMPDEST 00000c00: PUSH1 0x00 00000c02: DUP2 00000c03: EXTCODEHASH 00000c04: PUSH32 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 00000c25: DUP2 00000c26: ISZERO 00000c27: DUP1 00000c28: ISZERO 00000c29: SWAP1 00000c2a: PUSH2 0x0c33 00000c2d: JUMPI 00000c2e: POP 00000c2f: DUP1 00000c30: DUP3 00000c31: EQ 00000c32: ISZERO 00000c33: JUMPDEST 00000c34: SWAP5 00000c35: SWAP4 00000c36: POP 00000c37: POP 00000c38: POP 00000c39: POP 00000c3a: JUMP 00000c3b: INVALID 00000c3c: BLOBHASH 00000c3d: KECCAK256 00000c3e: PUSH9 0x65726562792072656e 00000c48: PUSH16 0x756e6365206f776e657273686970206f 00000c59: PUSH7 0x20746869732063 00000c61: PUSH16 0x6e747261637420666f72657665722e53 00000c72: PUSH2 0x6665 00000c75: GASLIMIT 00000c76: MSTORE 00000c77: NUMBER 00000c78: ORIGIN 00000c79: ADDRESS 00000c7a: GASPRICE 00000c7b: KECCAK256 00000c7c: GASLIMIT 00000c7d: MSTORE 00000c7e: NUMBER 00000c7f: ORIGIN 00000c80: ADDRESS 00000c81: KECCAK256 00000c82: PUSH16 0x7065726174696f6e20646964206e6f74 00000c93: KECCAK256 00000c94: PUSH20 0x756363656564a165627a7a7230582005594c5e21 00000ca9: CREATE2 00000caa: SWAP16 00000cab: UNKNOWN(0x29) 00000cac: CLZ 00000cad: UNKNOWN(0xB0) 00000cae: PUSH32
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x79ba5097",
"selector": "0x79ba5097",
"calldata_variants": [
"0x79ba5097",
"0x79ba50970000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa3fbbaae",
"selector": "0xa3fbbaae",
"calldata_variants": [
"0xa3fbbaae",
"0xa3fbbaae0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4e2c1e6",
"selector": "0xc4e2c1e6",
"calldata_variants": [
"0xc4e2c1e6",
"0xc4e2c1e60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1627540c",
"selector": "0x1627540c",
"calldata_variants": [
"0x1627540c",
"0x1627540c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x481c6a75",
"selector": "0x481c6a75",
"calldata_variants": [
"0x481c6a75",
"0x481c6a750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4fdb7f44",
"selector": "0x4fdb7f44",
"calldata_variants": [
"0x4fdb7f44",
"0x4fdb7f440000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x53a47bb7",
"selector": "0x53a47bb7",
"calldata_variants": [
"0x53a47bb7",
"0x53a47bb70000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 3192,
"type": "tx_origin_used"
},
{
"pc": 3199,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0x3f750a10ca494debf2e22a4ec303bb3897033f6da956e14e8c39cdd71ab04670
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 16,
"trace_id": "0x3f750a10ca494debf2e22a4ec303bb3897033f6da956e14e8c39cdd71ab04670",
"confirmed": false,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x79ba5097",
"selector": "0x79ba5097",
"calldata_variants": [
"0x79ba5097",
"0x79ba50970000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa3fbbaae",
"selector": "0xa3fbbaae",
"calldata_variants": [
"0xa3fbbaae",
"0xa3fbbaae0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4e2c1e6",
"selector": "0xc4e2c1e6",
"calldata_variants": [
"0xc4e2c1e6",
"0xc4e2c1e60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1627540c",
"selector": "0x1627540c",
"calldata_variants": [
"0x1627540c",
"0x1627540c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x481c6a75",
"selector": "0x481c6a75",
"calldata_variants": [
"0x481c6a75",
"0x481c6a750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4fdb7f44",
"selector": "0x4fdb7f44",
"calldata_variants": [
"0x4fdb7f44",
"0x4fdb7f440000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x53a47bb7",
"selector": "0x53a47bb7",
"calldata_variants": [
"0x53a47bb7",
"0x53a47bb70000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 0,
"create2_count": 1
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x017da5619bb4e337e31458a0ee950b6996d24eb00391732346f7c39fa1a6d305
call_targets:
0xaedcfcdd80573c2a312d15d6bb9d921a01e4fb0f
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x017da5619bb4e337e31458a0ee950b6996d24eb00391732346f7c39fa1a6d305",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xaedcfcdd80573c2a312d15d6bb9d921a01e4fb0f"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x79ba5097",
"selector": "0x79ba5097",
"calldata_variants": [
"0x79ba5097",
"0x79ba50970000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa3fbbaae",
"selector": "0xa3fbbaae",
"calldata_variants": [
"0xa3fbbaae",
"0xa3fbbaae0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4e2c1e6",
"selector": "0xc4e2c1e6",
"calldata_variants": [
"0xc4e2c1e6",
"0xc4e2c1e60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1627540c",
"selector": "0x1627540c",
"calldata_variants": [
"0x1627540c",
"0x1627540c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x481c6a75",
"selector": "0x481c6a75",
"calldata_variants": [
"0x481c6a75",
"0x481c6a750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4fdb7f44",
"selector": "0x4fdb7f44",
"calldata_variants": [
"0x4fdb7f44",
"0x4fdb7f440000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x53a47bb7",
"selector": "0x53a47bb7",
"calldata_variants": [
"0x53a47bb7",
"0x53a47bb70000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2785,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": [
{
"pc": 3192,
"type": "tx_origin_used"
},
{
"pc": 3199,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x017da5619bb4e337e31458a0ee950b6996d24eb00391732346f7c39fa1a6d305
call_targets:
0xaedcfcdd80573c2a312d15d6bb9d921a01e4fb0f
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x017da5619bb4e337e31458a0ee950b6996d24eb00391732346f7c39fa1a6d305",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xaedcfcdd80573c2a312d15d6bb9d921a01e4fb0f"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x79ba5097",
"selector": "0x79ba5097",
"calldata_variants": [
"0x79ba5097",
"0x79ba50970000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa3fbbaae",
"selector": "0xa3fbbaae",
"calldata_variants": [
"0xa3fbbaae",
"0xa3fbbaae0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4e2c1e6",
"selector": "0xc4e2c1e6",
"calldata_variants": [
"0xc4e2c1e6",
"0xc4e2c1e60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1627540c",
"selector": "0x1627540c",
"calldata_variants": [
"0x1627540c",
"0x1627540c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x481c6a75",
"selector": "0x481c6a75",
"calldata_variants": [
"0x481c6a75",
"0x481c6a750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4fdb7f44",
"selector": "0x4fdb7f44",
"calldata_variants": [
"0x4fdb7f44",
"0x4fdb7f440000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x53a47bb7",
"selector": "0x53a47bb7",
"calldata_variants": [
"0x53a47bb7",
"0x53a47bb70000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2785,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [
{
"pc": 3192,
"type": "tx_origin_used"
},
{
"pc": 3199,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 1
}
|
| low | access_control | codex | renounceOwnership can be reversed by a previously nominated owner | 65 | no | — |
viewevidence_json{
"evidence": "renounceOwnership only sets _owner = address(0) without clearing _nominatedOwner, while acceptOwnership checks only _nominatedOwner == msg.sender.",
"locations": [
"contracts/Contract.sol:383",
"contracts/Contract.sol:392",
"contracts/Contract.sol:403"
],
"recommendation": "Clear _nominatedOwner in renounceOwnership and/or acceptOwnership, or require _nominatedOwner == address(0) before allowing renounceOwnership.",
"exploit_scenario": "The owner nominates a new owner (e.g., Alice) but later calls renounceOwnership expecting a permanent lock. Because _nominatedOwner is not cleared, Alice can still call acceptOwnership and regain control, contradicting the \u201ccannot be undone\u201d expectation."
}
|
| low | other | cast | Contract creation opcode present | 60 | no | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 0,
"create2_count": 1
}
|