Privacy & Sigma Protocols
Intermediate
2-4 hours

Приватный одноразовый шаблон получения

Generate one-time addresses/boxes for better transaction graph privacy

GitHub

Problem

Reusing addresses links all your transactions together, reducing privacy. Anyone can see your full transaction history.

Solution

Generate unique one-time addresses for each receive. Using Diffie-Hellman key exchange, sender creates a box only the receiver can spend, without revealing the receiver's main address.

How It Works

  1. 1Receiver publishes a public key (or derives from main address)
  2. 2Sender generates ephemeral keypair for this transaction
  3. 3Sender computes shared secret via ECDH
  4. 4Sender creates box spendable by derived one-time key
  5. 5Receiver scans blockchain for boxes they can spend
  6. 6Receiver derives private key from shared secret to spend

Code Examples

{
  // One-time receive box
  // R4: Ephemeral public key (sender's temporary key)
  // R5: Encrypted memo (optional)
  
  // The box is spendable by the one-time key derived from:
  // oneTimePrivKey = receiverPrivKey * hash(sharedSecret)
  // sharedSecret = ECDH(ephemeralPriv, receiverPub)
  //              = ECDH(receiverPriv, ephemeralPub)
  
  val ephemeralPubKey = SELF.R4[GroupElement].get
  
  // The proposition is a standard proveDlog
  // but the public key is the one-time derived key
  // Receiver computes: oneTimePub = receiverPub * hash(sharedSecret)
  
  proveDlog(oneTimePubKey)
}

One-time receive box. The spending key is derived from shared secret, only computable by the intended receiver.

Use Cases

  • Private donations
  • Salary payments
  • Merchant payments
  • Anonymous tips
  • Privacy-preserving invoices

Security Considerations

  • !Store receiver private key securely
  • !Scan regularly for incoming payments
  • !Consider timing attacks when spending
  • !Use with mixing for enhanced privacy
  • !Ephemeral keys must be truly random

Real-World Implementations

ErgoMixer

Privacy-focused wallet features

Resources

Fee Considerations

Standard transaction fees. Scanning requires indexing or full node access.

Level Up Your ErgoScript Skills

Get notified about new patterns, tutorials, and developer resources.

Follow for daily updates