5042002) and verifiable on
ArcScan. No admin, no pause, no upgrade path:
funds are only ever with the user or the contract.
Addresses
CtrlArcZ — protected transfer
The escrow. Registers per-integrator configs and holds transfers until claimed, cancelled or reclaimed.SpendPolicyFactory + SpendPolicyAccount
The payer-side shield. The factory clones a policy-bound account per intent; the account enforces the policy and the 2-of-2.
Signatures are over
keccak256(SpendPolicyAction, account, target, amount, nonce, chainId), bound to the account and chain so they cannot be replayed. Use
payStructHash in the SDK to build the exact bytes.
Vault
Holds the owner’s USDC, funds accounts, receives sweeps. Owner-only outflows; the_moveOut seam is where the APS confidential transfer will slot in.
On Arc a USDC ERC-20 transfer moves the recipient’s native balance, so the account
and vault implement
receive() payable. Without it, funding a contract on Arc
would revert; a plain EVM never surfaces this.