BatchPayArcArc Testnet / 5042002Open app
PROTOCOL / 00—06

One list.A chain of proofs.

BatchPayArc is a non-custodial browser interface for resumable, multi-transaction USDC payouts on Arc Testnet. It deploys no custom contract and runs no payment backend.

01 / EXECUTION FLOW

From CSV to verified receipts.

Every boundary is explicit: local planning, wallet authorization, transaction-local atomicity, then event-level verification.

  1. 01

    Compose

    Enter at least two recipients or import a UTF-8 CSV. Addresses, amounts, precision, totals, and duplicates are checked locally.

  2. 02

    Plan

    The ordered list becomes deterministic chunks of at most 100 transfers, with no fixed total-recipient ceiling imposed by BatchPayArc.

  3. 03

    Preflight

    A new run checks contract bytecode. Before every signature, BatchPayArc simulates aggregate3, estimates gas, and re-checks the wallet, chain, and USDC balance.

  4. 04

    Sign

    Your injected EOA wallet signs each chunk. BatchPayArc never receives a private key and never signs or relays a transaction for you.

  5. 05

    Verify

    The receipt must succeed and contain the exact expected USDC Transfer events before the next chunk can begin.

  6. 06

    Resume

    The versioned local checkpoint identifies the first unfinished chunk. Verified transactions are final and are never replayed by the resume flow.

02 / TRANSACTION PATH

The wallet remains the sender.

01

Injected EOA wallet

Reviews and signs one aggregate transaction per chunk.

02

Local run ledger

Stores the fixed run plan and transaction checkpoints.

03

Multicall3From

Routes every encoded transfer through Arc's CallFrom precompile.

04

USDC + receipt proof

Transfers execute, then exact ERC-20 events are reconciled.

CALL SHAPEUSDC.transfer(recipient, amount6) → Multicall3From.aggregate3(calls) → allowFailure: false → native value: 0

CallFrom preserves the original EOA as msg.sender for each USDC subcall. BatchPayArc does not call the precompile directly.

03 / CONTRACT SURFACE

Two direct contracts. No custom deployment.

Addresses below are Arc Testnet predeploys verified against the official Arc documentation on 15 July 2026.

What is not used: the standard Multicall3 at 0xcA11…CA11, Permit2, approvals, transferFrom, a relayer, or a BatchPayArc smart contract. The native system USDC emitter is also excluded from receipt counts to avoid double-counting.

04 / ATOMICITY

Atomic per transaction, resumable per run.

Every subcall uses allowFailure: false. If transfer 73 fails, that entire chunk reverts. Earlier verified chunks remain final and later chunks are not attempted.

FULL LISTN → ≤100One wallet approval · one hash · one atomic boundary per chunk
05 / LOCAL RECOVERY

Progress lives in this browser.

Plans, attempts, hashes, and receipt checkpoints are stored in localStorage. The data is unencrypted, origin-specific, and never synchronized across browsers or devices.

  • Verified chunks are never replayed
  • Submitted hashes are reconciled before retry
  • Ambiguous no-hash attempts require manual review
06 / Arc Testnet

Network configuration.

Chain ID
5042002 / 0x4CEF52
Gas asset
Native USDC / 18 decimals
Payment interface
USDC ERC-20 / 6 decimals
Minimum base fee
20 Gwei on testnet
Block capacity
30M gas / block
Explorer
testnet.arcscan.app
OFFICIAL SOURCES

Read the Arc documentation.