Recipient side
The firewall refuses a lookalike or bait recipient before you send, and
the protected transfer makes a mistaken send recoverable.
Payer side
Private Pay pays from a disposable address that stores no payer identity,
and The Machine vetoes bad spends.
The four layers
- Firewall (layer 1). A pre-send scan for poisoning. This is the protection that actually matters against a lookalike, because the attack is that you send to it on purpose, so escrow cannot save you. Fail-closed: an incomplete scan is never reported as safe. See Address poisoning and the firewall guide.
- Protected transfer (layer 2). Escrow with a code-gated claim, sender
cancel, and automatic refund of an expired unclaimed send, so a genuinely wrong send is not final. See Protected transfer. - Clean history (layer 3). Code-claimed settlement keeps your activity spam-free, and the contract’s verified recipients feed back into layer 1 as known-good addresses, so a lookalike of someone you reached through a protected transfer is caught too.
- Payer-side shield (layer 4). Disposable, policy-bound addresses funded from a vault. Every spend is authorized by the enclave co-signer, and the funds are hard-locked to the merchant and cap you chose, so the co-signer can only push the payment you set up or veto it. See Payer-side shield and Private Pay.
Where each layer kicks in
- Before you send to a counterparty, the firewall scans the recipient. A block
stops the send; there is no way to lose funds to a lookalike you were about to
copy.
sendProtectedruns this by default. - When you send through the protected transfer, the funds are escrowed and the recipient must claim with a code you deliver out of band. If they never claim, the send is refundable to you.
- After a protected transfer settles, the recipient becomes a verified known-good address that strengthens the next firewall scan.
- When you pay a merchant and want payer-side protection, Private Pay routes the payment through a disposable account, and the co-signer vetoes any spend that fails policy or the firewall.
Trust boundaries
The layers do not all run in the same place, and that separation is deliberate:- The firewall runs client-side. It is a pure rule engine (
evaluateRisk) fed by public on-chain data throughcheck. It needs no secret and no trusted server, so anyone can reproduce its verdict. Its only dependency is a data source (Blockscout / ArcScan and the contract’s own events), and if that source is down the report fails closed. - The co-signer runs server-side, in an enclave (“The Machine”). It holds the key that authorizes a spend from a disposable account. It re-reads the real on-chain policy rather than trusting the browser, and it vetoes by withholding its signature. A veto is not a warning; the spend becomes impossible. See The co-signer.
- The contracts enforce policy on-chain. A disposable account is hard-locked
to one
targetand one cap, so even the co-signer can only push the exact payment you set up, never redirect or steal. The protected-transfer contract enforces the code-claim, the attempt lockout, the cancel rights, and the expiry refund. Nothing off-chain can override these.