Skip to content

What is private

GhostDeal uses STRK20 so a payment can feel like cash: the other person learns that the price was paid, not how rich you are.

Three places a fact can live

flowchart TB
  subgraph device ["On the phone only"]
    D1["claimSecret"]
    D2["refundSecret"]
  end
  subgraph pool ["STRK20 shielded zone"]
    P1["who paid"]
    P2["which notes were spent"]
    P3["remaining shielded balance"]
  end
  subgraph chain ["Visible on chain"]
    C1["listing title, price, photo"]
    C2["shield deposit address, token, amount"]
    C3["open-note amount at cash-out"]
    C4["escrow funded or closed"]
  end
  • Device. Secrets never go to a GhostDeal server. The seller's claim secret is shown once at publish. The buyer's refund secret is saved at pay time. Anyone with a claim secret can cash out, so treat it like a backup phrase.
  • Shielded zone. After a shield, notes, nullifiers, and remaining balances are pool business. The dapp never holds viewing keys. The connected wallet constructs and proves the private transaction.
  • Public chain. Listings are meant to be shared. Shielding is a public deposit by design. Open notes at cash-out publish the amount so the helper can credit the right size.

Honest limits

GhostDeal is not a mixer and not a way to hide stolen funds. It protects you from the person across the table, not from a chain observer: shield deposits, open-note amounts, and timing stay public. We do not promise unlinkability against a determined analyst.

Trust boundary

Role Holds viewing keys? What they see
GhostDeal PWA no Listings, local secrets, escrow reads
Connected wallet yes, on the device Builds, proves, and submits private actions
STRK20 pool no (encrypted notes) Proofs, nullifiers, public deposits and open amounts
GhostDeal helper no Token, amount, hashes, closed. No identities
RPC provider no Which commitments this IP queries