03 · Aomi Fuzz for Arc Studio

Break the contract before users do.

Connect an Arc Studio app. Aomi attacks its compiled Solidity on a held Arc fork, minimizes any property violation, and reports it only after two clean replays.

Status
Live
Target
Arc Studio apps
Engine
Aomi + evm-sim
Effect
Simulation only
01

Campaign flow

From Studio artifact to verified finding.

01
Connect Arc Studio

Authorize the web app, then select the app and compiled contract to test.

Input: Studio app
02
Seal the artifact

Mint a 30-minute link containing exactly one contract's source, ABI, and runtime bytecode.

Bounded HTTPS link
03
Map the attack surface

The model proposes actors, properties, and ordered action templates.

Threat plan
04
Attack a held Arc fork

evm-sim installs code and executes multi-actor transaction sequences against pinned state.

No broadcast
05
Minimize and replay

The app shrinks a violation to its shortest reproduction and replays it twice from baseline.

2× confirmation
06
Return the finding

Only a reproducible violation becomes a finding that can be sent back to Arc Studio for a fix.

Output: evidence
02

Ownership

Separate imagination from execution facts.

The model ownsThe threat model, actors, properties, and action templates.
The Aomi app ownsThe breadth-first frontier, deduplication, minimization, and two-replay promotion rule.
evm-sim ownsThe fork lifetime, installed code, ordered calls, balances, return data, and engine errors.
The builder ownsThe target contract, remediation decision, and anything later signed or deployed.
03

Finding standard

Evidence before severity.

Isolated

Held Arc fork

Every campaign runs on pinned simulation state. Nothing is signed, deployed, or broadcast.

Minimal

Shortest reproduction

Failing traces are reduced so builders see the smallest sequence that still violates the property.

Verified

Two clean replays

A violation that cannot reproduce twice remains unconfirmed and is not promoted to a finding.

Current boundary: the fuzzer installs runtime bytecode, so constructor-initialized state is not reproduced yet. Prefer deployed-instance fuzzing when constructor state is material.