Protocols, as they happen
Each card re-folds the touched bucket the moment a block lands. The number is the selected window; the sparkline is the last 3 hours in one-minute buckets. Expand a chart (⤢) for 48 hours of minutes or 90 days of hours, with pan and zoom.
USDC itself
Net issuance per bucket transfer kind 4
Volume moved per bucket envelope · CALL · precompile
Active & first-seen addresses account_diff
USDC on Arc, provably counted.
Every number is a fold over a fact log written by a replay of Arc whose semantics are specified in Lean 4, recomputed as blocks land. Each window states its block range, the state roots checked in it, a digest of the fact-log shards behind it, and oracle checks against the chain's own answers.
Provenance
- blocks
- —
- time (UTC)
- —
- txs folded
- —
- state roots
- —
- fact log
- —
- replay
- —
Oracle checks on this window
- computing…
Supply
Arc's USDC is the gas token and is minted and burned only through the 0x1800…0000 native precompile. The ledger is the set of those precompile transfers with a zero party; the oracles above reconcile it against our own TOTAL_SUPPLY storage slot and the chain's totalSupply().
Net issuance per bucket
Cumulative Δ supply
Minters
| minter | mints | minted | burns | burned |
|---|
Holders & volume
An address is active in a bucket when its native balance changed; first seen when its pre-balance was zero and it had never appeared before. Volume counts envelope, CALL and precompile transfers between two non-zero parties.
Active & first-seen addresses
USDC moved
Fees & activity
Arc burns nothing: gas × effective price goes to the block's proposer. Base fee is the chain's own EMA controller, re-derived block by block.
Fees paid
Base fee & gas used
Transactions & success rate
Fee share per proposer
| proposer | fees | share |
|---|
Protocols
Every registered protocol (scripts/arc-protocols.json: confirmed addresses, event signatures re-hashed and checked against the logs the contracts emit), folded live as blocks land: transactions to its contracts, distinct senders, logs from its contracts and the pools its factories created, native USDC in and out, swaps and their USDC leg.
| protocol | category | txs | users ≈ | logs | USDC in | USDC out | swaps | USDC volume | top events |
|---|---|---|---|---|---|---|---|---|---|
| waiting for the live feed… | |||||||||
Over the window
The same cells as series, at minute resolution up to 24 h and hourly beyond.
Transactions per protocol
Uniswap v4 swaps
Swap; USDC leg = |amount0| on pools whose currency0 is native (from Initialize)Other DEX swaps
Swap logs of Uniswap v2/v3 and their forks (Aero Lite, Archery, …); pools from each factory's creation event over the full log; USDC leg = |amount| of the USDC sideCCTP v2 USDC bridged
DepositForBurn.amount (out) · MintAndWithdraw.amount (in)ERC-20 transfers
Transfer logs of the registered tokens; holders touched is a HyperLogLog (≈)| token | transfers | volume | holders touched ≈ |
|---|
Lending & prices
State registers, not flows: Morpho Blue market totals are read off the market struct's storage slots (layout verified against the fact log), collateral moves off its events, prices off Chainlink's AnswerUpdated. Live, as the replay advances.
A live formula
Registered on the server as a node of the dependency graph: recomputed only when one of its columns changes, and every client sees it update. Expand the chart for its 48 h / 90 d history.
This page
Supply, holders, volume, fees, protocols and lending on Arc mainnet, live, with provenance and oracle checks per window. The fact log and the folds are open source.
- Fact-log schema and reader:
scripts/factlog-reader.lisp - Live engine and folds:
scripts/arc-live.py - Root checkpoints:
scripts/snapshot-root.lisp
Your metric, as a Lean spec
Describe the metric; a coding agent writes it as a fold over the fact log in Lean, the fold is checked against the spec, and the executable is derived from it — then it runs over the full chain and stays current. Something like:
def feesPerActiveAddr (w : Window) : ℚ :=
(w.txs.map (fun t => t.gasUsed * t.egp)).sum
/ (w.accountDiffs.filter (·.balanceChanged)).map (·.addr) |>.dedup.length
as-of queries, custom buckets, your contracts' events, reproducible from the shard hash on every row.