Documentation
How Brc Exchange
works
The full reference for traders and integrators: the Arc network, swaps and concentrated liquidity, the USDC bridge, the cross-chain USDC market, and BRC staking.
network: "Arc"
chain_id: 5042
gas_token: "USDC (native, 18 dec)"
usdc_erc20: "0x3600…0000 (6 dec)"
explorer: "arc-scan.io"
settlement: "canonical USDC only"
custody: null
read on-chain, not from a feed
Overview
Brc Exchange is a decentralised exchange suite built on Arc, Circle's USDC-native mainnet. Everything on the platform settles in canonical USDC — no wrapped assets, no synthetic stand-ins — and every product is non-custodial: your funds sit in audited pool, escrow, or position contracts that only your wallet can move.
The suite is five products that share one design:
| Product | What it does | Status |
|---|---|---|
| Swap | Trade BRC and USDC through concentrated-liquidity pools with on-chain quotes. | Live |
| Liquidity | Provide liquidity into price ranges you choose and earn the pool's trading fees. | Live |
| Bridge | Move USDC between Ethereum, Base, Avalanche and Arc over Circle's own Gateway and CCTP rails. | Awaiting Circle |
| USDC Market | An order-book market for Arc USDC against Base USDC, settled by cross-chain proof. | Live |
| Arc Tools — Disperse | Send a token to up to 500 wallets per transaction. | Live |
| Arc Tools — Token Lock | Time-lock tokens with a cliff or staged release schedule. | Live |
| Earn | Stake BRC through lock options and earn BRC rewards. | Interface preview |
Getting started
Add the Arc network
Use the Add Arc button in the status bar (visible when a browser wallet is installed), or add it manually:
| Parameter | Value |
|---|---|
| Network name | Arc |
| Chain id | 5042 |
| Native currency | USDC (18 decimals) |
| Explorer | arc-scan.io |
The two USDCs — read this once
Arc has two distinct USDC assets and confusing them is the most common integration mistake:
- Native gas USDC — 18 decimals, pays transaction gas, what your wallet shows as the account balance.
- ERC-20 USDC — 6 decimals, at
0x3600…0000, what pools, the bridge and the market actually trade.
Gas on Arc is cheap; a fraction of a cent of native USDC covers many transactions. Bridged arrivals through the relayer need no gas at all — see Bridge.
Swap
Swap trades through concentrated-liquidity pools (Uniswap v3 architecture) deployed on Arc. Quotes are computed on-chain against the live pool state — never from an off-chain price feed — so the number you see is the number the router will execute at, within your slippage tolerance.
How a swap executes
- 1
Quote
The app reads the pool across every fee tier (1%, 0.3%, 0.05%, 0.01%) and routes through the deepest one.
- 2
Approve
First trade of a token grants the router an allowance — one transaction, once per token.
- 3
Swap
The router executes against the pool. If the price moves beyond your slippage setting mid-flight, the transaction reverts rather than filling badly.
Slippage and price impact
Slippage tolerance is configurable per-trade (the gear icon). Price impact shown on the form is the difference between the mid-price and your effective execution price — on a thin pool a large order can move the price substantially; the form warns you before you sign.
Liquidity
Liquidity positions are concentrated ranges: instead of spreading your capital across every price from zero to infinity, you choose the band where it works. Inside the band your capital earns the pool's trading fees; outside it, the position sits idle in a single asset until price returns.
Opening a position
- 1
Pick the pair and fee tier
The form shows which tiers already have liquidity and which pools exist. Deeper tiers earn steadier fees; exotic tiers may earn more per trade.
- 2
Choose a range
Presets (±10%, ±25%, ±50%), full range, or custom bounds. Tighter ranges are more capital-efficient but fall out of range sooner.
- 3
Deposit both tokens
The form computes the exact token split your range needs at the current price and mints the position.
Managing positions
Each position is an NFT in your wallet. The Liquidity page reads them directly from chain: current value, in-range status, and uncollected fees per position. You can collect fees, add liquidity, or withdraw at any time — closed positions stay listed (toggle to hide) so history never silently disappears.
Earn
Interface previewEarn is BRC single-asset staking: stake BRC, accrue BRC from the emissions budget, claim whenever you like. Four options trade lock time against APR:
| Option | Lock | APR | Pool cap |
|---|---|---|---|
| 01 — Flexible | None, withdraw any time | 18% | Uncapped |
| 02 — Starter | 7 days | 35% | 10,000,000 BRC |
| 03 — Builder | 30 days | 60% | 25,000,000 BRC |
| 04 — Diamond | 90 days | 120% | 50,000,000 BRC |
Rewards accrue per block — no epochs, no snapshots. Accrued rewards are claimable at any time; the staked principal unlocks when the option's lock ends (immediately, for Flexible).
Bridge
Awaiting CircleThe Bridge moves USDC between Ethereum, Base, Avalanche and Arc over Circle's own infrastructure, so what arrives is canonical USDC — not a wrapped claim on a third-party bridge. Two rails are offered:
Gateway — deposit once, draw instantly
Gateway holds your USDC in a shared Circle balance. You deposit on a source chain, then draw the balance onto Arc by signing an off-chain burn intent — free to sign, instant to settle. The deposited balance is reusable, so repeat transfers skip the deposit step. The Balance Lock card on the Bridge page shows your undrawn Gateway balance across all four chains.
CCTP — burn and mint, native
CCTP burns USDC on the source chain and mints it natively on Arc after Circle attests the burn. One transfer, one burn, no shared balance. Fast-finality attestation is used where available (~20 seconds on Base; minutes elsewhere).
The relayer
For both rails the final mint on Arc is submitted by the site's relayer, which pays the Arc gas — you never need Arc gas to receive funds. If the relayer is ever offline, a manual mint path exists on the Bridge page: your attestation is yours, and anyone can submit it.
USDC Market
The USDC Market trades Arc USDC against Base USDC. On paper they are the same dollar; in practice Circle's canonical route out of Arc is whitelisted, so Arc USDC trades at a premium to Base USDC. The market gives that premium a public order book instead of an OTC chat.
This is not a bridge. No wrapped or synthetic token is ever created. Each side of a trade keeps its own chain's real USDC, and the market holds no inventory of its own.
What Wormhole is used for
Two chains cannot see each other. When you pay on Base, Arc has no way of knowing it happened. Wormhole solves that one problem: it is a network of 19 independent validators that watch chains and sign statements about what they saw. Your payment gets a signed proof, and that proof is what the Arc side accepts as evidence.
To be precise about what that does and does not mean:
- Wormhole never holds your money. It carries a signed message, not funds.
- Each proof is signed independently by at least 13 of the 19 validators. No single party can produce one.
- A proof names its recipient, so a settled trade can only ever pay the address written inside it.
Buying Arc USDC
You pay in Base USDC and receive Arc USDC. You will not need Arc gas.
- 1
Pick an order and enter an amount
The panel shows the price, the platform fee and the total before you commit to anything.
- 2
Sign in once
Your wallet asks for a signature confirming the wallet is yours. It is free, costs no gas, and authorises no transaction. One signature covers the next 24 hours.
- 3
Approve and pay
Approve the USDC spend if you have not already, then sign the payment. That is the only transaction you sign.
- 4
Wait about a minute
The validators sign the proof and your Arc USDC arrives automatically. You can close the tab; the trade finishes on its own.
You may hold up to three unfinished orders at a time. Completing one frees a slot immediately.
Selling Arc USDC
Post your own offer at a rate you choose, and it appears in the book straight away. Or sell into an existing buy order at its posted rate, which commits your USDC for a limited window while the buyer pays; if they never do, you take it back yourself once the window closes.
Cancelling an offer takes one transaction, with no waiting period. The part nobody is currently buying returns to you immediately. A portion someone is actively paying for stays put until that purchase completes or their window closes. That is deliberate, and it is the same rule protecting you when you are the buyer.
What the statuses mean
| Status | Meaning |
|---|---|
| Awaiting Arc | Paid on Base, waiting for the signed proof. Normally under two minutes. |
| Received | Your Arc USDC has arrived. |
| Completed | A sale that has settled. |
| Rejected | The payment went through but its proof does not match the order it claims to pay for, so it can never settle. Not reachable through this interface. |
Every row links to both transactions, on Base and on Arc, so you can verify any trade yourself on a block explorer.
Arc Tools
Two single-purpose utility contracts, both stateless and non-custodial: no owner, no admin functions, no balance held between transactions. Both accept the native gas USDC or any ERC-20 on Arc.
Disperse — one transaction, many wallets
Airdrops, payroll, rewards: send a token to up to 500 recipients per transaction. Longer lists split into batches automatically.
- 1
Pick the token
Gas · USDC (the native 18-decimal gas token) or Custom — paste any ERC-20 contract address and the symbol and decimals are read on-chain.
- 2
Paste the list
One recipient per line: address then amount, separated by a space, comma, or equals sign. Invalid lines are flagged with the reason and skipped — never silently dropped.
- 3
Review and sign
The preview shows every parsed recipient, the total, and the transaction count. ERC-20s need one approval covering all batches, then one transaction per 500 wallets.
Token Lock — cliff or staged release
Lock tokens until a date — team allocations, LP proof, vesting. Two release shapes, chosen at creation and immutable afterwards:
- All at once — nothing is claimable before the unlock date, everything is after it.
- In equal stages — the amount splits into equal tranches, one unlocking per interval. Locking 100 BRC for 60 days with a 10-day interval makes 6 tranches of ~16.66 BRC. The duration must divide evenly by the interval.
- 1
Pick token, amount, and recipient
Lock for your own wallet or for another address — the recipient set at creation is the only address a claim can ever pay.
- 2
Choose the schedule
A preset or custom duration, then either a single unlock date or a release interval in days.
- 3
Sign the lock
Approve (ERC-20 only), then lock. From this moment nobody — including you — can shorten, cancel, or redirect it.
- 4
Claim as it unlocks
Each stage becomes claimable on schedule. Claims are cumulative: skipped stages accumulate and can be collected together in one transaction.
Fees
| Product | Fee | Goes to |
|---|---|---|
| Swap | Pool fee tier: 0.01% / 0.05% / 0.3% / 1% per trade | Liquidity providers of that pool |
| Liquidity | None to open or close; gas only | — |
| Bridge — Gateway | Flat per source: 0.01 USDC (Base), 0.02 USDC (Avalanche), 1.00 USDC (Ethereum) | Relayer, covers the Arc mint gas |
| Bridge — CCTP | No protocol fee; per-transfer cap applies while lanes open | — |
| USDC Market | 2.5% of the Base-side payment, paid by the buyer of Arc USDC | Protocol |
| Arc Tools — Disperse / Token Lock | None; network gas only | — |
| Earn | None to stake or claim (preview) | — |
Gas on Arc is paid in native USDC and is fractions of a cent. Bridged arrivals and market claims are relayed, so the receiving side pays no gas at all.
Contracts
Core contracts on Arc (chain id 5042). Always verify against this page before integrating — addresses are also linked from each product's UI.
| Contract | Address |
|---|---|
| Pool factory | 0xf0db7b58379503491d857dB50AC9ece64c653918 |
| Swap router | 0x53BF6B0684Ec7eF91e1387Da3D1a1769bC5A6F77 |
| Position manager (LP NFTs) | 0x39654a85a4c05127f5fd6ed22caec077a0fb1377 |
| USDC (ERC-20, 6 decimals) | 0x3600000000000000000000000000000000000000 |
| BRC token | 0x11c87c506acf3ea0799f8717127fe55a184f8efd |
| Disperse (Arc Tools) | 0x4812be519E1DEB486De80c3624a2AeAAD8DAb8eF |
| Token Lock (Arc Tools) | 0x9291458686B25fD49C5B335b7Da0Ec7A7CA224ef |
Circle's bridge contracts (identical address on every EVM chain):
| Contract | Address |
|---|---|
| Gateway wallet (deposits) | 0x77777777Dcc4d5A8B6E418Fd04D8997ef11000eE |
| Gateway minter (arrivals) | 0x2222222d7164433c4C09B0b0D809a9b52C04C205 |
| CCTP token messenger | 0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d |
| CCTP message transmitter | 0x81D40F21F12A8F0E3252Bccb954D722d4c464B64 |
USDC Market contract addresses (one on Arc, one on Base, bound as peers) are published on the market page itself, where they are read live.
Security
- Non-custodial by construction — Pools, positions, bridge balances and market escrows are held by contracts, not by us. No admin key on this site can move user funds, and on the Arc market the emergency recovery function refuses USDC outright.
- Proof-based settlement — Cross-chain releases require a 13-of-19 Wormhole guardian quorum. The proof itself names the recipient, so no intermediary can redirect a payout.
- Keys stay server-side — The browser talks to Arc through a same-origin RPC proxy, so upstream API keys never reach the client.
- Refunds are self-serve — Every escrow path has a timeout you can trigger yourself — no support ticket stands between you and your funds.
- Open verification — Every transaction the UI produces links to arc-scan.io or basescan.org. Verify, don't trust.