The safety layer for USDC payments on Arc.
A USDC payment on Arc can fail at four points: when the contract is written, when it ships, while it runs on the chain, and when a user signs. Lunua is one engine applied at each of them. The first two are live today.
The engine stays the same throughout: eth_call simulation with state overrides, bytecode analysis, replay at block N−1, impact-based severity and reproducible proofs.
Detect, explain and gate
Shipped
- Scanner for deployed or undeployed bytecode (detectors LUN-01 to LUN-05)
- Failed-transaction forensics: replay, counterfactual on the ERC-20 rail, signable fix
- CLI deploy gate (exit 1 on demonstrated blocking findings) and Foundry reproductions
- AI-agent skill that makes a passing check a precondition for any Arc deploy
- PreflightRegistry on Arc mainnet, attestations pinned to
extcodehash
Evidence
Live at lunua.vercel.app. Generated reproductions pass on an Arc mainnet fork (arc-forge test --network arc). It correctly explains a real mainnet failure (Breadchain, 2 Oct).
Signal of success
Teams using it before launch
Wherever Arc contracts are built
What ships
- GitHub Action: one line in CI, fails the job on a demonstrated blocking finding, posts the report on the PR
- Integration with Arc Studio and coding agents so generated contracts are checked before deployment
- Direct outreach to teams already affected (e.g. Breadchain issue #48)
Why it matters
Most new Arc contracts will be written with AI assistance. Models learned Ethereum semantics, so the defect is the default.
Signal of success
External repos gating CI on Lunua
Every new contract, attested
What ships
- A watcher that analyses each contract deployed on Arc and writes the result to PreflightRegistry
- Public dashboard of findings across the ecosystem
- A
status(attester, target)integration path for explorers, indexers and wallets
Why it matters
It turns a per-team tool into a public good: any app can check a counterparty contract before routing USDC to it.
Signal of success
Share of new contracts analysed · registry readers
Checked before the user signs
What ships
- Wallet guard as a MetaMask Snap (transaction insight): simulates the pending send with the same engine
- When a native send would revert, it offers the ERC-20 rail (
transferorapprove → deposit) in one step - Registry lookup shown inline: known-bad contracts flagged before signing
Why it matters
This is where users feel the failure today: a bare "Failed" and lost gas. Fixing it at signing time protects people who never read a report.
Signal of success
Failed native sends prevented
Detectors that grow with Arc
Next detector surfaces
- Arc Privacy Sector (opt-in confidential execution)
- Memo and Multicall3From sender attribution
- EURC and StableFX settlement flows
- Blocklist-revert handling and the 20 gwei fee floor
- Source-level checks:
msg.valueagainst 6-dp amounts
Principle
Each documented Arc difference becomes a detector with a live proof. Severity is assigned only from demonstrated impact.
Signal of success
Coverage of Arc's documented EVM differences
Sustainability
free where it protects usersFree
Public scanner, transaction forensics, the registry and the wallet guard.
Paid
Private-repo CI, private reports, and pre-audit screening for audit firms.
Grants
The microgrant funds RPC capacity for the chain-wide watcher, gas for registry attestations and hosting. The Circle Grant Program is the next step.