Live on Arc testnet · USDC + CCTP integrated

Earn venue yield.
Keep your position private.

A confidential lending layer on Circle's Arc. Supply into the same public venues everyone else uses — and let no one see how much is yours.

Scroll
The problem

Someone is reading
your position right now.

Not hacking. Just looking. A public vault publishes its depositor table — every address, every size, every entry — and it's free to read. If you run size, your strategy is a public feed. That's why institutional capital still can't come on-chain.

Public USDC vault · depositors anyone can watch
WalletDepositShare
0x66Bf…C458 16,941,00367.40%◄ read
0xB81a…5bfD 8,002,23231.84%◄ read
0xbd35…03B8 187,2100.74%◄ read
0x1eb3…4e9B 1,000<0.01%◄ read
no login · no permission · no traceFULLY EXPOSED
What anyone learns
for free, in one call
One wallet holds two thirds of the vault.
Their size, to the dollar.
When they entered — and the moment they start to leave.
Enough to trade against them before they finish.
This is the default on every public lending venue.
Same venue, through GhostRail sealed
WalletDepositShare
0x66Bf…C458 16,941,00367.40%
0xB81a…5bfD 8,002,23231.84%
0xbd35…03B8 187,2100.74%
0x1eb3…4e9B 1,000<0.01%
aggregate: 25,131,456 cUSDC · fully backedSOLVENT ✓
What anyone learns now
same call, same venue
The pool holds $25.13M, and it's fully backed.
A batch moved. Some net amount crossed.
That's it. Ask for a position and you get a revert.
Your auditor, with your view key, still sees everything.
Verifiable solvency. Invisible positions.
The primitive

One dollar, made confidential

Everything starts here. Your USDC crosses into Arc's Privacy Sector and comes out as cUSDC — the same dollar, same backing, 1:1 — except the balance now lives inside a hardware enclave where only you can read it.

APS · shield
Public · Arc EVM
Confidential · APS
USDC
1,200,000
1:1, always
Every cUSDC is backed by exactly one USDC held by the wrapper. The total is public and checkable — balanceOf(wrapper) == totalShielded.
Only you can read it
Your balance returns to you and to an auditor you authorize with a view key. Everyone else gets a revert. Not obfuscation — access control enforced by the enclave.
Any ERC-20, same trick
The wrapper is generic. cUSDC today; cWETH, cEURC, tokenized treasuries — the same contract with a different underlying.
How it works

Four depositors. Four public amounts.

Right now, anyone can see exactly who supplied what. This is the default on every public lending venue.

01 / 05
Public · USDC
Confidential · cUSDC
Public venue · USDC
shield
unshield
yield ← accrues to your private shares
0xA1c4…250,000
0xB2f9…1,200,000
0xC3d1…50,000
0xD4e7…10,000
0xE5b8…−310,000
👻
Pooled
•••••
NET +1,200,000
Any public venue
Morpho · Aave · Arc-native
existing liquidity & yield
Sees ONE depositor:
the router. Not you.
01
Shield
Wrap USDC into cUSDC. From here your balance lives inside the enclave — readable only by you.
02
Pool
Your deposit joins the batch. Individual sizes vanish into the aggregate — the only way to hide amounts on a public venue.
03
Net & cross
GhostGate nets deposits against withdrawals. One movement crosses. The chain sees a number, not a person.
04
Earn
The venue pays yield to the pool; your confidential shares accrue it 1:1. Same APY, private position.
Architecture

We're a layer.
Not another venue.

Arc gives the rails: a public EVM where the lending venues live, and APS — a TEE-backed private sector — bridged natively with atomic same-block composability. Morpho and Aave bring the liquidity. GhostRail is the thin layer between them that makes your position disappear.

Added by GhostRailConfidential side
GHOSTRAIL — Confidential Lending Layer
Shield Pool & net View keys Zero admin
Supply into any public venue with your amount, your share and your entry sealed inside the enclave. Deposits pool and net at the boundary, so only the batch net ever touches the public side — and a view key still lets your auditor see everything.
same chain · same liquidity · same yield — not a separate venue
Morpho · Aave · any Arc-native venue Liquidity we inherit
Where the depositors, the curators, the borrowers and the yield already are. The router takes an adapter, so it is not bound to two names: whatever lends on Arc, we can route into it. We never run our own pool — bootstrapping liquidity from zero is the trap that kills lending launches. From the venue's side, GhostRail is one ordinary address.
Arc — Circle's L1 · public EVM + APS The rails
USDC is the native gas token — nobody holds ETH. APS seals contract state inside a hardware enclave, so confidentiality is plain Solidity: no ciphertexts, no circuits. shield / unshield is the only boundary, atomic and same-block — which is exactly where we net.
Provided by ArcBase layer
The honest boundary

