Privacy

Overview

Privacy is a product pillar — default private engagements, honest boundaries.

Privacy

Most payment rails treat privacy as an afterthought: cleartext invoices, public ledgers that read like a payroll dump, and “optional” mixing that nobody enables under deadline pressure.

StreamLine takes the opposite stance. Privacy is a first-class mode of the protocol. The default create path is a private engagement — amount, who↔whom, and drip cadence stay inside a shielded pool. Compatibility modes still exist when you need milestones, dispute, or DeFi on a named stream.

The four layers

LayerWhat stays privateHow
IdentityLink from payment to a seed phrase / exchange KYC trailzkLogin — Google → fresh Sui address, sponsored gas
Private engagements (default)Amount + who↔whom + drip cadence inside the poolPrivate engagements — notes + private_settle
Amounts-only (compat)Totals, remaining, earned, drip sizesConfidential amounts — Poseidon + Groth16 + Seal; parties still public
MetadataBriefs, terms, deliverablesSeal — threshold encryption gated by on-chain policy (Walrus for large blobs = rolling out)

Public streams still exist when transparency or DeFi composability is the point (open payroll demos, borrow, yield splits). Pro treasury hire is public today — see Payroll privacy.

Design principles

  1. Selective disclosure — The chain enforces rules without broadcasting every number.
  2. Two-party readability — Parties decrypt openings locally (Seal or ECIES); indexers never hold plaintext balances.
  3. Proof, not trust — Moves that change confidential value carry zero-knowledge proofs verified natively on Sui (sui::groth16).
  4. Honest edges — Deposit and withdraw reveal amount at the anonymity-set boundary — same tradeoff as every shielded pool. Default overfund + private split makes the edge a round bucket ≠ the work amount.
  5. Don’t conflate Pro with private — Org hire from treasury is cleartext until a shielded funding path ships.

What observers still see

ModeObserver typically sees
Private engagementRound(ish) value entered/left the pool; unlinkable settle events; with privacy relayer, pool ops’ senders are the relayer (edge amounts + two-step fund timing still leak)
Amounts-only streamStream exists, sender & freelancer addresses, milestone indices / drip timestamps; not the dollar amounts in commitments (reserve size may still be observable)
Public stream / Pro hireEverything in cleartext — including indexer /payroll for that org

That split is intentional. Do not pitch “invisible payroll” for amounts-only or for Pro hire.

Where to go next

On this page