1. Prepare recipients locally
Enter one Robinhood Chain address or upload a CSV containingaddress,amount rows. CSV parsing happens in the browser. The file is not uploaded to KovaSwap.
2. Receive a signed relay quote
For relayed settlement, the same-origin KovaSwap API returns an Ed25519-signed quote. The browser verifies it against the public key pinned in the release. The quote binds:- chain and pool;
- public payment amount;
- relay address and relay fee;
- privacy profile;
- expiration time.
3. Create and deposit a private note
The browser derives a random note and computes its Poseidon commitment. The connected wallet deposits the note amount plus the pool’s protocol fee. KovaSwap stores only the public commitment and its Merkle position. The encrypted note vault stays in the browser. Unlocking it requires a wallet signature that does not authorize a transaction.4. Synchronize the Merkle path
The browser reads finalizedDeposit and PrivateTransaction events from the published deployment block through Robinhood’s free public RPC. It reconstructs the Poseidon Merkle tree, verifies each emitted root, and compares the final root with the pool contract before creating a proof.
Only public commitments and a reorg-checked finalized cursor are cached locally. No hosted indexer is required for a payment. The public RPC provider can still observe the user’s IP address and public log requests; Private Pay does not claim to hide network metadata.
