Skip to content

Mist-Labs/contracts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŒ‘ Shadow Swap - Privacy-Preserving Starknet Bridge

A cryptographically-secure atomic swap bridge between Starknet and Zcash with built-in privacy guarantees


πŸ“‹ Overview

Shadow Swap is a decentralized bridge that enables private atomic swaps between Starknet and Zcash. Unlike traditional bridges, Shadow Swap uses advanced cryptographic techniques to hide transaction amounts and obfuscate participant identities while maintaining trustless security.

Key Features

βœ… Cryptographic Privacy - Transaction amounts hidden via zero-knowledge commitments
βœ… Address Obfuscation - Stealth address system protects participant identities
βœ… Range Proofs - Mathematically proven amount validity without revealing values
βœ… Dual Hash System - Poseidon (Starknet) + SHA256 (Zcash) compatibility
βœ… Time-Locked Safety - Automatic refund after timeout with privacy preservation
βœ… Production Ready - Built with Cairo 1.0 and audited cryptographic primitives


πŸ” Privacy Guarantees

What's Hidden:

  • βœ… Transaction Amounts - Cryptographically committed, never revealed on-chain
  • βœ… Participant Identities - Stealth addresses break address linkability
  • βœ… Cross-Chain Linkage - Different secrets prevent transaction correlation

What's Visible:

  • ⚠️ HTLC Creation - Someone created a swap (but not who or how much)
  • ⚠️ Settlement Events - A swap completed (but amounts remain hidden)
  • ⚠️ Timelock Parameters - When refunds become available

Privacy Level: Similar to Zcash shielded transactions on Starknet


πŸš€ Quick Start

1. Install Dependencies

# Install Scarb (Cairo package manager)
curl --proto '=https' --tlsv1.2 -sSf https://docs.swmansion.com/scarb/install.sh | sh

# Install Starknet Foundry (testing framework)
curl -L https://raw.githubusercontent.com/foundry-rs/starknet-foundry/master/scripts/install.sh | sh

2. Build Contracts

scarb build

3. Run Tests

snforge test

πŸ”‘ Understanding the Bridge

Bridge Architecture

USER wants to swap 100 STRK β†’ 1 ZEC

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  USER (Alice)                       β”‚
β”‚  β”œβ”€ Starknet: Locks 100 STRK       β”‚  ← Amount HIDDEN via commitment
β”‚  └─ Zcash: Receives 1 ZEC          β”‚  ← Shielded transaction
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚
         β”‚ Bridge Protocol (Atomic)
         β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  BRIDGE OPERATOR (Shadow Swap)      β”‚
β”‚  β”œβ”€ Starknet: Claims 100 STRK      β”‚  ← Must reveal secret
β”‚  └─ Zcash: Sends 1 ZEC             β”‚  ← From liquidity pool
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Swap Flow

Starknet β†’ Zcash:

  1. User locks STRK with hidden amount (cryptographic commitment)
  2. Bridge locks ZEC to user's Zcash shielded address
  3. User reveals secret on Zcash, claims ZEC
  4. Bridge uses secret to claim STRK on Starknet

Zcash β†’ Starknet:

  1. User locks ZEC in shielded HTLC
  2. Bridge locks STRK with hidden amount
  3. User reveals secret on Starknet, claims STRK
  4. Bridge uses secret to claim ZEC on Zcash

πŸ”’ Security Features

Cryptographic Protections

Layer Technology Purpose
Amount Privacy Pedersen Commitments Hide transaction values on-chain
Range Proofs Bit Decomposition Prove amount validity without revealing
Stealth Addresses Hash-based Derivation Break address linkability
Secure Randomness Multi-source Entropy Unpredictable blinding factors

Smart Contract Security

Protection Implementation Attack Prevented
Reentrancy Guard OpenZeppelin Component Reentrancy attacks
CEI Pattern Checks-Effects-Interactions State inconsistency
Access Control Stealth ownership verification Unauthorized claims
State Machine Strict transitions Double-spending
Timelock Validation Min 1hr, Max 7 days Premature/indefinite locks

See SECURITY.md for detailed analysis.


πŸ§ͺ Testing

Comprehensive Test Suite

# Run all tests
snforge test

# Run with coverage
snforge test --coverage

# Run specific test file
snforge test --path tests/test_htlc.cairo

Test Coverage:

  • βœ… Privacy commitment verification
  • βœ… Range proof validation
  • βœ… Stealth address ownership
  • βœ… Amount hiding guarantees
  • βœ… State transitions
  • βœ… Access control
  • βœ… Timelock boundaries
  • βœ… Edge cases and attack vectors

For Auditors:

  1. Review cryptographic primitives in stealth.cairo
  2. Verify Pedersen commitment implementation
  3. Check range proof bit decomposition logic
  4. Audit stealth address derivation scheme
  5. Test all privacy preservation edge cases

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  PRIVACY LAYER                       β”‚
β”‚  β€’ Pedersen Commitments (Amount Hiding)             β”‚
β”‚  β€’ Range Proofs (Validity without Disclosure)       β”‚
β”‚  β€’ Stealth Addresses (Identity Obfuscation)         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              HTLC FACTORY                            β”‚
β”‚  β€’ Deploys child HTLCs                              β”‚
β”‚  β€’ Verifies range proofs                            β”‚
β”‚  β€’ Enforces privacy parameters                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              HTLC CONTRACT                           β”‚
β”‚  β€’ Holds locked STRK (amount hidden)                β”‚
β”‚  β€’ Verifies commitment on redeem/refund             β”‚
β”‚  β€’ Enforces atomic swap logic                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“œ License

MIT License - See LICENSE file for details


πŸ† Acknowledgments

Built with:

  • Cairo 2.0 (Starknet smart contracts)
  • Pedersen Hash (Native Cairo cryptography)
  • OpenZeppelin Cairo Contracts (Security components)
  • Starknet Foundry (Testing framework)

Inspired by:

  • Zcash Protocol (Shielded transactions)
  • Tornado Cash (Privacy techniques)
  • Monero (Stealth addresses)

Built with ❀️ for a privacy-first DeFi future


Last Updated: November 2025 | Version 0.2.0 (Privacy Update)

About

No description, website, or topics provided.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages