59b08d80-7ebc-411b-b65a-eb101bdc88a8
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 |
|---|---|---|---|---|
| 31410 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 77086 | artifact.fetch | failed | 1 / 3 | 1 week ago |
| 77087 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 77088 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 77089 | capability.graph | complete | 1 / 3 | 1 week ago |
| 77090 | detector.run | complete | 1 / 3 | 1 week ago |
| 77091 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:882730] OpenAI Codex v0.77.0 (research preview)
[codex:882730] --------
[codex:882730] workdir: /tmp/codex-multi-xrg4i04c
[codex:882730] model: gpt-5.2-codex
[codex:882730] provider: openai
[codex:882730] approval: never
[codex:882730] sandbox: read-only
[codex:882730] reasoning effort: xhigh
[codex:882730] reasoning summaries: auto
[codex:882730] session id: 019b8157-2dc7-7673-83f4-4c7546cb607d
[codex:882730] --------
[codex:882730] user
[codex:882730] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:882730]
[codex:882730] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:882730]
[codex:882730] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:882730] - Gas inefficiency, code quality, naming, or best practices
[codex:882730] - Theoretical vulnerabilities without a clear extraction path
[codex:882730] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:882730] - Front-running unless it enables theft beyond MEV
[codex:882730] - DoS, griefing, or issues that don't result in attacker profit
[codex:882730] - Missing events, view function issues, or informational findings
[codex:882730]
[codex:882730] HIGH-VALUE PATTERNS TO HUNT:
[codex:882730] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:882730] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:882730] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:882730] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:882730] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:882730] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:882730] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:882730] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:882730] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:882730]
[codex:882730] For each finding, you MUST provide:
[codex:882730] 1. Exact file and line numbers of vulnerable code
[codex:882730] 2. Step-by-step exploit transaction sequence
[codex:882730] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:882730]
[codex:882730] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:882730]
[codex:882730] Output MUST be valid JSON matching the provided schema.
[codex:882730] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:882730] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:882730] mcp startup: no servers
[codex:882730]
[codex:882730] thinking
[codex:882730] **Checking for skill documentation**
[codex:882730] exec
[codex:882730] /bin/bash -lc ls in /tmp/codex-multi-xrg4i04c succeeded in 5ms:
[codex:882730] AUDIT_BUNDLE.txt
[codex:882730] codex-output-schema.json
[codex:882730] contracts
[codex:882730]
[codex:882730] thinking
[codex:882730] **Checking for skill triggers**
[codex:882730] exec
[codex:882730] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-xrg4i04c succeeded in 6ms:
[codex:882730] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:882730]
[codex:882730] ================================================================================
[codex:882730] FILE: contracts/contracts/Registrar.sol
[codex:882730] ================================================================================
[codex:882730] // SPDX-License-Identifier: MIT
[codex:882730]
[codex:882730] pragma solidity 0.8.18;
[codex:882730]
[codex:882730] import { AdminAgent } from "./access/AdminAgent.sol";
[codex:882730] import { IRegistrarClient } from "./RegistrarClient.sol";
[codex:882730] import { VYToken } from "./token/VYToken.sol";
[codex:882730]
[codex:882730] contract Registrar is AdminAgent {
[codex:882730]
[codex:882730] bytes32 private constant ECOSYSTEM_ID = keccak256(bytes("VY_ETH"));
[codex:882730]
[codex:882730] address[] private _contracts;
[codex:882730] address[] private _prevContracts;
[codex:882730] bool private _finalized;
[codex:882730]
[codex:882730] thinking
[codex:882730] **Analyzing audit bundle for exploits**
[codex:882730] exec
[codex:882730] /bin/bash -lc 'rg --files' in /tmp/codex-multi-xrg4i04c succeeded in 10ms:
[codex:882730] codex-output-schema.json
[codex:882730] AUDIT_BUNDLE.txt
[codex:882730] contracts/contracts/VETHReverseStakingTreasury.sol
[codex:882730] contracts/contracts/RegistrarClient.sol
[codex:882730] contracts/contracts/RegistrarMigrator.sol
[codex:882730] contracts/contracts/treasury/VETHYieldRateTreasury.sol
[codex:882730] contracts/contracts/access/AdminAgent.sol
[codex:882730] contracts/contracts/access/BackendAgent.sol
[codex:882730] contracts/contracts/access/AdminGovernanceAgent.sol
[codex:882730] contracts/contracts/Registrar.sol
[codex:882730] contracts/contracts/governance/Governable.sol
[codex:882730] contracts/contracts/governance/VETHGovernance.sol
[codex:882730] contracts/contracts/Router.sol
[codex:882730] contracts/contracts/token/VYToken.sol
[codex:882730] contracts/contracts/exchange/VYRevenueCycleCirculationTracker.sol
[codex:882730] contracts/contracts/exchange/VETHP2P.sol
[codex:882730] contracts/contracts/exchange/VETHRevenueCycleTreasury.sol
[codex:882730] contracts/contracts/lib/utils/Strings.sol
[codex:882730] contracts/contracts/lib/utils/math/SignedMath.sol
[codex:882730] contracts/contracts/lib/utils/math/Math.sol
[codex:882730]
[codex:882730] thinking
[codex:882730] **Examining first-party contract files**
[codex:882730] exec
[codex:882730] /bin/bash -lc "sed -n '1,200p' contracts/contracts/access/AdminAgent.sol" in /tmp/codex-multi-xrg4i04c succeeded in 5ms:
[codex:882730] // SPDX-License-Identifier: MIT
[codex:882730]
[codex:882730] pragma solidity ^0.8.18;
[codex:882730]
[codex:882730] import { Context } from "../lib/utils/Context.sol";
[codex:882730]
[codex:882730] contract AdminAgent is Context {
[codex:882730]
[codex:882730] mapping(address => bool) private _adminAgents;
[codex:882730]
[codex:882730] constructor(address[] memory adminAgents_) {
[codex:882730] for (uint i = 0; i < adminAgents_.length; i++) {
[codex:882730] require(adminAgents_[i] != address(0), "Invalid address");
[codex:882730] _adminAgents[adminAgents_[i]] = true;
[codex:882730] }
[codex:882730] }
[codex:882730]
[codex:882730] modifier onlyAdminAgents() {
[codex:882730] require(_adminAgents[_msgSender()], "Unauthorized");
[codex:882730] _;
[codex:882730]
[codex:882730] thinking
[codex:882730] **Considering BackendAgent**
[codex:882730] exec
[codex:882730] /bin/bash -lc "sed -n '1,200p' contracts/contracts/access/BackendAgent.sol" in /tmp/codex-multi-xrg4i04c succeeded in 5ms:
[codex:882730] // SPDX-License-Identifier: MIT
[codex:882730]
[codex:882730] pragma solidity ^0.8.18;
[codex:882730]
[codex:882730] import { Context } from "../lib/utils/Context.sol";
[codex:882730]
[codex:882730] contract BackendAgent is Context {
[codex:882730]
[codex:882730] mapping(address => bool) private _backendAdminAgents;
[codex:882730] mapping(address => bool) private _backendAgents;
[codex:882730]
[codex:882730] event SetBackendAgent(address agent);
[codex:882730] event RevokeBackendAgent(address agent);
[codex:882730]
[codex:882730] modifier onlyBackendAdminAgents() {
[codex:882730] require(_backendAdminAgents[_msgSender()], "Unauthorized");
[codex:882730] _;
[codex:882730] }
[codex:882730]
[codex:882730] modifier onlyBackendAgents() {
[codex:882730]
[codex:882730] thinking
[codex:882730] **Checking for AdminGovernanceAgent**
[codex:882730] exec
[codex:882730] /bin/bash -lc "sed -n '1,200p' contracts/contracts/access/AdminGovernanceAgent.sol" in /tmp/codex-multi-xrg4i04c succeeded in 5ms:
[codex:882730] // SPDX-License-Identifier: MIT
[codex:882730]
[codex:882730] pragma solidity ^0.8.18;
[codex:882730]
[codex:882730] import { Context } from "../lib/utils/Context.sol";
[codex:882730]
[codex:882730] contract AdminGovernanceAgent is Context {
[codex:882730]
[codex:882730] mapping(address => bool) private _adminGovAgents;
[codex:882730]
[codex:882730] constructor(address[] memory adminGovAgents_) {
[codex:882730] for (uint i = 0; i < adminGovAgents_.length; i++) {
[codex:882730] require(adminGovAgents_[i] != address(0), "Invalid address");
[codex:882730] _adminGovAgents[adminGovAgents_[i]] = true;
[codex:882730] }
[codex:882730] }
[codex:882730]
[codex:882730] modifier onlyAdminGovAgents() {
[codex:882730] require(_adminGovAgents[_msgSender()], "Unauthorized");
[codex:882730] _;
[codex:882730]
[codex:882730] thinking
[codex:882730] **Inspecting contracts for vulnerabilities**
[codex:882730] exec
[codex:882730] /bin/bash -lc "sed -n '1,240p' contracts/contracts/exchange/VETHP2P.sol" in /tmp/codex-multi-xrg4i04c succeeded in 6ms:
[codex:882730] // SPDX-License-Identifier: MIT
[codex:882730]
[codex:882730] pragma solidity 0.8.18;
[codex:882730]
[codex:882730] import { VETHRevenueCycleTreasury } from "./VETHRevenueCycleTreasury.sol";
[codex:882730] import { ERC20 } from "../lib/token/ERC20/ERC20.sol";
[codex:882730] import { VYToken } from "../token/VYToken.sol";
[codex:882730] import { BackendAgent } from "../access/BackendAgent.sol";
[codex:882730] import { RegistrarClient } from "../RegistrarClient.sol";
[codex:882730] import { Router } from "../Router.sol";
[codex:882730]
[codex:882730] contract VETHP2P is BackendAgent, RegistrarClient {
[codex:882730]
[codex:882730] uint256 private constant MULTIPLIER = 10**18;
[codex:882730]
[codex:882730] struct TradeOfferCalcInfo {
[codex:882730] uint256 amountOut;
[codex:882730] uint256 takerReceives;
[codex:882730] uint256 takerFee;
[codex:882730] uint256 makerReceives;
[codex:882730] exec
[codex:882730] /bin/bash -lc "sed -n '240,520p' contracts/contracts/exchange/VETHP2P.sol" in /tmp/codex-multi-xrg4i04c succeeded in 7ms:
[codex:882730] }
[codex:882730]
[codex:882730] emit TradeOffer(id, _msgSender(), calc.amountOut, quantity, _offers[seller][id].quantity, block.timestamp);
[codex:882730]
[codex:882730] return calc;
[codex:882730] }
[codex:882730]
[codex:882730] function closeOffer(uint256 id) external onlyOpenOffer(id, _msgSender()) {
[codex:882730] _closeOffer(id, _msgSender());
[codex:882730] }
[codex:882730]
[codex:882730] function closeOffer(address seller, uint256 id) external onlyOpenOffer(id, seller) onlyBackendAgents {
[codex:882730] _closeOffer(id, seller);
[codex:882730] }
[codex:882730]
[codex:882730] function _pairExist(TradingPairs tradingPair) private view returns (bool) {
[codex:882730] return _tradingPairs[tradingPair].makerAssetAddress != address(0) || _tradingPairs[tradingPair].takerAssetAddress != address(0);
[codex:882730] }
[codex:882730]
[codex:882730] function _isOfferActive(uint256 id, address seller) private view returns (bool) {
[codex:882730]
[codex:882730] thinking
[codex:882730] **Analyzing potential reentrancy vulnerabilities**
[codex:882730]
[codex:882730] I'm examining how the VETHP2P contract handles trade offers, focusing on its use of external calls during ETH transfers without reentrancy guards. I'm reasoning through scenarios where malicious sellers or takers might reenter functions like tradeOffer or closeOffer during the flow to see if they can withdraw more assets than allowed. After tracing the token transfers and state updates, it seems reentrancy may accelerate closure but not enable double withdrawals or profit from others, though I'm still scrutinizing some edge cases in ETH_VY trades and will next review related contracts like VETHRevenueCycleTreasury.
[codex:882730] exec
[codex:882730] /bin/bash -lc "sed -n '1,260p' contracts/contracts/exchange/VETHRevenueCycleTreasury.sol" in /tmp/codex-multi-xrg4i04c succeeded in 7ms:
[codex:882730] // SPDX-License-Identifier: MIT
[codex:882730] //
[codex:882730] // VETHRevenueCycleTreasury [VY_ETH]
[codex:882730] //
[codex:882730]
[codex:882730] pragma solidity 0.8.18;
[codex:882730]
[codex:882730] import { BackendAgent } from "../access/BackendAgent.sol";
[codex:882730] import { VYToken } from "../token/VYToken.sol";
[codex:882730] import { RegistrarClient } from "../RegistrarClient.sol";
[codex:882730] import { RegistrarMigrator } from "../RegistrarMigrator.sol";
[codex:882730] import { AdminGovernanceAgent } from "../access/AdminGovernanceAgent.sol";
[codex:882730] import { Governable } from "../governance/Governable.sol";
[codex:882730] import { VETHYieldRateTreasury } from "../treasury/VETHYieldRateTreasury.sol";
[codex:882730] import { VYRevenueCycleCirculationTracker } from "./VYRevenueCycleCirculationTracker.sol";
[codex:882730] import { Registrar } from "../Registrar.sol";
[codex:882730] import { Router } from "../Router.sol";
[codex:882730]
[codex:882730] contract VETHRevenueCycleTreasury is BackendAgent, RegistrarClient, RegistrarMigrator, AdminGovernanceAgent, Governable, VYRevenueCycleCirculationTracker {
[codex:882730]
[codex:882730]
[codex:882730] thinking
[codex:882730] **Analyzing potential treasury manipulation exploits**
[codex:882730] exec
[codex:882730] /bin/bash -lc "sed -n '1,240p' contracts/contracts/VETHReverseStakingTreasury.sol" in /tmp/codex-multi-xrg4i04c succeeded in 5ms:
[codex:882730] // SPDX-License-Identifier: MIT
[codex:882730]
[codex:882730] pragma solidity 0.8.18;
[codex:882730]
[codex:882730] import { BackendAgent } from "./access/BackendAgent.sol";
[codex:882730] import { VYToken } from "./token/VYToken.sol";
[codex:882730] import { VETHP2P } from "./exchange/VETHP2P.sol";
[codex:882730] import { VETHRevenueCycleTreasury } from "./exchange/VETHRevenueCycleTreasury.sol";
[codex:882730] import { VETHYieldRateTreasury } from "./treasury/VETHYieldRateTreasury.sol";
[codex:882730] import { RegistrarClient } from "./RegistrarClient.sol";
[codex:882730] import { AdminGovernanceAgent } from "./access/AdminGovernanceAgent.sol";
[codex:882730] import { Governable } from "./governance/Governable.sol";
[codex:882730] import { RegistrarMigrator } from "./RegistrarMigrator.sol";
[codex:882730] import { Registrar } from "./Registrar.sol";
[codex:882730] import { Router } from "./Router.sol";
[codex:882730]
[codex:882730] contract VETHReverseStakingTreasury is BackendAgent, RegistrarClient, RegistrarMigrator, AdminGovernanceAgent, Governable {
[codex:882730]
[codex:882730] uint256 private constant MINIMUM_REVERSE_STAKE_AUTOCLOSE = 100000000; // 0.1 gwei
[codex:882730] uint256 private constant MULTIPLIER = 10**18;
[codex:882730]
[codex:882730] thinking
[codex:882730] **Seeking functions for ETH or VY extraction**
[codex:882730] exec
[codex:882730] /bin/bash -lc "sed -n '240,520p' contracts/contracts/VETHReverseStakingTreasury.sol" in /tmp/codex-multi-xrg4i04c succeeded in 5ms:
[codex:882730] DataTypes extensionMinimumRemainingStakeType,
[codex:882730] uint256 restakeMinimumPayout
[codex:882730] ) external onlyBackendAdminAgents {
[codex:882730] require(_reverseStakeTermsNonce == 0, "Reverse stake terms already set up");
[codex:882730] _createNewReverseStakeTerm(
[codex:882730] dailyBurnRate,
[codex:882730] durationInDays,
[codex:882730] minimumReverseStakeETH,
[codex:882730] processingFeePercentage,
[codex:882730] extensionMinimumRemainingStake,
[codex:882730] extensionMinimumRemainingStakeType,
[codex:882730] restakeMinimumPayout
[codex:882730] );
[codex:882730] }
[codex:882730]
[codex:882730] function createNewReverseStakeTerm(
[codex:882730] uint256 dailyBurnRate,
[codex:882730] uint256 durationInDays,
[codex:882730] uint256 minimumReverseStakeETH,
[codex:882730] uint256 processingFeePercentage,
[codex:882730] exec
[codex:882730] /bin/bash -lc "sed -n '520,1040p' contracts/contracts/VETHReverseStakingTreasury.sol" in /tmp/codex-multi-xrg4i04c succeeded in 5ms:
[codex:882730]
[codex:882730] // Update totalClaimedYield
[codex:882730] require(reverseStakeData.newReverseStakeClaimedYieldETH >= totalCurrentClaimedYieldETH, "Restaked reverseStakes must increase in value");
[codex:882730] reverseStakeData.yieldPayout = reverseStakeData.newReverseStakeClaimedYieldETH - totalCurrentClaimedYieldETH;
[codex:882730] _totalClaimedYieldETH += reverseStakeData.yieldPayout;
[codex:882730]
[codex:882730] // Processing fee
[codex:882730] reverseStakeData.processingFeeETH = reverseStakeData.yieldPayout * _reverseStakeTerms[firstReverseStakeTermId].processingFeePercentage / MULTIPLIER;
[codex:882730]
[codex:882730] // Yield payout
[codex:882730] require(reverseStakeData.yieldPayout >= _reverseStakeTerms[firstReverseStakeTermId].restakeMinimumPayout, "Minimum yield payout not met");
[codex:882730] reverseStakeData.yieldPayout -= reverseStakeData.processingFeeETH;
[codex:882730]
[codex:882730] // Transfers
[codex:882730] _vethYRT.reverseStakingTransfer(borrower, reverseStakeData.yieldPayout);
[codex:882730] _vethYRT.reverseStakingRoute(address(_ethComptroller), reverseStakeData.processingFeeETH, ROUTE_SELECTOR);
[codex:882730] _transferToRevenueCycleTreasury(reverseStakeData.vyToBurn);
[codex:882730]
[codex:882730] emit Restake(
[codex:882730] borrower, // borrower
[codex:882730]
[codex:882730] thinking
[codex:882730] **Analyzing potential reentrancy risks**
[codex:882730] exec
[codex:882730] /bin/bash -lc "sed -n '1,320p' contracts/contracts/governance/VETHGovernance.sol" in /tmp/codex-multi-xrg4i04c succeeded in 6ms:
[codex:882730] // SPDX-License-Identifier: MIT
[codex:882730]
[codex:882730] pragma solidity 0.8.18;
[codex:882730]
[codex:882730] import { AdminAgent } from "../access/AdminAgent.sol";
[codex:882730] import { VETHYieldRateTreasury } from "../treasury/VETHYieldRateTreasury.sol";
[codex:882730] import { VYToken } from "../token/VYToken.sol";
[codex:882730] import { VETHRevenueCycleTreasury } from "../exchange/VETHRevenueCycleTreasury.sol";
[codex:882730] import { VETHReverseStakingTreasury } from "../VETHReverseStakingTreasury.sol";
[codex:882730] import { RegistrarClient } from "../RegistrarClient.sol";
[codex:882730]
[codex:882730] contract VETHGovernance is AdminAgent, RegistrarClient {
[codex:882730]
[codex:882730] enum VoteOptions {
[codex:882730] YES,
[codex:882730] NO
[codex:882730] }
[codex:882730]
[codex:882730] enum ProposalType {
[codex:882730] Migration,
[codex:882730]
[codex:882730] thinking
[codex:882730] **Analyzing potential uninitialized proxy risks**
[codex:882730] exec
[codex:882730] /bin/bash -lc "sed -n '1,200p' contracts/contracts/governance/Governable.sol" in /tmp/codex-multi-xrg4i04c succeeded in 6ms:
[codex:882730] // SPDX-License-Identifier: MIT
[codex:882730]
[codex:882730] pragma solidity ^0.8.18;
[codex:882730]
[codex:882730] import { Context } from "../lib/utils/Context.sol";
[codex:882730] import { Registrar } from "../Registrar.sol";
[codex:882730]
[codex:882730] contract Governable is Context {
[codex:882730]
[codex:882730] address internal _governanceAddress;
[codex:882730]
[codex:882730] constructor() {}
[codex:882730]
[codex:882730] modifier onlyGovernance() {
[codex:882730] require(_governanceAddress == _msgSender(), "Unauthorized");
[codex:882730] _;
[codex:882730] }
[codex:882730]
[codex:882730] function _updateGovernable(Registrar registrar) internal {
[codex:882730] _governanceAddress = registrar.getVETHGovernance();
[codex:882730]
[codex:882730] thinking
[codex:882730] **Checking VYRevenueCycleCirculationTracker**
[codex:882730] exec
[codex:882730] /bin/bash -lc "sed -n '1,200p' contracts/contracts/exchange/VYRevenueCycleCirculationTracker.sol" in /tmp/codex-multi-xrg4i04c succeeded in 5ms:
[codex:882730] // SPDX-License-Identifier: MIT
[codex:882730]
[codex:882730] pragma solidity 0.8.18;
[codex:882730]
[codex:882730] import { Registrar } from "../Registrar.sol";
[codex:882730] import { Context } from "../lib/utils/Context.sol";
[codex:882730]
[codex:882730] contract VYRevenueCycleCirculationTracker is Context {
[codex:882730]
[codex:882730] uint256 private _revenueCycleCirculation;
[codex:882730] address private _vyTokenAddress;
[codex:882730]
[codex:882730] constructor(uint256 initialCirculation) {
[codex:882730] _revenueCycleCirculation = initialCirculation;
[codex:882730] }
[codex:882730]
[codex:882730] modifier onlyVYToken() {
[codex:882730] require(_msgSender() == _vyTokenAddress, "Caller must be VYToken");
[codex:882730] _;
[codex:882730] }
[codex:882730]
[codex:882730] thinking
[codex:882730] **Analyzing potential yield rate manipulation and reentrancy risks**
[codex:882730] exec
[codex:882730] /bin/bash -lc "sed -n '1,220p' contracts/contracts/lib/token/ERC20/ERC20.sol" in /tmp/codex-multi-xrg4i04c succeeded in 5ms:
[codex:882730] // SPDX-License-Identifier: MIT
[codex:882730] // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)
[codex:882730]
[codex:882730] pragma solidity ^0.8.0;
[codex:882730]
[codex:882730] import "./IERC20.sol";
[codex:882730] import "./extensions/IERC20Metadata.sol";
[codex:882730] import "../../utils/Context.sol";
[codex:882730]
[codex:882730] /**
[codex:882730] * @dev Implementation of the {IERC20} interface.
[codex:882730] *
[codex:882730] * This implementation is agnostic to the way tokens are created. This means
[codex:882730] * that a supply mechanism has to be added in a derived contract using {_mint}.
[codex:882730] * For a generic mechanism see {ERC20PresetMinterPauser}.
[codex:882730] *
[codex:882730] * TIP: For a detailed writeup see our guide
[codex:882730] * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
[codex:882730] * to implement supply mechanisms].
[codex:882730] *
[codex:882730]
[codex:882730] thinking
[codex:882730] **Investigating potential vulnerabilities in staking and trade functions**
[codex:882730] exec
[codex:882730] /bin/bash -lc 'rg -n "external payable" contracts/contracts' in /tmp/codex-multi-xrg4i04c succeeded in 11ms:
[codex:882730] contracts/contracts/VETHReverseStakingTreasury.sol:386: function returnETHToUnstake(uint256 reverseStakeId) external payable onlyActiveReverseStake(_msgSender(), reverseStakeId) {
[codex:882730] contracts/contracts/VETHReverseStakingTreasury.sol:437: function extendReverseStake(uint256 reverseStakeId) external payable onlyActiveReverseStake(_msgSender(), reverseStakeId) {
[codex:882730] contracts/contracts/VETHReverseStakingTreasury.sol:613: function tradeOffer(address borrower, uint256 reverseStakeId) external payable onlyActiveOffer(borrower, reverseStakeId) {
[codex:882730] contracts/contracts/VETHReverseStakingTreasury.sol:1041: receive() external payable {}
[codex:882730] contracts/contracts/treasury/VETHYieldRateTreasury.sol:67: receive() external payable {}
[codex:882730] contracts/contracts/Router.sol:26: function route() external payable {
[codex:882730] contracts/contracts/Router.sol:43: receive() external payable {}
[codex:882730] contracts/contracts/exchange/VETHRevenueCycleTreasury.sol:135: function tradeOffer(uint256 id) external payable {
[codex:882730] contracts/contracts/lib/openzeppelin-upgradeable/proxy/utils/UUPSUpgradeable.sol:85: function upgradeToAndCall(address newImplementation, bytes memory data) external payable virtual onlyProxy {
[codex:882730]
[codex:882730] thinking
[codex:882730] **Checking for receive function in contract**
[codex:882730] exec
[codex:882730] /bin/bash -lc "sed -n '1040,1105p' contracts/contracts/VETHReverseStakingTreasury.sol" in /tmp/codex-multi-xrg4i04c succeeded in 5ms:
[codex:882730]
[codex:882730] receive() external payable {}
[codex:882730] }
[codex:882730]
[codex:882730]
[codex:882730]
[codex:882730]
[codex:882730] thinking
[codex:882730] **Analyzing potential smart contract vulnerabilities**
[codex:882730]
[codex:882730] I'm reviewing various contract functions for possible exploits, focusing on initialization risks, array bounds, token transfer fees, allowance handling, yield rate calculations, and reentrancy; I find some edge cases and subtle behaviors but no clear, concrete exploit paths without assumptions or external manipulation.
[codex:882730] thinking
[codex:882730] **Examining complex payment and pricing mechanisms**
[codex:882730]
[codex:882730] I'm working through the interplay of VY token trades, ETH payments, and debt repayment logic to see if pricing constraints or rounding errors could let borrowers underpay debt or extract value unfairly; so far, the enforced minimum price and proportional calculations seem to prevent such exploits, but the system’s complexity makes it important to carefully trace each step and fee calculation.
[codex:882730] thinking
[codex:882730] **Analyzing trade frequency and rounding effects on debt repayment**
[codex:882730]
[codex:882730] I'm investigating whether fast repeated trades could let borrowers minimize VY burning and whether rounding in ETH repayments might create exploitable gaps; the burn mechanism aligns with elapsed time, and price floors along with floor rounding in debt reduction seem to guard against underpayment, so no clear profit emerges despite the complexity.
[codex:882730] thinking
[codex:882730] **Reviewing fee calculations and offer updates for vulnerabilities**
[codex:882730]
[codex:882730] I'm checking if fee computations or offer quantity updates could be exploited, particularly where offers close but unfilled quantities aren't updated; after careful analysis, transfers and state changes appear consistent with no exploitable discrepancies or unauthorized minting, so no concrete issues stand out.
[codex:882730] codex
[codex:882730] {"no_findings":true,"summary":"No concrete, exploitable profit path found in the provided contracts.","findings":[]}
[codex:882730] tokens used
[codex:882730] 62,602
[codex:882730] {"no_findings":true,"summary":"No concrete, exploitable profit path found in the provided contracts.","findings":[]}
{
"codex": {
"ran_at": "2026-01-03T00:59:48.123562+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable profit path found in the provided contracts.",
"raw_final": {
"summary": "No concrete, exploitable profit path found in the provided contracts.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x009a 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x8555d03c 00000019: GT 0000001a: PUSH2 0x0069 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xd54fb850 00000024: GT 00000025: PUSH2 0x004e 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xd54fb850 0000002f: EQ 00000030: PUSH2 0x017b 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xe26db6fc 0000003a: EQ 0000003b: PUSH2 0x019b 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xf38a3f84 00000045: EQ 00000046: PUSH2 0x01b0 00000049: JUMPI 0000004a: PUSH1 0x00 0000004c: DUP1 0000004d: REVERT 0000004e: JUMPDEST 0000004f: DUP1 00000050: PUSH4 0x8555d03c 00000055: EQ 00000056: PUSH2 0x013b 00000059: JUMPI 0000005a: DUP1 0000005b: PUSH4 0xb1957e5d 00000060: EQ 00000061: PUSH2 0x015b 00000064: JUMPI 00000065: PUSH1 0x00 00000067: DUP1 00000068: REVERT 00000069: JUMPDEST 0000006a: DUP1 0000006b: PUSH4 0x0f2ad452 00000070: EQ 00000071: PUSH2 0x00a6 00000074: JUMPI 00000075: DUP1 00000076: PUSH4 0x223eb640 0000007b: EQ 0000007c: PUSH2 0x00c8 0000007f: JUMPI 00000080: DUP1 00000081: PUSH4 0x4d3f7334 00000086: EQ 00000087: PUSH2 0x00ff 0000008a: JUMPI 0000008b: DUP1 0000008c: PUSH4 0x73252494 00000091: EQ 00000092: PUSH2 0x011d 00000095: JUMPI 00000096: PUSH1 0x00 00000098: DUP1 00000099: REVERT 0000009a: JUMPDEST 0000009b: CALLDATASIZE 0000009c: PUSH2 0x00a1 0000009f: JUMPI 000000a0: STOP 000000a1: JUMPDEST 000000a2: PUSH1 0x00 000000a4: DUP1 000000a5: REVERT 000000a6: JUMPDEST 000000a7: CALLVALUE 000000a8: DUP1 000000a9: ISZERO 000000aa: PUSH2 0x00b2 000000ad: JUMPI 000000ae: PUSH1 0x00 000000b0: DUP1 000000b1: REVERT 000000b2: JUMPDEST 000000b3: POP 000000b4: PUSH2 0x00c6 000000b7: PUSH2 0x00c1 000000ba: CALLDATASIZE 000000bb: PUSH1 0x04 000000bd: PUSH2 0x07a9 000000c0: JUMP 000000c1: JUMPDEST 000000c2: PUSH2 0x01d3 000000c5: JUMP 000000c6: JUMPDEST 000000c7: STOP 000000c8: JUMPDEST 000000c9: CALLVALUE 000000ca: DUP1 000000cb: ISZERO 000000cc: PUSH2 0x00d4 000000cf: JUMPI 000000d0: PUSH1 0x00 000000d2: DUP1 000000d3: REVERT 000000d4: JUMPDEST 000000d5: POP 000000d6: PUSH1 0x03 000000d8: SLOAD 000000d9: PUSH1 0x01 000000db: PUSH1 0x01 000000dd: PUSH1 0xa0 000000df: SHL 000000e0: SUB 000000e1: AND 000000e2: JUMPDEST 000000e3: PUSH1 0x40 000000e5: MLOAD 000000e6: PUSH1 0x01 000000e8: PUSH1 0x01 000000ea: PUSH1 0xa0 000000ec: SHL 000000ed: SUB 000000ee: SWAP1 000000ef: SWAP2 000000f0: AND 000000f1: DUP2 000000f2: MSTORE 000000f3: PUSH1 0x20 000000f5: ADD 000000f6: JUMPDEST 000000f7: PUSH1 0x40 000000f9: MLOAD 000000fa: DUP1 000000fb: SWAP2 000000fc: SUB 000000fd: SWAP1 000000fe: RETURN 000000ff: JUMPDEST 00000100: CALLVALUE 00000101: DUP1 00000102: ISZERO 00000103: PUSH2 0x010b 00000106: JUMPI 00000107: PUSH1 0x00 00000109: DUP1 0000010a: REVERT 0000010b: JUMPDEST 0000010c: POP 0000010d: PUSH1 0x02 0000010f: SLOAD 00000110: PUSH1 0x01 00000112: PUSH1 0x01 00000114: PUSH1 0xa0 00000116: SHL 00000117: SUB 00000118: AND 00000119: PUSH2 0x00e2 0000011c: JUMP 0000011d: JUMPDEST 0000011e: CALLVALUE 0000011f: DUP1 00000120: ISZERO 00000121: PUSH2 0x0129 00000124: JUMPI 00000125: PUSH1 0x00 00000127: DUP1 00000128: REVERT 00000129: JUMPDEST 0000012a: POP 0000012b: PUSH1 0x01 0000012d: SLOAD 0000012e: PUSH1 0x01 00000130: PUSH1 0x01 00000132: PUSH1 0xa0 00000134: SHL 00000135: SUB 00000136: AND 00000137: PUSH2 0x00e2 0000013a: JUMP 0000013b: JUMPDEST 0000013c: CALLVALUE 0000013d: DUP1 0000013e: ISZERO 0000013f: PUSH2 0x0147 00000142: JUMPI 00000143: PUSH1 0x00 00000145: DUP1 00000146: REVERT 00000147: JUMPDEST 00000148: POP 00000149: PUSH2 0x00c6 0000014c: PUSH2 0x0156 0000014f: CALLDATASIZE 00000150: PUSH1 0x04 00000152: PUSH2 0x07cd 00000155: JUMP 00000156: JUMPDEST 00000157: PUSH2 0x0250 0000015a: JUMP 0000015b: JUMPDEST 0000015c: CALLVALUE 0000015d: DUP1 0000015e: ISZERO 0000015f: PUSH2 0x0167 00000162: JUMPI 00000163: PUSH1 0x00 00000165: DUP1 00000166: REVERT 00000167: JUMPDEST 00000168: POP 00000169: PUSH2 0x00c6 0000016c: PUSH2 0x0176 0000016f: CALLDATASIZE 00000170: PUSH1 0x04 00000172: PUSH2 0x07f9 00000175: JUMP 00000176: JUMPDEST 00000177: PUSH2 0x02f9 0000017a: JUMP 0000017b: JUMPDEST 0000017c: CALLVALUE 0000017d: DUP1 0000017e: ISZERO 0000017f: PUSH2 0x0187 00000182: JUMPI 00000183: PUSH1 0x00 00000185: DUP1 00000186: REVERT 00000187: JUMPDEST 00000188: POP 00000189: PUSH2 0x00c6 0000018c: PUSH2 0x0196 0000018f: CALLDATASIZE 00000190: PUSH1 0x04 00000192: PUSH2 0x0828 00000195: JUMP 00000196: JUMPDEST 00000197: PUSH2 0x03c9 0000019a: JUMP 0000019b: JUMPDEST 0000019c: CALLVALUE 0000019d: DUP1 0000019e: ISZERO 0000019f: PUSH2 0x01a7 000001a2: JUMPI 000001a3: PUSH1 0x00 000001a5: DUP1 000001a6: REVERT 000001a7: JUMPDEST 000001a8: POP 000001a9: PUSH2 0x00c6 000001ac: PUSH2 0x0464 000001af: JUMP 000001b0: JUMPDEST 000001b1: CALLVALUE 000001b2: DUP1 000001b3: ISZERO 000001b4: PUSH2 0x01bc 000001b7: JUMPI 000001b8: PUSH1 0x00 000001ba: DUP1 000001bb: REVERT 000001bc: JUMPDEST 000001bd: POP 000001be: PUSH2 0x01c5 000001c1: PUSH2 0x0576 000001c4: JUMP 000001c5: JUMPDEST 000001c6: PUSH1 0x40 000001c8: MLOAD 000001c9: SWAP1 000001ca: DUP2 000001cb: MSTORE 000001cc: PUSH1 0x20 000001ce: ADD 000001cf: PUSH2 0x00f6 000001d2: JUMP 000001d3: JUMPDEST 000001d4: PUSH1 0x01 000001d6: SLOAD 000001d7: PUSH1 0x01 000001d9: PUSH1 0x01 000001db: PUSH1 0xa0 000001dd: SHL 000001de: SUB 000001df: AND 000001e0: CALLER 000001e1: EQ 000001e2: PUSH2 0x0221 000001e5: JUMPI 000001e6: PUSH1 0x40 000001e8: MLOAD 000001e9: PUSH3 0x461bcd 000001ed: PUSH1 0xe5 000001ef: SHL 000001f0: DUP2 000001f1: MSTORE 000001f2: PUSH1 0x20 000001f4: PUSH1 0x04 000001f6: DUP3 000001f7: ADD 000001f8: MSTORE 000001f9: PUSH1 0x0c 000001fb: PUSH1 0x24 000001fd: DUP3 000001fe: ADD 000001ff: MSTORE 00000200: PUSH12 0x155b985d5d1a1bdc9a5e9959 0000020d: PUSH1 0xa2 0000020f: SHL 00000210: PUSH1 0x44 00000212: DUP3 00000213: ADD 00000214: MSTORE 00000215: PUSH1 0x64 00000217: ADD 00000218: JUMPDEST 00000219: PUSH1 0x40 0000021b: MLOAD 0000021c: DUP1 0000021d: SWAP2 0000021e: SUB 0000021f: SWAP1 00000220: REVERT 00000221: JUMPDEST 00000222: PUSH1 0x03 00000224: DUP1 00000225: SLOAD 00000226: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000023b: NOT 0000023c: AND 0000023d: PUSH1 0x01 0000023f: PUSH1 0x01 00000241: PUSH1 0xa0 00000243: SHL 00000244: SUB 00000245: SWAP3 00000246: SWAP1 00000247: SWAP3 00000248: AND 00000249: SWAP2 0000024a: SWAP1 0000024b: SWAP2 0000024c: OR 0000024d: SWAP1 0000024e: SSTORE 0000024f: JUMP 00000250: JUMPDEST 00000251: PUSH1 0x04 00000253: SLOAD 00000254: PUSH1 0x01 00000256: PUSH1 0x01 00000258: PUSH1 0xa0 0000025a: SHL 0000025b: SUB 0000025c: AND 0000025d: CALLER 0000025e: EQ 0000025f: PUSH2 0x0299 00000262: JUMPI 00000263: PUSH1 0x40 00000265: MLOAD 00000266: PUSH3 0x461bcd 0000026a: PUSH1 0xe5 0000026c: SHL 0000026d: DUP2 0000026e: MSTORE 0000026f: PUSH1 0x20 00000271: PUSH1 0x04 00000273: DUP3 00000274: ADD 00000275: MSTORE 00000276: PUSH1 0x0c 00000278: PUSH1 0x24 0000027a: DUP3 0000027b: ADD 0000027c: MSTORE 0000027d: PUSH12 0x155b985d5d1a1bdc9a5e9959 0000028a: PUSH1 0xa2 0000028c: SHL 0000028d: PUSH1 0x44 0000028f: DUP3 00000290: ADD 00000291: MSTORE 00000292: PUSH1 0x64 00000294: ADD 00000295: PUSH2 0x0218 00000298: JUMP 00000299: JUMPDEST 0000029a: PUSH2 0x02b3 0000029d: DUP3 0000029e: DUP3 0000029f: PUSH1 0x40 000002a1: MLOAD 000002a2: DUP1 000002a3: PUSH1 0x20 000002a5: ADD 000002a6: PUSH1 0x40 000002a8: MSTORE 000002a9: DUP1 000002aa: PUSH1 0x00 000002ac: DUP2 000002ad: MSTORE 000002ae: POP 000002af: PUSH2 0x05fe 000002b2: JUMP 000002b3: JUMPDEST 000002b4: PUSH1 0x40 000002b6: DUP1 000002b7: MLOAD 000002b8: PUSH1 0x01 000002ba: PUSH1 0x01 000002bc: PUSH1 0xa0 000002be: SHL 000002bf: SUB 000002c0: DUP5 000002c1: AND 000002c2: DUP2 000002c3: MSTORE 000002c4: PUSH1 0x20 000002c6: DUP2 000002c7: ADD 000002c8: DUP4 000002c9: SWAP1 000002ca: MSTORE 000002cb: PUSH32 0xcb7f9c311b8ad4dfa64bb0b954da2b11b42672893b3e60d4c4f2958c89f00d1e 000002ec: SWAP2 000002ed: ADD 000002ee: PUSH1 0x40 000002f0: MLOAD 000002f1: DUP1 000002f2: SWAP2 000002f3: SUB 000002f4: SWAP1 000002f5: LOG1 000002f6: POP 000002f7: POP 000002f8: JUMP 000002f9: JUMPDEST 000002fa: CALLER 000002fb: PUSH1 0x00 000002fd: SWAP1 000002fe: DUP2 000002ff: MSTORE 00000300: PUSH1 0x20 00000302: DUP2 00000303: SWAP1 00000304: MSTORE 00000305: PUSH1 0x40 00000307: SWAP1 00000308: KECCAK256 00000309: SLOAD 0000030a: PUSH1 0xff 0000030c: AND 0000030d: PUSH2 0x0347 00000310: JUMPI 00000311: PUSH1 0x40 00000313: MLOAD 00000314: PUSH3 0x461bcd 00000318: PUSH1 0xe5 0000031a: SHL 0000031b: DUP2 0000031c: MSTORE 0000031d: PUSH1 0x20 0000031f: PUSH1 0x04 00000321: DUP3 00000322: ADD 00000323: MSTORE 00000324: PUSH1 0x0c 00000326: PUSH1 0x24 00000328: DUP3 00000329: ADD 0000032a: MSTORE 0000032b: PUSH12 0x155b985d5d1a1bdc9a5e9959 00000338: PUSH1 0xa2 0000033a: SHL 0000033b: PUSH1 0x44 0000033d: DUP3 0000033e: ADD 0000033f: MSTORE 00000340: PUSH1 0x64 00000342: ADD 00000343: PUSH2 0x0218 00000346: JUMP 00000347: JUMPDEST 00000348: PUSH1 0x03 0000034a: SLOAD 0000034b: PUSH1 0x01 0000034d: PUSH1 0x01 0000034f: PUSH1 0xa0 00000351: SHL 00000352: SUB 00000353: AND 00000354: PUSH2 0x039f 00000357: JUMPI 00000358: PUSH1 0x40 0000035a: MLOAD 0000035b: PUSH3 0x461bcd 0000035f: PUSH1 0xe5 00000361: SHL 00000362: DUP2 00000363: MSTORE 00000364: PUSH1 0x20 00000366: PUSH1 0x04 00000368: DUP3 00000369: ADD 0000036a: MSTORE 0000036b: PUSH1 0x11 0000036d: PUSH1 0x24 0000036f: DUP3 00000370: ADD 00000371: MSTORE 00000372: PUSH32 0x4d6967726174696f6e206e6f7420736574000000000000000000000000000000 00000393: PUSH1 0x44 00000395: DUP3 00000396: ADD 00000397: MSTORE 00000398: PUSH1 0x64 0000039a: ADD 0000039b: PUSH2 0x0218 0000039e: JUMP 0000039f: JUMPDEST 000003a0: PUSH1 0x03 000003a2: SLOAD 000003a3: PUSH1 0x40 000003a5: DUP1 000003a6: MLOAD 000003a7: PUSH1 0x20 000003a9: DUP2 000003aa: ADD 000003ab: SWAP1 000003ac: SWAP2 000003ad: MSTORE 000003ae: PUSH1 0x00 000003b0: DUP2 000003b1: MSTORE 000003b2: PUSH2 0x03c6 000003b5: SWAP2 000003b6: PUSH1 0x01 000003b8: PUSH1 0x01 000003ba: PUSH1 0xa0 000003bc: SHL 000003bd: SUB 000003be: AND 000003bf: SWAP1 000003c0: DUP4 000003c1: SWAP1 000003c2: PUSH2 0x05fe 000003c5: JUMP 000003c6: JUMPDEST 000003c7: POP 000003c8: JUMP 000003c9: JUMPDEST 000003ca: PUSH1 0x04 000003cc: SLOAD 000003cd: PUSH1 0x01 000003cf: PUSH1 0x01 000003d1: PUSH1 0xa0 000003d3: SHL 000003d4: SUB 000003d5: AND 000003d6: CALLER 000003d7: EQ 000003d8: PUSH2 0x0412 000003db: JUMPI 000003dc: PUSH1 0x40 000003de: MLOAD 000003df: PUSH3 0x461bcd 000003e3: PUSH1 0xe5 000003e5: SHL 000003e6: DUP2 000003e7: MSTORE 000003e8: PUSH1 0x20 000003ea: PUSH1 0x04 000003ec: DUP3 000003ed: ADD 000003ee: MSTORE 000003ef: PUSH1 0x0c 000003f1: PUSH1 0x24 000003f3: DUP3 000003f4: ADD 000003f5: MSTORE 000003f6: PUSH12 0x155b985d5d1a1bdc9a5e9959 00000403: PUSH1 0xa2 00000405: SHL 00000406: PUSH1 0x44 00000408: DUP3 00000409: ADD 0000040a: MSTORE 0000040b: PUSH1 0x64 0000040d: ADD 0000040e: PUSH2 0x0218 00000411: JUMP 00000412: JUMPDEST 00000413: PUSH2 0x041d 00000416: DUP4 00000417: DUP4 00000418: DUP4 00000419: PUSH2 0x05fe 0000041c: JUMP 0000041d: JUMPDEST 0000041e: PUSH1 0x40 00000420: DUP1 00000421: MLOAD 00000422: PUSH1 0x01 00000424: PUSH1 0x01 00000426: PUSH1 0xa0 00000428: SHL 00000429: SUB 0000042a: DUP6 0000042b: AND 0000042c: DUP2 0000042d: MSTORE 0000042e: PUSH1 0x20 00000430: DUP2 00000431: ADD 00000432: DUP5 00000433: SWAP1 00000434: MSTORE 00000435: PUSH32 0xcb7f9c311b8ad4dfa64bb0b954da2b11b42672893b3e60d4c4f2958c89f00d1e 00000456: SWAP2 00000457: ADD 00000458: PUSH1 0x40 0000045a: MLOAD 0000045b: DUP1 0000045c: SWAP2 0000045d: SUB 0000045e: SWAP1 0000045f: LOG1 00000460: POP 00000461: POP 00000462: POP 00000463: JUMP 00000464: JUMPDEST 00000465: PUSH1 0x02 00000467: SLOAD 00000468: PUSH1 0x01 0000046a: PUSH1 0x01 0000046c: PUSH1 0xa0 0000046e: SHL 0000046f: SUB 00000470: AND 00000471: CALLER 00000472: PUSH1 0x01 00000474: PUSH1 0x01 00000476: PUSH1 0xa0 00000478: SHL 00000479: SUB 0000047a: AND 0000047b: EQ 0000047c: PUSH2 0x04c7 0000047f: JUMPI 00000480: PUSH1 0x40 00000482: MLOAD 00000483: PUSH3 0x461bcd 00000487: PUSH1 0xe5 00000489: SHL 0000048a: DUP2 0000048b: MSTORE 0000048c: PUSH1 0x20 0000048e: PUSH1 0x04 00000490: DUP3 00000491: ADD 00000492: MSTORE 00000493: PUSH1 0x1c 00000495: PUSH1 0x24 00000497: DUP3 00000498: ADD 00000499: MSTORE 0000049a: PUSH32 0x556e617574686f72697a65642c20726567697374726172206f6e6c7900000000 000004bb: PUSH1 0x44 000004bd: DUP3 000004be: ADD 000004bf: MSTORE 000004c0: PUSH1 0x64 000004c2: ADD 000004c3: PUSH2 0x0218 000004c6: JUMP 000004c7: JUMPDEST 000004c8: PUSH1 0x02 000004ca: PUSH1 0x00 000004cc: SWAP1 000004cd: SLOAD 000004ce: SWAP1 000004cf: PUSH2 0x0100 000004d2: EXP 000004d3: SWAP1 000004d4: DIV 000004d5: PUSH1 0x01 000004d7: PUSH1 0x01 000004d9: PUSH1 0xa0 000004db: SHL 000004dc: SUB 000004dd: AND 000004de: PUSH1 0x01 000004e0: PUSH1 0x01 000004e2: PUSH1 0xa0 000004e4: SHL 000004e5: SUB 000004e6: AND 000004e7: PUSH4 0xe25629cb 000004ec: PUSH1 0x40 000004ee: MLOAD 000004ef: DUP2 000004f0: PUSH4 0xffffffff 000004f5: AND 000004f6: PUSH1 0xe0 000004f8: SHL 000004f9: DUP2 000004fa: MSTORE 000004fb: PUSH1 0x04 000004fd: ADD 000004fe: PUSH1 0x20 00000500: PUSH1 0x40 00000502: MLOAD 00000503: DUP1 00000504: DUP4 00000505: SUB 00000506: DUP2 00000507: DUP7 00000508: GAS 00000509: STATICCALL 0000050a: ISZERO 0000050b: DUP1 0000050c: ISZERO 0000050d: PUSH2 0x051a 00000510: JUMPI 00000511: RETURNDATASIZE 00000512: PUSH1 0x00 00000514: DUP1 00000515: RETURNDATACOPY 00000516: RETURNDATASIZE 00000517: PUSH1 0x00 00000519: REVERT 0000051a: JUMPDEST 0000051b: POP 0000051c: POP 0000051d: POP 0000051e: POP 0000051f: PUSH1 0x40 00000521: MLOAD 00000522: RETURNDATASIZE 00000523: PUSH1 0x1f 00000525: NOT 00000526: PUSH1 0x1f 00000528: DUP3 00000529: ADD 0000052a: AND 0000052b: DUP3 0000052c: ADD 0000052d: DUP1 0000052e: PUSH1 0x40 00000530: MSTORE 00000531: POP 00000532: DUP2 00000533: ADD 00000534: SWAP1 00000535: PUSH2 0x053e 00000538: SWAP2 00000539: SWAP1 0000053a: PUSH2 0x08f5 0000053d: JUMP 0000053e: JUMPDEST 0000053f: PUSH1 0x04 00000541: DUP1 00000542: SLOAD 00000543: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000558: NOT 00000559: AND 0000055a: PUSH1 0x01 0000055c: PUSH1 0x01 0000055e: PUSH1 0xa0 00000560: SHL 00000561: SUB 00000562: SWAP3 00000563: DUP4 00000564: AND 00000565: OR 00000566: SWAP1 00000567: SSTORE 00000568: PUSH1 0x02 0000056a: SLOAD 0000056b: PUSH2 0x0574 0000056e: SWAP2 0000056f: AND 00000570: PUSH2 0x0702 00000573: JUMP 00000574: JUMPDEST 00000575: JUMP 00000576: JUMPDEST 00000577: PUSH1 0x00 00000579: PUSH1 0x04 0000057b: PUSH1 0x00 0000057d: SWAP1 0000057e: SLOAD 0000057f: SWAP1 00000580: PUSH2 0x0100 00000583: EXP 00000584: SWAP1 00000585: DIV 00000586: PUSH1 0x01 00000588: PUSH1 0x01 0000058a: PUSH1 0xa0 0000058c: SHL 0000058d: SUB 0000058e: AND 0000058f: PUSH1 0x01 00000591: PUSH1 0x01 00000593: PUSH1 0xa0 00000595: SHL 00000596: SUB 00000597: AND 00000598: PUSH4 0xe335c8ca 0000059d: PUSH1 0x40 0000059f: MLOAD 000005a0: DUP2 000005a1: PUSH4 0xffffffff 000005a6: AND 000005a7: PUSH1 0xe0 000005a9: SHL 000005aa: DUP2 000005ab: MSTORE 000005ac: PUSH1 0x04 000005ae: ADD 000005af: PUSH1 0x20 000005b1: PUSH1 0x40 000005b3: MLOAD 000005b4: DUP1 000005b5: DUP4 000005b6: SUB 000005b7: DUP2 000005b8: DUP7 000005b9: GAS 000005ba: STATICCALL 000005bb: ISZERO 000005bc: DUP1 000005bd: ISZERO 000005be: PUSH2 0x05cb 000005c1: JUMPI 000005c2: RETURNDATASIZE 000005c3: PUSH1 0x00 000005c5: DUP1 000005c6: RETURNDATACOPY 000005c7: RETURNDATASIZE 000005c8: PUSH1 0x00 000005ca: REVERT 000005cb: JUMPDEST 000005cc: POP 000005cd: POP 000005ce: POP 000005cf: POP 000005d0: PUSH1 0x40 000005d2: MLOAD 000005d3: RETURNDATASIZE 000005d4: PUSH1 0x1f 000005d6: NOT 000005d7: PUSH1 0x1f 000005d9: DUP3 000005da: ADD 000005db: AND 000005dc: DUP3 000005dd: ADD 000005de: DUP1 000005df: PUSH1 0x40 000005e1: MSTORE 000005e2: POP 000005e3: DUP2 000005e4: ADD 000005e5: SWAP1 000005e6: PUSH2 0x05ef 000005e9: SWAP2 000005ea: SWAP1 000005eb: PUSH2 0x0912 000005ee: JUMP 000005ef: JUMPDEST 000005f0: PUSH2 0x05f9 000005f3: SWAP1 000005f4: SELFBALANCE 000005f5: PUSH2 0x092b 000005f8: JUMP 000005f9: JUMPDEST 000005fa: SWAP1 000005fb: POP 000005fc: SWAP1 000005fd: JUMP 000005fe: JUMPDEST 000005ff: DUP2 00000600: SELFBALANCE 00000601: LT 00000602: ISZERO 00000603: PUSH2 0x064e 00000606: JUMPI 00000607: PUSH1 0x40 00000609: MLOAD 0000060a: PUSH3 0x461bcd 0000060e: PUSH1 0xe5 00000610: SHL 00000611: DUP2 00000612: MSTORE 00000613: PUSH1 0x20 00000615: PUSH1 0x04 00000617: DUP3 00000618: ADD 00000619: MSTORE 0000061a: PUSH1 0x14 0000061c: PUSH1 0x24 0000061e: DUP3 0000061f: ADD 00000620: MSTORE 00000621: PUSH32 0x496e73756666696369656e742062616c616e6365000000000000000000000000 00000642: PUSH1 0x44 00000644: DUP3 00000645: ADD 00000646: MSTORE 00000647: PUSH1 0x64 00000649: ADD 0000064a: PUSH2 0x0218 0000064d: JUMP 0000064e: JUMPDEST 0000064f: PUSH1 0x00 00000651: DUP4 00000652: PUSH1 0x01 00000654: PUSH1 0x01 00000656: PUSH1 0xa0 00000658: SHL 00000659: SUB 0000065a: AND 0000065b: DUP4 0000065c: DUP4 0000065d: PUSH1 0x40 0000065f: MLOAD 00000660: PUSH2 0x0669 00000663: SWAP2 00000664: SWAP1 00000665: PUSH2 0x0952 00000668: JUMP 00000669: JUMPDEST 0000066a: PUSH1 0x00 0000066c: PUSH1 0x40 0000066e: MLOAD 0000066f: DUP1 00000670: DUP4 00000671: SUB 00000672: DUP2 00000673: DUP6 00000674: DUP8 00000675: GAS 00000676: CALL 00000677: SWAP3 00000678: POP 00000679: POP 0000067a: POP 0000067b: RETURNDATASIZE 0000067c: DUP1 0000067d: PUSH1 0x00 0000067f: DUP2 00000680: EQ 00000681: PUSH2 0x06a6 00000684: JUMPI 00000685: PUSH1 0x40 00000687: MLOAD 00000688: SWAP2 00000689: POP 0000068a: PUSH1 0x1f 0000068c: NOT 0000068d: PUSH1 0x3f 0000068f: RETURNDATASIZE 00000690: ADD 00000691: AND 00000692: DUP3 00000693: ADD 00000694: PUSH1 0x40 00000696: MSTORE 00000697: RETURNDATASIZE 00000698: DUP3 00000699: MSTORE 0000069a: RETURNDATASIZE 0000069b: PUSH1 0x00 0000069d: PUSH1 0x20 0000069f: DUP5 000006a0: ADD 000006a1: RETURNDATACOPY 000006a2: PUSH2 0x06ab 000006a5: JUMP 000006a6: JUMPDEST 000006a7: PUSH1 0x60 000006a9: SWAP2 000006aa: POP 000006ab: JUMPDEST 000006ac: POP 000006ad: POP 000006ae: SWAP1 000006af: POP 000006b0: DUP1 000006b1: PUSH2 0x06fc 000006b4: JUMPI 000006b5: PUSH1 0x40 000006b7: MLOAD 000006b8: PUSH3 0x461bcd 000006bc: PUSH1 0xe5 000006be: SHL 000006bf: DUP2 000006c0: MSTORE 000006c1: PUSH1 0x20 000006c3: PUSH1 0x04 000006c5: DUP3 000006c6: ADD 000006c7: MSTORE 000006c8: PUSH1 0x14 000006ca: PUSH1 0x24 000006cc: DUP3 000006cd: ADD 000006ce: MSTORE 000006cf: PUSH32 0x4661696c656420746f2073656e64204574686572000000000000000000000000 000006f0: PUSH1 0x44 000006f2: DUP3 000006f3: ADD 000006f4: MSTORE 000006f5: PUSH1 0x64 000006f7: ADD 000006f8: PUSH2 0x0218 000006fb: JUMP 000006fc: JUMPDEST 000006fd: POP 000006fe: POP 000006ff: POP 00000700: POP 00000701: JUMP 00000702: JUMPDEST 00000703: DUP1 00000704: PUSH1 0x01 00000706: PUSH1 0x01 00000708: PUSH1 0xa0 0000070a: SHL 0000070b: SUB 0000070c: AND 0000070d: PUSH4 0xda91d796 00000712: PUSH1 0x40 00000714: MLOAD 00000715: DUP2 00000716: PUSH4 0xffffffff 0000071b: AND 0000071c: PUSH1 0xe0 0000071e: SHL 0000071f: DUP2 00000720: MSTORE 00000721: PUSH1 0x04 00000723: ADD 00000724: PUSH1 0x20 00000726: PUSH1 0x40 00000728: MLOAD 00000729: DUP1 0000072a: DUP4 0000072b: SUB 0000072c: DUP2 0000072d: DUP7 0000072e: GAS 0000072f: STATICCALL 00000730: ISZERO 00000731: DUP1 00000732: ISZERO 00000733: PUSH2 0x0740 00000736: JUMPI 00000737: RETURNDATASIZE 00000738: PUSH1 0x00 0000073a: DUP1 0000073b: RETURNDATACOPY 0000073c: RETURNDATASIZE 0000073d: PUSH1 0x00 0000073f: REVERT 00000740: JUMPDEST 00000741: POP 00000742: POP 00000743: POP 00000744: POP 00000745: PUSH1 0x40 00000747: MLOAD 00000748: RETURNDATASIZE 00000749: PUSH1 0x1f 0000074b: NOT 0000074c: PUSH1 0x1f 0000074e: DUP3 0000074f: ADD 00000750: AND 00000751: DUP3 00000752: ADD 00000753: DUP1 00000754: PUSH1 0x40 00000756: MSTORE 00000757: POP 00000758: DUP2 00000759: ADD 0000075a: SWAP1 0000075b: PUSH2 0x0764 0000075e: SWAP2 0000075f: SWAP1 00000760: PUSH2 0x08f5 00000763: JUMP 00000764: JUMPDEST 00000765: PUSH1 0x01 00000767: DUP1 00000768: SLOAD 00000769: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000077e: NOT 0000077f: AND 00000780: PUSH1 0x01 00000782: PUSH1 0x01 00000784: PUSH1 0xa0 00000786: SHL 00000787: SUB 00000788: SWAP3 00000789: SWAP1 0000078a: SWAP3 0000078b: AND 0000078c: SWAP2 0000078d: SWAP1 0000078e: SWAP2 0000078f: OR 00000790: SWAP1 00000791: SSTORE 00000792: POP 00000793: JUMP 00000794: JUMPDEST 00000795: PUSH1 0x01 00000797: PUSH1 0x01 00000799: PUSH1 0xa0 0000079b: SHL 0000079c: SUB 0000079d: DUP2 0000079e: AND 0000079f: DUP2 000007a0: EQ 000007a1: PUSH2 0x03c6 000007a4: JUMPI 000007a5: PUSH1 0x00 000007a7: DUP1 000007a8: REVERT 000007a9: JUMPDEST 000007aa: PUSH1 0x00 000007ac: PUSH1 0x20 000007ae: DUP3 000007af: DUP5 000007b0: SUB 000007b1: SLT 000007b2: ISZERO 000007b3: PUSH2 0x07bb 000007b6: JUMPI 000007b7: PUSH1 0x00 000007b9: DUP1 000007ba: REVERT 000007bb: JUMPDEST 000007bc: DUP2 000007bd: CALLDATALOAD 000007be: PUSH2 0x07c6 000007c1: DUP2 000007c2: PUSH2 0x0794 000007c5: JUMP 000007c6: JUMPDEST 000007c7: SWAP4 000007c8: SWAP3 000007c9: POP 000007ca: POP 000007cb: POP 000007cc: JUMP 000007cd: JUMPDEST 000007ce: PUSH1 0x00 000007d0: DUP1 000007d1: PUSH1 0x40 000007d3: DUP4 000007d4: DUP6 000007d5: SUB 000007d6: SLT 000007d7: ISZERO 000007d8: PUSH2 0x07e0 000007db: JUMPI 000007dc: PUSH1 0x00 000007de: DUP1 000007df: REVERT 000007e0: JUMPDEST 000007e1: DUP3 000007e2: CALLDATALOAD 000007e3: PUSH2 0x07eb 000007e6: DUP2 000007e7: PUSH2 0x0794 000007ea: JUMP 000007eb: JUMPDEST 000007ec: SWAP5 000007ed: PUSH1 0x20 000007ef: SWAP4 000007f0: SWAP1 000007f1: SWAP4 000007f2: ADD 000007f3: CALLDATALOAD 000007f4: SWAP4 000007f5: POP 000007f6: POP 000007f7: POP 000007f8: JUMP 000007f9: JUMPDEST 000007fa: PUSH1 0x00 000007fc: PUSH1 0x20 000007fe: DUP3 000007ff: DUP5 00000800: SUB 00000801: SLT 00000802: ISZERO 00000803: PUSH2 0x080b 00000806: JUMPI 00000807: PUSH1 0x00 00000809: DUP1 0000080a: REVERT 0000080b: JUMPDEST 0000080c: POP 0000080d: CALLDATALOAD 0000080e: SWAP2 0000080f: SWAP1 00000810: POP 00000811: JUMP 00000812: JUMPDEST 00000813: PUSH4 0x4e487b71 00000818: PUSH1 0xe0 0000081a: SHL 0000081b: PUSH1 0x00 0000081d: MSTORE 0000081e: PUSH1 0x41 00000820: PUSH1 0x04 00000822: MSTORE 00000823: PUSH1 0x24 00000825: PUSH1 0x00 00000827: REVERT 00000828: JUMPDEST 00000829: PUSH1 0x00 0000082b: DUP1 0000082c: PUSH1 0x00 0000082e: PUSH1 0x60 00000830: DUP5 00000831: DUP7 00000832: SUB 00000833: SLT 00000834: ISZERO 00000835: PUSH2 0x083d 00000838: JUMPI 00000839: PUSH1 0x00 0000083b: DUP1 0000083c: REVERT 0000083d: JUMPDEST 0000083e: DUP4 0000083f: CALLDATALOAD 00000840: PUSH2 0x0848 00000843: DUP2 00000844: PUSH2 0x0794 00000847: JUMP 00000848: JUMPDEST 00000849: SWAP3 0000084a: POP 0000084b: PUSH1 0x20 0000084d: DUP5 0000084e: ADD 0000084f: CALLDATALOAD 00000850: SWAP2 00000851: POP 00000852: PUSH1 0x40 00000854: DUP5 00000855: ADD 00000856: CALLDATALOAD 00000857: PUSH8 0xffffffffffffffff 00000860: DUP1 00000861: DUP3 00000862: GT 00000863: ISZERO 00000864: PUSH2 0x086c 00000867: JUMPI 00000868: PUSH1 0x00 0000086a: DUP1 0000086b: REVERT 0000086c: JUMPDEST 0000086d: DUP2 0000086e: DUP7 0000086f: ADD 00000870: SWAP2 00000871: POP 00000872: DUP7 00000873: PUSH1 0x1f 00000875: DUP4 00000876: ADD 00000877: SLT 00000878: PUSH2 0x0880 0000087b: JUMPI 0000087c: PUSH1 0x00 0000087e: DUP1 0000087f: REVERT 00000880: JUMPDEST 00000881: DUP2 00000882: CALLDATALOAD 00000883: DUP2 00000884: DUP2 00000885: GT 00000886: ISZERO 00000887: PUSH2 0x0892 0000088a: JUMPI 0000088b: PUSH2 0x0892 0000088e: PUSH2 0x0812 00000891: JUMP 00000892: JUMPDEST 00000893: PUSH1 0x40 00000895: MLOAD 00000896: PUSH1 0x1f 00000898: DUP3 00000899: ADD 0000089a: PUSH1 0x1f 0000089c: NOT 0000089d: SWAP1 0000089e: DUP2 0000089f: AND 000008a0: PUSH1 0x3f 000008a2: ADD 000008a3: AND 000008a4: DUP2 000008a5: ADD 000008a6: SWAP1 000008a7: DUP4 000008a8: DUP3 000008a9: GT 000008aa: DUP2 000008ab: DUP4 000008ac: LT 000008ad: OR 000008ae: ISZERO 000008af: PUSH2 0x08ba 000008b2: JUMPI 000008b3: PUSH2 0x08ba 000008b6: PUSH2 0x0812 000008b9: JUMP 000008ba: JUMPDEST 000008bb: DUP2 000008bc: PUSH1 0x40 000008be: MSTORE 000008bf: DUP3 000008c0: DUP2 000008c1: MSTORE 000008c2: DUP10 000008c3: PUSH1 0x20 000008c5: DUP5 000008c6: DUP8 000008c7: ADD 000008c8: ADD 000008c9: GT 000008ca: ISZERO 000008cb: PUSH2 0x08d3 000008ce: JUMPI 000008cf: PUSH1 0x00 000008d1: DUP1 000008d2: REVERT 000008d3: JUMPDEST 000008d4: DUP3 000008d5: PUSH1 0x20 000008d7: DUP7 000008d8: ADD 000008d9: PUSH1 0x20 000008db: DUP4 000008dc: ADD 000008dd: CALLDATACOPY 000008de: PUSH1 0x00 000008e0: PUSH1 0x20 000008e2: DUP5 000008e3: DUP4 000008e4: ADD 000008e5: ADD 000008e6: MSTORE 000008e7: DUP1 000008e8: SWAP6 000008e9: POP 000008ea: POP 000008eb: POP 000008ec: POP 000008ed: POP 000008ee: POP 000008ef: SWAP3 000008f0: POP 000008f1: SWAP3 000008f2: POP 000008f3: SWAP3 000008f4: JUMP 000008f5: JUMPDEST 000008f6: PUSH1 0x00 000008f8: PUSH1 0x20 000008fa: DUP3 000008fb: DUP5 000008fc: SUB 000008fd: SLT 000008fe: ISZERO 000008ff: PUSH2 0x0907 00000902: JUMPI 00000903: PUSH1 0x00 00000905: DUP1 00000906: REVERT 00000907: JUMPDEST 00000908: DUP2 00000909: MLOAD 0000090a: PUSH2 0x07c6 0000090d: DUP2 0000090e: PUSH2 0x0794 00000911: JUMP 00000912: JUMPDEST 00000913: PUSH1 0x00 00000915: PUSH1 0x20 00000917: DUP3 00000918: DUP5 00000919: SUB 0000091a: SLT 0000091b: ISZERO 0000091c: PUSH2 0x0924 0000091f: JUMPI 00000920: PUSH1 0x00 00000922: DUP1 00000923: REVERT 00000924: JUMPDEST 00000925: POP 00000926: MLOAD 00000927: SWAP2 00000928: SWAP1 00000929: POP 0000092a: JUMP 0000092b: JUMPDEST 0000092c: DUP1 0000092d: DUP3 0000092e: ADD 0000092f: DUP1 00000930: DUP3 00000931: GT 00000932: ISZERO 00000933: PUSH2 0x094c 00000936: JUMPI 00000937: PUSH4 0x4e487b71 0000093c: PUSH1 0xe0 0000093e: SHL 0000093f: PUSH1 0x00 00000941: MSTORE 00000942: PUSH1 0x11 00000944: PUSH1 0x04 00000946: MSTORE 00000947: PUSH1 0x24 00000949: PUSH1 0x00 0000094b: REVERT 0000094c: JUMPDEST 0000094d: SWAP3 0000094e: SWAP2 0000094f: POP 00000950: POP 00000951: JUMP 00000952: JUMPDEST 00000953: PUSH1 0x00 00000955: DUP3 00000956: MLOAD 00000957: PUSH1 0x00 00000959: JUMPDEST 0000095a: DUP2 0000095b: DUP2 0000095c: LT 0000095d: ISZERO 0000095e: PUSH2 0x0973 00000961: JUMPI 00000962: PUSH1 0x20 00000964: DUP2 00000965: DUP7 00000966: ADD 00000967: DUP2 00000968: ADD 00000969: MLOAD 0000096a: DUP6 0000096b: DUP4 0000096c: ADD 0000096d: MSTORE 0000096e: ADD 0000096f: PUSH2 0x0959 00000972: JUMP 00000973: JUMPDEST 00000974: POP 00000975: PUSH1 0x00 00000977: SWAP3 00000978: ADD 00000979: SWAP2 0000097a: DUP3 0000097b: MSTORE 0000097c: POP 0000097d: SWAP2 0000097e: SWAP1 0000097f: POP 00000980: JUMP 00000981: INVALID 00000982: LOG2 00000983: PUSH5 0x6970667358 00000989: UNKNOWN(0x22) 0000098a: SLT 0000098b: KECCAK256 0000098c: PUSH19 0x95ca239db31c40b64f215f3e6436ec10566642 000009a0: PUSH32
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x958ac6fd4683724063f38305db38b00b862e973218ae10629a9cd60321f9f88b
call_targets:
0x1ca9db430401ce71d6da53cd571035e210e6c9fe
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x958ac6fd4683724063f38305db38b00b862e973218ae10629a9cd60321f9f88b",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x1ca9db430401ce71d6da53cd571035e210e6c9fe"
],
"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": "0xd54fb850",
"selector": "0xd54fb850",
"calldata_variants": [
"0xd54fb850",
"0xd54fb8500000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe26db6fc",
"selector": "0xe26db6fc",
"calldata_variants": [
"0xe26db6fc",
"0xe26db6fc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf38a3f84",
"selector": "0xf38a3f84",
"calldata_variants": [
"0xf38a3f84",
"0xf38a3f840000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8555d03c",
"selector": "0x8555d03c",
"calldata_variants": [
"0x8555d03c",
"0x8555d03c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb1957e5d",
"selector": "0xb1957e5d",
"calldata_variants": [
"0xb1957e5d",
"0xb1957e5d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0f2ad452",
"selector": "0x0f2ad452",
"calldata_variants": [
"0x0f2ad452",
"0x0f2ad4520000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x223eb640",
"selector": "0x223eb640",
"calldata_variants": [
"0x223eb640",
"0x223eb6400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4d3f7334",
"selector": "0x4d3f7334",
"calldata_variants": [
"0x4d3f7334",
"0x4d3f73340000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1654,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [],
"untrusted_call_count": 1
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x958ac6fd4683724063f38305db38b00b862e973218ae10629a9cd60321f9f88b
call_targets:
0x1ca9db430401ce71d6da53cd571035e210e6c9fe
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x958ac6fd4683724063f38305db38b00b862e973218ae10629a9cd60321f9f88b",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x1ca9db430401ce71d6da53cd571035e210e6c9fe"
],
"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": "0xd54fb850",
"selector": "0xd54fb850",
"calldata_variants": [
"0xd54fb850",
"0xd54fb8500000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe26db6fc",
"selector": "0xe26db6fc",
"calldata_variants": [
"0xe26db6fc",
"0xe26db6fc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf38a3f84",
"selector": "0xf38a3f84",
"calldata_variants": [
"0xf38a3f84",
"0xf38a3f840000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8555d03c",
"selector": "0x8555d03c",
"calldata_variants": [
"0x8555d03c",
"0x8555d03c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb1957e5d",
"selector": "0xb1957e5d",
"calldata_variants": [
"0xb1957e5d",
"0xb1957e5d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0f2ad452",
"selector": "0x0f2ad452",
"calldata_variants": [
"0x0f2ad452",
"0x0f2ad4520000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x223eb640",
"selector": "0x223eb640",
"calldata_variants": [
"0x223eb640",
"0x223eb6400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4d3f7334",
"selector": "0x4d3f7334",
"calldata_variants": [
"0x4d3f7334",
"0x4d3f73340000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1654,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": []
}
|