@ctrl-arcz/sdk), a set of smart contracts, and reference apps. It protects
both sides of a payment: the recipient you send to, and you when you pay.
The problem
The most effective attack on stablecoin users is not a smart-contract exploit. It is address poisoning. An attacker seeds your transaction history with a lookalike address, one that shares the same first and last visible characters as someone you actually pay, by sending you a zero-value or dust “bait” transfer. Later you copy the wrong address from your own history and send real funds to it, on purpose. The folk defense, “send $1 first and wait for it to arrive,” is broken: it is slow, it teaches nothing when the lookalike happens to be a live address, and it does nothing about who can see your wallet when you pay. Ctrl+ArcZ replaces the ritual with four layers that actually hold.The four layers
- Firewall (refuse to send). A pre-send scan that refuses a lookalike or a zero-value-bait recipient before any funds move. This is the real defense against poisoning, because in a poisoning attack you send to the wrong address deliberately, so only refusing to send helps. Fail-closed by default.
- Protected transfer (code-gated claim). Escrowed transfers the recipient
claims with a short code, with sender
canceland automatic refund of an expired, unclaimed send. A genuinely mistaken send stays recoverable. - Clean history. Verified recipients and code-claimed settlement keep your activity spam-free and feed known-good addresses back into the firewall, so a lookalike of someone you have paid is caught too.
- Payer-side shield (Private Pay). Pay a merchant from a disposable, policy-bound address that stores no payer identity, with every spend authorized by an enclave co-signer that vetoes a drainer, a lookalike, or an over-policy spend. The same box in PULL mode is a subscription with a per-pull cap instead of an infinite approval, and a stealth address makes it unattributable.
Start here
Quickstart
Send a protected USDC transfer with the firewall on, end to end, in a few
lines.
SDK API reference
Every exported function, its parameters, and its return shape.
Private Pay
Pay from a fresh, single-use address guarded by a co-signer that vetoes bad
spends.
The firewall
Run the pre-send poisoning scan, and decide what warnings and blocks do.
Payer-side shield
The mental model behind disposable accounts, the co-signer veto, and the
one-way valve.
Subscriptions
Recurring spending with a per-pull cap, an interval and an expiry on chain.
The replacement for an infinite approval.
Bridge USDC
CCTP and Gateway from the user’s own wallet. Non-custodial, no relayer, no
server.
Why Arc
Ctrl+ArcZ is built for Arc because Arc is what makes it practical:- USDC is the gas token. Ephemeral payment addresses need no separate gas funding, the detail that kills this design on other chains.
- Sub-second finality. The create-fund-pay chain finishes in one breath, so a private checkout feels instant.
- Circle tooling built in. CCTP and Gateway move USDC in and out; Arc Privacy Sector (APS) is the roadmap for confidential balances.