Zero-Fee Private Transfers on Ethereum: How Commit-Reveal Breaks the Sender-Recipient Link
Every Ethereum transaction is public. Your wallet address, the recipient, the amount — all visible on Etherscan. For most DeFi operations, this is fine. But for payments, payroll, donations, and OTC trades, it's a dealbreaker.
BearerSwap solves this with a commit-reveal mechanism that breaks the on-chain link between sender and recipient. Zero protocol fees. 2-45 minute delay. Fully non-custodial.
The Problem: On-Chain Payments Are Surveillance
When you send ETH or tokens to someone:
- Your employer sees your spending patterns
- Your clients see your other clients
- Your competitors see your treasury movements
- Anyone can front-run your trades
Mixers are expensive (1-5% fees), slow, and legally questionable. Tornado Cash was sanctioned. There's no simple, legal, zero-fee privacy primitive for Ethereum.
The Solution: Commit-Reveal with Bearer Tokens
BearerSwap uses a two-phase mechanism:
Phase 1: Commit
The sender locks tokens with a hash of a secret. The contract knows someone locked tokens, but not who will receive them.
import { BearerSwap } from '@flatcash/bearerswap';
const bearer = new BearerSwap({ baseUrl: 'https://flat.cash/api/bearer' });
// Sender commits tokens
const { commitHash, secret } = await bearer.commit({
amount: '10.0', // 10 FLAT tokens
token: 'FLAT',
expiryMinutes: 45 // auto-refund if unclaimed
});
// Share the secret with recipient via any channel
// (Signal, email, QR code, carrier pigeon)
Phase 2: Deliver
The recipient (or anyone with the secret) reveals it to claim the tokens. The contract verifies the hash matches and releases funds.
// Recipient claims with the secret
const result = await bearer.deliver({
secret: 'the-secret-from-sender',
recipientAddress: '0x...'
});
// Tokens arrive in recipient's wallet
// On-chain: no link between sender and recipient
Why This Works
- The commit transaction shows: "Someone locked 10 FLAT"
- The deliver transaction shows: "Someone claimed 10 FLAT"
- There is no on-chain link between these two events
- The secret travels off-chain (encrypted message, QR code, etc.)
Real Use Cases
1. Private Payroll
Pay contractors without revealing salary amounts on-chain. Each payment is a separate commit-reveal cycle.
2. Anonymous Donations
Support causes without your wallet being linked to the recipient. Political donations, whistleblower funds, charity.
3. OTC Trading
Large trades without showing your hand. Commit tokens, share secret with counterparty, they reveal after sending fiat.
4. AI Agent Payments
Autonomous agents that need to pay for services without creating traceable payment graphs.
Try It Now
The SDK is live on npm:
npm install @flatcash/bearerswap
The contract is deployed on Ethereum mainnet at 0x5de315Dab49012c5bbeC41d7a3B25c6829a3e566.
To get FLAT tokens for testing:
- Visit flat.cash
- Buy FLAT at $1.01 via the FlatSale contract (gas costs ~$0.50)
- Use BearerSwap to transfer privately
First 150 buyers get gas costs refunded via BearerSwap — we're demonstrating the product by using it to refund you.
Technical Details
- Contract: Audited, non-upgradeable, no admin keys
- Tokens: FLAT ($1 CPI-pegged stablecoin), SAVE (locked FLAT with yield)
- Fees: Zero protocol fees. Only standard Ethereum gas.
- Expiry: Configurable 2-45 minutes. Auto-refund if unclaimed.
- Security: SHA-256 hash commitment. Secret must be 32 bytes.
Links
- SDK: npmjs.com/package/@flatcash/bearerswap
- Docs: flat.cash/agents/docs
- Contract: Etherscan
- Buy FLAT: flat.cash
Built by the Flat Protocol team. Questions? Check the docs or open an issue on the SDK repo.
Top comments (0)