Limits
A clean report means these checks found nothing.
It does not mean there is nothing to find. The distance between those two is where people get hurt.
The four big ones
Logic behind a proxy.
A forwarding stub is all there is to scan. The useful answer is one address away, and the report says so instead of reporting a clean scan.
Who holds a role.
Roles live in grant-event history this engine does not read. “We could not determine who controls this” is an open question, never an all-clear.
Intent.
A mint function is a capability, not a plan. Every stablecoin has one. Any report implying otherwise would be a bug.
Source against bytecode.
That needs a verification service this does not integrate. A report tells you what code is deployed, never whether it matches a repository.
Per check
Every finding carries its own limits inline. The blind spot travels with the answer.
- contract.exists
- Is there a contract at this address, and how large is its code?
- proxy.detect
- Does this contract hold its own logic, or forward to logic held elsewhere?
- token.identity
- What does this contract call itself, and how much of it exists?
- erc8056.multiplier
- Does the meaning of a balance here change without the balance changing?
- code.provenance
- What exactly is this code, and was it the same a short while ago?
- proxy.blast
- If the logic can be replaced, what else is replaced at the same time?
- admin.authority
- Who is able to change this contract, and is that a person or a contract?
- powers.selectors
- What powers are compiled into the code at this address?
Limits of the infrastructure
Historical state is short-lived. The public endpoints for this chain keep roughly the last ten thousand blocks and refuse anything older. That means the check asking “was this code the same recently” often cannot be answered at all, and it means re-verifying a report that is more than a few hours old needs an archive node. Both are reported as what they are — a limit of the endpoint — rather than as a finding about the contract.
Function detection has false negatives. Checks read the selectors compiled into bytecode. A function reachable through a dispatch mechanism this scan does not model would not appear, which is why a negative result is always phrased as “not found in this bytecode” and never as “does not exist”.
Counts of what shares a beacon are floors. To say how many contracts share an upgrade switch, we compare against the published asset list for this chain. Contracts outside that list could also share it and would not be counted.
One chain. Robinhood Chain (4663) and nothing else. The engine is chain-agnostic and adding one is configuration, but shipping one chain that works beats four that half-work.
Rate limiting is per instance. It shapes ordinary traffic; it is not a security control, and nothing behind it is privileged enough to need one.
What to do with a report you do not trust
Re-run it. The verifier re-executes every recorded call from your browser against an endpoint you choose, and nothing on that page reaches our servers. Scepticism about this tool is correct and the tool is built to reward it.