We state it instead of hiding it

Operational privacy, not a mixer. We hide what an institution needs hidden — sizes, positions, breakdown. We keep public what solvency requires. No unlinkability claims, ever.

Private
Individual confidential balances
Per-user vault shares and cost basis
Who deposited how much, and when
Your earnings — revealed to you, or an auditor you authorize
Public
Shield / unshield amounts at the boundary
Aggregates — total shielded, total shares, venue position
The per-batch net (direction + amount)
The solvency invariant — anyone can verify we're fully backed
Markets

One confidential layer.
Every asset Arc lends.

Two contracts, and that's the whole system. Every market below is the same pair with a different underlying and a different adapter — which is why the list has no ceiling.

ConfidentialToken
wraps any ERC-20
+
VaultRouter
plugs into any venue
=
Every market 5 assets × 2 venues today · no ceiling
USD Coin
cUSDC · USDC
Live
Morpho4.82%
Aave3.30%
Ether
cWETH · WETH
Preview
Morpho2.14%
Aave1.95%
Bitcoin
cWBTC · WBTC
Preview
Morpho1.37%
Aave0.88%
Euro Coin
cEURC · EURC
Preview
Morpho3.05%
Aave2.40%
Tokenized Treasury
cUSTB · USTB
Preview
Morpho5.11%
Aave4.60%
Any venue, any asset
The router takes an adapter.
Arc-native protocols slot in on day one.

Preview markets simulate an Arc-mainnet deployment against Morpho / Aave — not affiliated with Morpho or Aave. APYs illustrative. Only USDC · Morpho wraps real Arc testnet USDC.

Design

Five decisions that shape everything

Most of the work wasn't writing the contracts — it was deciding what not to build. Each of these closed off an easier, worse path.

Layer, not venue
We never run our own pool. Our own pool means bootstrapping liquidity from zero — the two-sided cold-start trap that kills most lending launches. Instead we inherit the liquidity that's already there and add the one thing it lacks.
Pooling is the mechanism, not a preference
A position in a public contract has a public amount. There are exactly two moves: hide the owner, or hide the breakdown. Hiding the owner but not the amount collapses back into pooling — and splitting one depositor across proxies is structuring. So pooling is forced.
Operational privacy, not a mixer
We hide an institution's own sizes and breakdown; we don't claim unlinkability. A mixer needs a huge anonymity set on day one and carries regulatory poison. What institutions actually buy is this: aggregate public, position private, auditor authorized.
Zero admin keys
Immutable contracts. No owner, no pause, no privileged fund path. The operator can't touch the pool because there is no operator role. Batches are permissionless — anyone can execute one. The auditor can only read.
A public solvency invariant
Privacy that hides insolvency is a scam waiting to happen. So the aggregate is always public and always checkable: previewRedeem(totalShares) ≤ backing, verified at every step and proven as a stateful fuzz invariant over 128,000 calls. You can't see who owns what. You can always see that everything is backed.
Honest status

APS is not live yet. So on Arc testnet, GhostRail's confidentiality is notional — the storage is readable and the view-gating isn't enforced against a spoofed eth_call. We will not pretend otherwise.

What is live: the protocol logic, deployed and running on Arc testnet, and a real Circle integration — the USDC market wraps real Arc testnet USDC, and the bridge is real Circle CCTP via Bridge Kit. Every point where production diverges is marked // APS-SWAP in the code.

The privacy of a pooled router scales with participation: a batch with one participant is a batch whose net is that participant's amount. Real venue adapters and an independent audit gate come before real funds — never after.

The claim, precisely: protocol live on Arc testnet, USDC-integrated, architected for APS — confidentiality activates when APS ships.

Your yield is public information.
It doesn't have to be.

The protocol is live on Arc testnet with real USDC. Bridge in, shield, and watch the depositor table stay empty where your name would be.