

Archon public report
ApogeeEscrow
Mantle Mainnet · scan depth deep · generated 7/3/2026, 10:42:43 AM
Risk Score
41
Archon completed a read-only Mantle Mainnet audit of ApogeeEscrow and found 8 deterministic findings. The highest-priority issue is Reentrancy Events, with risk score 41/100 based on severity-weighted findings. Potential reentrancy issue due to external call before state change. Review the recommended fixes and run regression tests before deployment.
Models used: Tencent Cloud TokenHub (deepseek-v4-pro), OpenAI (gpt-4o-mini) — AI reasoning served on Tencent Cloud TokenHub.
Findings
| Severity | Finding | Location | Confidence |
|---|---|---|---|
| low | Reentrancy Events Potential reentrancy issue due to external call before state change. | ApogeeEscrow.sol:90 | 80% |
| info | Low Level Calls The use of low-level calls can introduce risks such as reentrancy attacks. | ApogeeEscrow.sol:90 | 70% |
| low | Immutable States The `arbiter` address is set once during construction and cannot be updated. If the arbiter becomes compromised, unreachable, or is an EOA that loses its private key, the arbitration functionality becomes permanently unavailable, potentially locking the escrow in a disputed state. | ApogeeEscrow.sol:14 | 70% |
| low | Immutable States The `buyer` and `seller` addresses are immutable once set in the constructor. This design is intentional for a simple escrow, but it means that a mis‑deployed contract (wrong address) or future identity loss cannot be corrected. Funds may become stuck if the designated receiver is inaccessible. | ApogeeEscrow.sol:13 | 60% |
| low | Immutable States Immutable States was detected from deterministic analysis at ApogeeEscrow.sol:12. The issue should be reviewed because it can affect contract correctness, user balances, or operational cost depending on how the function is used. | ApogeeEscrow.sol:12 | 74% |
| medium | Pack small storage variables into fewer slots Storage variables can be packed to optimize gas usage. | ApogeeEscrow.sol:14 | 70% |
| info | Replace long revert string with custom error The revert string "Seller cannot be buyer" in the constructor is replaced with a custom error to reduce deployment gas costs on Mantle. | ApogeeEscrow.sol:49 | 90% |
| info | Use != 0 for unsigned non-zero checks Replace `msg.value > 0` with `msg.value != 0` for unsigned integer comparison to save gas on Mantle. | ApogeeEscrow.sol:58 | 95% |

