1,000,000 free RPC requestsJust a wallet, via x402.

Start building
ERC-8004 Explorer by
Mantle Mainnet risk:24 verified

Feedback #23

For agent 97 on Mantle Mainnet · 2026-06-21

archon.audit.report
100.0

Off-chain feedback document

raw JSON
{
  "chain": {
    "name": "Mantle Mainnet",
    "chainId": 5000
  },
  "report": {
    "id": "961554a8-40e1-47ed-ade0-b8206f5a42d6",
    "scope": {
      "pragma": "^0.8.24",
      "network": "mantle-mainnet",
      "lineCount": 203,
      "protocols": [
        "mETH",
        "cmETH",
        "USDY",
        "Aave V3",
        "Merchant Moe",
        "Agni"
      ],
      "sourceKind": "paste",
      "aiReasoning": {
        "hits": 0,
        "total": 3,
        "misses": 3,
        "batches": 2,
        "reasons": {},
        "skipped": 0,
        "enriched": 3,
        "provider": "tokenhub",
        "timeoutMs": 75000,
        "fallbackCount": 0,
        "providersUsed": [
          "Tencent Cloud TokenHub (deepseek-v4-pro)"
        ]
      },
      "reducedMode": {
        "detail": "Command failed: slither packages/contracts/src/core/EscrowManager.sol --solc solc --solc-args --base-path /tmp/archon-scan-73a1b771-d348-4a2d-8e21-248b69ee143b-fYOCdJ --allow-paths /tmp/archon-scan-73a1b771-d348-4a2d-8e21-248b69ee143b-fYOCdJ --solc-remaps @ope",
        "reason": "External imports could not be resolved.",
        "unresolvedImports": [
          "openzeppelin/4/contracts/access/Ownable2Step.sol",
          "openzeppelin/4/contracts/token/ERC20/IERC20.sol",
          "openzeppelin/4/contracts/token/ERC20/utils/SafeERC20.sol",
          "openzeppelin/4/contracts/utils/Pausable.sol",
          "openzeppelin/4/contracts/utils/ReentrancyGuard.sol",
          "@openzeppelin/contracts/access/Ownable2Step.sol",
          "@openzeppelin/contracts/token/ERC20/IERC20.sol",
          "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
          "@openzeppelin/contracts/utils/Pausable.sol",
          "@openzeppelin/contracts/utils/ReentrancyGuard.sol"
        ]
      },
      "solcVersion": "0.8.24",
      "gasOptimizer": {
        "pricing": {
          "mode": "calibrated-receipts",
          "pricedAt": "2026-06-21T13:57:00.093Z",
          "l2GasPriceWei": "50000100000",
          "deployDataFeeMnt": "0.028611639396043532",
          "deployDataFeeWei": "28611639396043532",
          "calldataZeroBytes": 391,
          "calibrationErrorPct": 0,
          "calldataGasEstimate": 125836,
          "calldataNonZeroBytes": 7767,
          "creationBytecodeBytes": 8158
        },
        "daPricing": {
          "model": {
            "mode": "calibrated-receipts",
            "samples": [
              {
                "txHash": "0x82d99588e5f1bff33d618743025d598445493032637de25844a67aa8e88088ef",
                "l1FeeWei": "699231354481640",
                "l1GasUsed": "2530",
                "zeroBytes": 135,
                "l1GasPrice": "538782662",
                "totalBytes": 228,
                "blobGasUsed": "63200",
                "blockNumber": "96205628",
                "nonZeroBytes": 93,
                "l1BlobBaseFee": "330004069609410902",
                "l1BaseFeeScalar": "169019",
                "operatorFeeScalar": "100000000",
                "calldataGasEstimate": 2028,
                "l1BlobBaseFeeScalar": "0",
                "operatorFeeConstant": "0",
                "daFootprintGasScalar": "400"
              },
              {
                "txHash": "0xb9ce87de86b212b91eb64012bbdab91014373da1f6d960470b340e1991a1a7c5",
                "l1FeeWei": "6874261528561290",
                "l1GasUsed": "22258",
                "zeroBytes": 28,
                "l1GasPrice": "603039864",
                "totalBytes": 1945,
                "blobGasUsed": "556400",
                "blockNumber": "96205472",
                "nonZeroBytes": 1917,
                "l1BlobBaseFee": "321479049246759320",
                "l1BaseFeeScalar": "169019",
                "operatorFeeScalar": "100000000",
                "calldataGasEstimate": 30784,
                "l1BlobBaseFeeScalar": "0",
                "operatorFeeConstant": "0",
                "daFootprintGasScalar": "400"
              }
            ],
            "validation": [
              {
                "txHash": "0x82d99588e5f1bff33d618743025d598445493032637de25844a67aa8e88088ef",
                "errorPct": 0,
                "actualL1FeeWei": "699231354481640",
                "predictedL1FeeWei": "699231354481572"
              },
              {
                "txHash": "0xb9ce87de86b212b91eb64012bbdab91014373da1f6d960470b340e1991a1a7c5",
                "errorPct": 0,
                "actualL1FeeWei": "6874261528561290",
                "predictedL1FeeWei": "6874261528560500"
              }
            ],
            "sampleCount": 2,
            "zeroByteFeeWei": "2736708878864",
            "nonZeroByteFeeWei": "3545974793924",
            "maxValidationErrorPct": 0,
            "meanValidationErrorPct": 0
          },
          "source": "receipt-calibrated",
          "groundTruthField": "l1Fee"
        },
        "sourceHash": "0xf57bfa65c64195b3c9a5ded0db49d7b380344d748bd3efe75838a2af18d4986d",
        "measurement": {
          "forge": {
            "ok": false,
            "error": "Reduced mode: external imports unresolved.",
            "command": null,
            "attempted": false,
            "gasReport": null
          },
          "source": "deterministic-estimate",
          "status": "skipped",
          "patches": [],
          "version": "archon.gasMeasurement.v1",
          "measuredAt": "2026-06-21T13:57:00.335Z",
          "rulesetHash": "reduced-mode",
          "contractHash": "f57bfa65c64195b3c9a5ded0db49d7b380344d748bd3efe75838a2af18d4986d"
        },
        "opportunities": [
          {
            "id": "immutable-constant",
            "file": "EscrowManager.sol",
            "after": "address constant owner = agentRegistry.ownerOf(escrow.agentId);",
            "patch": {
              "newText": "        address constant owner = agentRegistry.ownerOf(escrow.agentId);",
              "oldText": "        address owner = agentRegistry.ownerOf(escrow.agentId);"
            },
            "title": "Mark never-changing value constant or immutable",
            "where": "EscrowManager.sol:140",
            "before": "address owner = agentRegistry.ownerOf(escrow.agentId);",
            "safety": "review",
            "newText": "        address constant owner = agentRegistry.ownerOf(escrow.agentId);",
            "oldText": "        address owner = agentRegistry.ownerOf(escrow.agentId);",
            "category": "storage",
            "severity": "info",
            "lineStart": 140,
            "rationale": "Constants/immutables avoid storage reads for values that do not change after deployment.",
            "confidence": 0.62,
            "estL1Delta": null,
            "estL2Delta": 2100,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 2100,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "cache-repeated-sload",
            "file": "EscrowManager.sol",
            "after": "uint256 cached = _escrows[escrowId]; // reuse cached value",
            "patch": {
              "newText": "_escrows[escrowId]",
              "oldText": "_escrows[escrowId]"
            },
            "title": "Cache repeated storage read",
            "where": "EscrowManager.sol:69",
            "before": "_escrows[escrowId] read 2 times",
            "safety": "review",
            "newText": "_escrows[escrowId]",
            "oldText": "_escrows[escrowId]",
            "category": "storage",
            "severity": "info",
            "lineStart": 69,
            "rationale": "Repeated SLOADs should be cached in stack/memory when state cannot change between reads.",
            "confidence": 0.7,
            "estL1Delta": null,
            "estL2Delta": 100,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 100,
            "estimatedDataBytesSaved": null
          }
        ]
      }
    },
    "scanId": "73a1b771-d348-4a2d-8e21-248b69ee143b",
    "createdAt": "2026-06-21T13:57:49.010Z",
    "riskScore": 24,
    "contractName": "Agora_Escrow_Manager",
    "severityCounts": {
      "low": 0,
      "high": 0,
      "info": 2,
      "medium": 1,
      "critical": 0
    },
    "executiveSummary": "Archon completed a read-only Mantle Mainnet audit of Agora_Escrow_Manager and found 3 deterministic findings. The highest-priority issue is Timestamp-sensitive settlement lacks explicit tolerance window, with risk score 24/100 based on severity-weighted findings. The deadline check uses exact `block.timestamp` comparison, which can cause transactions to revert even if they are submitted very close to the deadline due to slight block timing variations. Without a tolerance window (e.g., a few seconds), legitimate user actions near the expiry may reliably fail. Review the recommended fixes and run regression tests before deployment. External imports could not be resolved (openzeppelin/4/contracts/access/Ownable2Step.sol, openzeppelin/4/contracts/token/ERC20/IERC20.sol, openzeppelin/4/contracts/token/ERC20/utils/SafeERC20.sol, openzeppelin/4/contracts/utils/Pausable.sol, openzeppelin/4/contracts/utils/ReentrancyGuard.sol, @openzeppelin/contracts/access/Ownable2Step.sol, @openzeppelin/contracts/token/ERC20/IERC20.sol, @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol, @openzeppelin/contracts/utils/Pausable.sol, @openzeppelin/contracts/utils/ReentrancyGuard.sol); static analysis ran in reduced mode, so Slither/import-dependent checks were skipped while Archon's deterministic rules still ran."
  },
  "schema": "archon.proof.metadata.v1",
  "erc8004": {
    "verifiedConfig": true,
    "agentIdentityRef": "eip155:5000:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432:97",
    "identityRegistry": "0x8004A169FB4a3325136EB29fA0ceB6D2e539a432",
    "reputationRegistry": "0x8004BAa17C55a88189AE136b182e5fdA19dE9b63",
    "validationRegistry": null
  },
  "product": "Archon",
  "findings": [
    {
      "id": "b5869396-1e65-4a38-ba58-656e3c97cc58",
      "title": "Timestamp-sensitive settlement lacks explicit tolerance window",
      "category": "mantle-timestamp-assumption",
      "location": {
        "file": "EscrowManager.sol",
        "lineEnd": null,
        "lineStart": 62
      },
      "severity": "medium"
    },
    {
      "id": "e641486f-5d36-4275-91ee-6dd645f95d24",
      "title": "Mark never-changing value constant or immutable",
      "category": "mantle-gas-optimizer/storage/immutable-constant",
      "location": {
        "file": "EscrowManager.sol",
        "lineEnd": 140,
        "lineStart": 140
      },
      "severity": "info"
    },
    {
      "id": "ccddd224-93de-4789-911b-a5b885bd86e5",
      "title": "Cache repeated storage read",
      "category": "mantle-gas-optimizer/storage/cache-repeated-sload",
      "location": {
        "file": "EscrowManager.sol",
        "lineEnd": 69,
        "lineStart": 69
      },
      "severity": "info"
    }
  ]
}
source URI: ipfs://QmdY3Ycb1fB9QFmPmQT2jLqhUap6dBjpgi4exWeAb9HJuN