Quorum

Six readings.
Two per risk.

A single detector that reports everything it sees is noise. Six of them are six times the noise. Quorum pairs its lenses two per risk, and each pair reasons from different evidence.

quorum run

Agreement is signal.
$ quorum run --targets fixtures/VulnerableVault.sol fixtures/OpenFeeSetter.sol
  QUORUM    VulnerableVault.sol:withdraw   reentrancy   corroborated by callorder-lens, guard-lens
  QUORUM    OpenFeeSetter.sol:setFeeRate   unguarded-state-write   corroborated by modifier-lens, sender-lens
scanned 12 lens-units | confirmed 2 | recalled 1 | candidates 5

What a lens may not do

No lens can publish a finding on its own. A lens records what it saw and reads nothing about what its peers saw; the tally of who agreed lives on the finding in memory, not inside any agent. A second lens that reaches the same (contract, function, risk) from a different reading is what turns a sighting into a finding.

The lenses are deliberately simple. They are regex-and-brace-matching heuristics over source text, not a compiler front end. The point of this project is the coordination and memory layer; the lenses are the honest minimum needed to have something real to coordinate about.

callorder-lens

reentrancy

An external call precedes a state write in the same function.

Evidence
call ordering

guard-lens

reentrancy

The function moves value out and carries no reentrancy guard.

Evidence
guard absence

On audited production code

Run Quorum against audited production contracts and it mostly holds its tongue. On Aerodrome’s Router, WETH9 and a Compound proxy it confirms nothing and files fourteen candidates. That is the intended behaviour, not a failure to find bugs.

Disagreement is kept as a candidate and never published.

modifier-lens

unguarded-state-write

Externally callable, writes storage, carries no modifier at all.

Evidence
declaration

sender-lens

unguarded-state-write

Writes a privileged-looking variable with no msg.sender check anywhere on the path.

Evidence
reachability

Not a vulnerability scanner that proves exploits

Quorum publishes corroborated idioms worth review, not confirmed vulnerabilities. A quorum means two independent lenses agreed on a shape, nothing more. The Friend.tech recall on the front page is a pattern match on a call idiom, not an allegation about that contract.

The fixtures in fixtures/ are vulnerable on purpose and are not deployed anywhere.

wrap-lens

unsafe-math

The compiler lets this storage arithmetic wrap: a pre-0.8 pragma, or an unchecked block.

Evidence
compiler context

bound-lens

unsafe-math

Nothing in the function bounds the operands before the write.

Evidence
guard absence

Where the count lives

Corroboration is accumulated across lenses, processes and sessions on the finding entity in the WARM tier. A lens has no idea who else agreed with it; memory does.

The memory
PreviousFront pageNextThe memory