Skip to main content

Privacy Boost Overview

Privacy Boost is a privacy-preserving transaction protocol that enables confidential token transfers on EVM-compatible blockchains. This document explains the core concepts and how the system works.

What Problem Does Privacy Boost Solve?

On public blockchains like Ethereum, all transactions are visible to everyone. When you transfer tokens, anyone can see:
  • Your wallet address
  • The recipient’s address
  • The amount transferred
  • Your complete transaction history
Privacy Boost solves this by enabling shielded transactions where:
  • Your balance is hidden from public view
  • Transfer amounts are encrypted
  • The link between sender and recipient is broken
  • Only you (and optionally, auditors) can see your transaction history

How It Works

High-Level Flow

The Three Core Operations

1. Deposit (Shield)

Move tokens from your public wallet into your private balance:
  • Tokens are locked in the Shield smart contract
  • A cryptographic “note” is created representing your private balance
  • Only you can access these tokens using your privacy keys

2. Transfer (Private Send)

Send tokens privately to another user:
  • Specify the recipient’s privacy address
  • The transaction is processed through zero-knowledge proofs
  • No one can see who sent tokens to whom or how much

3. Withdraw (Unshield)

Move tokens from your private balance back to any public address:
  • Provide a zero-knowledge proof that you own the tokens
  • Tokens are released from the Shield contract
  • The receiving address gets the tokens

Privacy Keys

When you “login” to Privacy Boost, you derive three privacy keys from your wallet signature:

Master Public Key (MPK)

  • Your public identifier in the privacy system
  • Used to compute your privacy address
  • Can be shared publicly (like an email address)

Viewing Key

  • Allows decryption of incoming transactions
  • Used to see your balance and transaction history
  • Should be kept private

Nullifying Key

  • Used to spend your private balance
  • Creates “nullifiers” that prevent double-spending
  • Must be kept secret

Privacy Address

Your privacy address is a compact encoding of your MPK and viewing key. It looks like:
0x04a1b2c3d4e5f6...  (66 bytes / 132 hex characters)
Share this address to receive private transfers. Anyone can send to your privacy address, but only you can see and spend the received tokens.

Notes and Commitments

Notes

A “note” represents a specific amount of tokens in your private balance. Each note contains:
  • Token address
  • Amount
  • Owner’s MPK
  • Random blinding factor

Commitments

When you deposit or receive tokens, a “commitment” is published on-chain. This commitment:
  • Is a cryptographic hash of your note
  • Reveals nothing about the note’s contents
  • Is stored in a Merkle tree for efficient verification

Nullifiers

When you spend a note, you publish a “nullifier” that:
  • Is derived from the note and your nullifying key
  • Prevents the same note from being spent twice
  • Cannot be linked back to the original commitment

Zero-Knowledge Proofs

Privacy Boost uses zero-knowledge proofs to verify transactions without revealing details:
  1. Proof of Ownership: You know the secret values in a note
  2. Proof of Inclusion: Your note’s commitment exists in the Merkle tree
  3. Proof of Correctness: The transaction math is valid (inputs = outputs)
The prover service generates these proofs, and the Shield contract verifies them on-chain.

System Components

SDK (Client-Side)

  • Manages wallet connection and key derivation
  • Encrypts/decrypts notes
  • Prepares transaction data
  • Handles session persistence

Indexer Service

  • Scans blockchain for relevant events
  • Maintains the commitment Merkle tree
  • Stores encrypted notes for users
  • Provides balance and history queries

Prover Service

  • Generates zero-knowledge proofs
  • Handles complex cryptographic computation
  • Submits proven transactions to the blockchain

Shield Contract

  • Holds deposited tokens
  • Verifies zero-knowledge proofs
  • Maintains the commitment tree root
  • Tracks spent nullifiers

Next Steps