DEV Community

flat cash
flat cash

Posted on

Zero-Fee Private Transfers on Ethereum: How Commit-Reveal Breaks the Sender-Recipient Link

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)
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

The contract is deployed on Ethereum mainnet at 0x5de315Dab49012c5bbeC41d7a3B25c6829a3e566.

To get FLAT tokens for testing:

  1. Visit flat.cash
  2. Buy FLAT at $1.01 via the FlatSale contract (gas costs ~$0.50)
  3. 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


Built by the Flat Protocol team. Questions? Check the docs or open an issue on the SDK repo.

Top comments (0)