Security triage of a live BSC contract
A high-stakes triage on a contract with real money behind it, chosen because it is genuinely privileged rather than because it flatters either arm — BSC-USD is upgradeable-adjacent, owner-controlled and holds billions. Both arms answer at the same block. The agent reads deployed bytecode and storage slots; the manual arm may use any tool, including BscScan and the verified source, which is an advantage the agent does not have. FALSIFIED IF: the agent reports a privilege the contract does not have, or misses one that a reader of the verified source finds in the manual arm.
The task, frozen before any answer existed
0xfb984f660bd387cae77e9805404f4b8ef52b8aadddc72cbfc08af6991156ac81input hash 0x069277c6f5acf9de1818249a7e53d4cddd3f5c89c2790af4fa2eba5877b7b450rubric 1.0 0xe7bb4e109246cb9cc4d83f2eadc43fe2be59d6caecfa740a8a7725eff103dbfd, registered 2026-09-05 07:13:09ZTriage the BNB Smart Chain contract 0x55d398326f99059fF775485246999027B3197955 for the risks that would affect someone holding or approving this token. Chain: BNB Smart Chain (56). Block: 120123441. Cover, at minimum: whether the contract is upgradeable and by whom; whether a privileged party can mint, pause, blacklist or change fees; and what a holder is exposed to if that party is compromised. For every claim, say how you established it. State explicitly what your method cannot see.
The rubric
Registered before either arm ran, and version-hashed so it cannot be quietly rewritten once the answers are in. Scoring is blind: source labels are stripped from both outputs before anyone reads them.
| Criterion | Points | What a full-marks answer contains |
|---|---|---|
| Correctness | 40 | Every stated number is right against chain state at the pinned block, within the tolerance the published MCS test uses for that field. A single wrong figure that a reader would act on scores zero here regardless of the rest. |
| Completeness | 15 | Every field the task asked for is present. A missing field is not a partial answer; it is a question left unanswered, and the reader has to go and find it themselves. |
| Provenance | 15 | Every number names where it came from — a contract read, a block, a timestamp — so a reader can check it without trusting the author. An unsourced figure scores zero on this criterion even when it is correct. |
| Actionability | 15 | The output can be executed as written: the amounts are in the right units, the ticks are legal, the venue is named, the risks that would stop execution are stated. A correct analysis that cannot be acted on is a report, not a decision. |
| Stated limits | 15 | The answer says what it does not know, what it assumed, and what would change the conclusion. Confidence unearned by evidence is penalised here; so is hedging that avoids committing to a number the task asked for. |
| Total | 100 |
The agent arm
Redcell · repetition 1
0xfc187e377ad14fa2d1cdf1d6463ea8226d8e9b624dc69c288bdf428c28ab7f1emanifest hash 0x36a7b8f9fd3fe899e9f91155a77e993aa5c991f91966ca1705a7f423154098ceblock 120077702 · ran 2026-09-05 08:21:42ZMEASURED445 ms. wall clock around the public HTTPS request, measured with performance.now(); includes TLS, the reverse proxy and the SSRF guard because a buyer waits for those too
Cost — gas $0.0000, model $0.0000, agent fee $0.0000, human time n/a.
{
"owner": "0xF68a4b64162906efF0fF6aE34E2bB1Cd42FEf62d",
"proxy": {
"admin": null,
"beacon": null,
"isProxy": false,
"implementation": null
},
"method": "deployed bytecode selector scan plus EIP-1967/1822 storage slots and view calls, read on-chain",
"paused": null,
"readAt": "2026-09-05T08:21:42.153Z",
"symbol": "USDT",
"address": "0x55d398326f99059fF775485246999027B3197955",
"verdict": "0 critical, 1 high, 1 medium",
"approval": null,
"codeSize": 4413,
"findings": [
{
"title": "Someone can create new tokens.",
"source": "onchain",
"summary": "The deployed bytecode dispatches mint(uint256).",
"category": "supply-control",
"severity": "high",
"dedupeKey": "2218600a625095d3",
"confidence": 0.85,
"recommendedFix": "Establish who may call mint(uint256) and under what delay. The function existing is not the problem; an unaccountable caller is.",
"exploitScenario": "Supply can be increased after you buy, diluting every existing holder."
},
{
"title": "A single owner address holds privileged control",
"source": "onchain",
"summary": "owner() returns 0xF68a4b64162906efF0fF6aE34E2bB1Cd42FEf62d.",
"category": "privilege",
"severity": "medium",
"dedupeKey": "09aa7b11bb632c5a",
"confidence": 0.95,
"recommendedFix": "Check whether that address is an externally owned account, a multisig or a timelock. An EOA owner is the weakest of the three by a wide margin.",
"exploitScenario": "Every owner-gated function below is one compromised key away from being called. The concentration is the risk, not any individual function."
}
],
"isContract": true,
"blockNumber": "120077702",
"limitations": [
"Selector presence is read from the deployed dispatcher. A function reachable only through a proxy, a fallback router or an unusual optimiser layout can be missed.",
"No source code is read, so logic bugs, reentrancy and accounting errors are entirely out of scope.",
"A clean result means nothing was found by this method. It never means the contract is safe."
],
"severityCounts": {
"low": 0,
"high": 1,
"info": 0,
"medium": 1,
"critical": 0
}
}Redcell · repetition 2
0x7cfa1b0a30af2dd507aa9034bdece220cec703cef157cfcaf846abfeb93dd55bmanifest hash 0x38cc08d70b8ad4fbaf196e8389e78d1f144f5828f78cab3baa2ec70a84f1edf4block 120077704 · ran 2026-09-05 08:21:42ZMEASURED112 ms. wall clock around the public HTTPS request, measured with performance.now(); includes TLS, the reverse proxy and the SSRF guard because a buyer waits for those too
Cost — gas $0.0000, model $0.0000, agent fee $0.0000, human time n/a.
{
"owner": "0xF68a4b64162906efF0fF6aE34E2bB1Cd42FEf62d",
"proxy": {
"admin": null,
"beacon": null,
"isProxy": false,
"implementation": null
},
"method": "deployed bytecode selector scan plus EIP-1967/1822 storage slots and view calls, read on-chain",
"paused": null,
"readAt": "2026-09-05T08:21:42.364Z",
"symbol": "USDT",
"address": "0x55d398326f99059fF775485246999027B3197955",
"verdict": "0 critical, 1 high, 1 medium",
"approval": null,
"codeSize": 4413,
"findings": [
{
"title": "Someone can create new tokens.",
"source": "onchain",
"summary": "The deployed bytecode dispatches mint(uint256).",
"category": "supply-control",
"severity": "high",
"dedupeKey": "2218600a625095d3",
"confidence": 0.85,
"recommendedFix": "Establish who may call mint(uint256) and under what delay. The function existing is not the problem; an unaccountable caller is.",
"exploitScenario": "Supply can be increased after you buy, diluting every existing holder."
},
{
"title": "A single owner address holds privileged control",
"source": "onchain",
"summary": "owner() returns 0xF68a4b64162906efF0fF6aE34E2bB1Cd42FEf62d.",
"category": "privilege",
"severity": "medium",
"dedupeKey": "09aa7b11bb632c5a",
"confidence": 0.95,
"recommendedFix": "Check whether that address is an externally owned account, a multisig or a timelock. An EOA owner is the weakest of the three by a wide margin.",
"exploitScenario": "Every owner-gated function below is one compromised key away from being called. The concentration is the risk, not any individual function."
}
],
"isContract": true,
"blockNumber": "120077704",
"limitations": [
"Selector presence is read from the deployed dispatcher. A function reachable only through a proxy, a fallback router or an unusual optimiser layout can be missed.",
"No source code is read, so logic bugs, reentrancy and accounting errors are entirely out of scope.",
"A clean result means nothing was found by this method. It never means the contract is safe."
],
"severityCounts": {
"low": 0,
"high": 1,
"info": 0,
"medium": 1,
"critical": 0
}
}The manual arm
Not run yet. A human analyst runs this arm by hand, with a timer and a screen recording, and pastes the result into the intake — which hashes it into the manifest exactly as the agent’s answer was hashed. Until both arms exist there is no comparison here, and none is shown. Simulating this arm would be trivial and would make every number on this page worthless.
Outstanding
- 2 manual repetitions, run by hand with a stopwatch