The Arc stack
Thenar pays people per robot run and sells what they record to AI agents. On Arc that is one token and one transaction: USDC is the escrow, the payout and the gas, a run is final when its block lands, and an agent pays for data in the HTTP request that fetches it. The core loop needs only the first two rows; the rest extend it across chains and identities, and none of them can stop a run from being paid. Configuration and current reads are shown below. Earlier network proofs, local fork checks and untested integrations are kept distinct; a deployed contract alone is not evidence of a completed flow.
USDC gas, sub-second finality
Earlier live proof
Bounties, payouts, licences and gas are one token. A run is paid in the transaction that records it, and Arc's deterministic finality makes that payout final when the block lands — the station shows the measured time.
gas and payouts in USDC · final on inclusion
Verified: Current mainnet state is shown above. Earlier transaction-flow verification is documented in the repository.
x402 in USDC
Earlier live proof
An AI agent asks for a task's corpus, is answered 402, signs an EIP-3009 transferWithAuthorization ("USDC"/"2") and gets the file in the same request. Thenar settles it with an in-process facilitator; every sale goes to SalesLog with the sha256 served.
reading…
Verified: Current mainnet state is shown above. Earlier transaction-flow verification is documented in the repository.
ERC-8004
Fork
Built so the verifier is an agent in Arc's Identity Registry and every verdict that moved money is written to the Reputation Registry (runVerdict, feedbackHash = run id) by ThenarVerdicts; buyer agents can rate it (corpusQuality) and are logged by agent id. The current registration and reputation counts are read below.
reading…
Verified: Current mainnet state is shown above. Earlier transaction-flow verification is documented in the repository.
Arc Memo
Fork
A run is submitted through Arc's Memo predeploy with memoId = the run id, so the payout carries what it paid for; the protocol still sees the operator as msg.sender (CallFrom). Where a node doesn't execute CallFrom, the run goes out plain.
reading…
Verified: Current mainnet state is shown above. Earlier transaction-flow verification is documented in the repository.
CCTP V2
Fork
Operators withdraw earnings to Base, Ethereum or Arbitrum from /portfolio: a depositForBurn on Arc, Circle's Iris attests, receiveMessage mints native USDC there.
reading…
Verified: Current mainnet state is shown above. Earlier transaction-flow verification is documented in the repository.
Chainlink CCIP (+ CCTP)
Fork
A buyer agent on Base or Ethereum licenses a corpus on Arc in one transaction: CCTP moves the USDC to ThenarCcipReceiver, CCIP carries the order, the receiver pays licensePolicyFor and every operator. Allowlisted senders, failed messages kept for retry.
reading…
Verified: Current mainnet state is shown above. Earlier transaction-flow verification is documented in the repository.
Circle Gateway
Not run
Opt-in (NEXT_PUBLIC_FEATURE_GATEWAY=1): a sponsor's unified USDC balance on another chain funds a bounty — a signed burn intent, Circle attests, gatewayMint on Arc — then the task is posted gaslessly with EIP-3009.
reading…
Verified: Current mainnet state is shown above. Earlier transaction-flow verification is documented in the repository.
P-256 passkeys
Fork
An operator registers a passkey on chain (PasskeyRegistry). The verifier signs only for admitted addresses, and a passkey-authorised run (submitTrajectoryWithPasskey) is checked by Arc's P-256 precompile at 0x0100.
precompile reading on /network
Verified: Current mainnet state is shown above. Earlier transaction-flow verification is documented in the repository.
Arc · paused
waiting for a block
- A block every
- …
- Finalized tag behind head
- …
- Final on inclusion
- …
- Gas paid in
- USDC
Details
Read live from Arc’s public RPC. The interval is measured from the chain’s own timestamps over the last few dozen blocks; each read also asks for the finalized block and compares it with the head. Arc’s finality is deterministic: a block is final when it is made, so a run is paid and settled in the block that records it, with nothing to wait for after.