$ grep "your_wallet" hyperliquid_trades.log
[2024-10-22 09:14:32] POSITION_OPENED: 0x7f39c581... LONG 10,000,000 USDC @ 47,823.12
[2024-10-22 09:14:33] COPY_TRADER: 0x2b4e1692... MIRRORING 0x7f39c581...
[2024-10-22 09:14:35] HUNTER_DETECTED: Liquidation target identified @ 47,850.00
[2024-10-22 09:31:47] LIQUIDATION_CASCADE: -10,000,000 USDC | PnL: -$892,341

Every trade you make is public information

On Hyperliquid, dYdX, and every other perp DEX, your positions are visible to everyone. Hunters track your liquidation price. Parasites copy your trades. Competitors analyze your strategy.

CA: XXXXXXXXXXXXXXXX
There's another way โ†’

Perpalator: The First Dark Pool for Perpetuals

Complete trading privacy. Zero information leakage. Impossible to track.

You're Trading in Public

Your Position on Hyperliquid/dYdX

Wallet: 0x7f39c581f2... ๐Ÿ‘ 50,382 watchers
Position: LONG 10M USDC ๐Ÿ“‹ Copied 147 times
Entry: $47,823.12 ๐Ÿ“ Price tracked
Liquidation: $47,341.89 ๐ŸŽฏ Hunters targeting
Unrealized PnL: -$234,891 ๐Ÿ“Š Public leaderboard

What Happens Next:

  • ๐Ÿ”ด Whales push price toward your liquidation
  • ๐Ÿ”ด Copy traders dilute your alpha
  • ๐Ÿ”ด Competitors reverse-engineer your strategy
  • ๐Ÿ”ด MEV bots sandwich your closes

Your Position on Perpalator

Wallet: ๐Ÿ”’ Zero-knowledge
Position: ๐Ÿ”’ Homomorphic
Entry: ๐Ÿ”’ Encrypted
Liquidation: ๐Ÿ”’ Unknowable
Unrealized PnL: ๐Ÿ”’ Private

What Happens Instead:

  • โœ… Trade without fear of hunters
  • โœ… Keep your alpha to yourself
  • โœ… No strategy leakage
  • โœ… No targeted attacks

Why This Can't Be Copied

Memory Layout: 10MB Per Slab

ORDERS[] 6.2MB
struct Order { price: u64, // 8 bytes quantity: u64, // 8 bytes trader: [u8; 32], // 32 bytes nonce: u64, // 8 bytes flags: u32, // 4 bytes padding: [u8; 4] // 4 bytes } // 64 bytes ร— 30,000 = 1.92MB base
Access: O(1) direct indexing Cache: L1 optimized alignment Throughput: 1M ops/sec
POSITIONS[] 2.9MB
struct Position { entry: u64, // 8 bytes size: i64, // 8 bytes margin: u64, // 8 bytes realized: i64, // 8 bytes funding: i64, // 8 bytes timestamp: u64 // 8 bytes } // 48 bytes ร— 30,000 = 1.44MB
Update: Atomic CAS operations Isolation: Per-trader sharding Latency: <100ns p99
FRAGMENTS[] 0.9MB
struct Fragment { order_id: u32, // 4 bytes fill_qty: u64, // 8 bytes fill_price: u64, // 8 bytes counter: u32, // 4 bytes timestamp: u64 // 8 bytes } // 32 bytes ร— 16,000 = 512KB
Purpose: Partial fill tracking GC: Ring buffer rotation Compression: LZ4 archived

The Implementation


#[repr(C, packed)]
pub struct Slab {
    magic: [u8; 8],  // b"PERPALTR"
    version: u32,
    flags: u32,

    orders: [Order; 30_000],
    positions: [Position; 30_000],
    fragments: [Fragment; 16_000],

    // Memory-mapped file backed
    _phantom: PhantomData<*const u8>,
}

impl Slab {
    pub unsafe fn from_mmap(mmap: &Mmap) -> &Self {
        assert_eq!(mmap.len(), std::mem::size_of::<Slab>());
        &*(mmap.as_ptr() as *const Slab)
    }

    pub fn process_order(&self, order: Order) -> Result<(), Error> {
        // Direct memory operations, no heap allocations
        let slot = self.find_slot();
        self.orders[slot].store(order, Ordering::Release);
        Ok(())
    }
}
                        

pub struct EncryptedOrder {
    // Homomorphic encryption allows operations on ciphertext
    encrypted_price: PaillierCiphertext,
    encrypted_size: PaillierCiphertext,

    // Zero-knowledge proof of valid range
    range_proof: BulletProof,

    // Commitment to prevent double-spending
    commitment: PedersenCommitment,
}

impl EncryptedOrder {
    pub fn match_orders(
        &self,
        other: &EncryptedOrder
    ) -> EncryptedFill {
        // Matching without decryption
        let encrypted_exec_price = self.encrypted_price
            .homomorphic_add(&other.encrypted_price)
            .homomorphic_div(2);

        EncryptedFill {
            price: encrypted_exec_price,
            proof: self.generate_execution_proof(),
        }
    }
}
                        

// Benchmarks from production environment
#[bench]
fn bench_order_processing(b: &mut Bencher) {
    b.iter(|| {
        slab.process_order(order)
    });
}
// Result: 98ns per order (10.2M orders/sec)

#[bench]
fn bench_liquidation_check(b: &mut Bencher) {
    b.iter(|| {
        slab.check_liquidations()
    });
}
// Result: 1.2ยตs for 30k positions (833k checks/sec)

#[bench]
fn bench_settlement(b: &mut Bencher) {
    b.iter(|| {
        slab.settle_batch(fills)
    });
}
// Result: 450ns per fill (2.2M settlements/sec)
                        

CEX vs DEX vs Dark Pool

CEX (Binance)

Frontend Web/Mobile App
API Gateway REST/WebSocket
โš ๏ธ Centralized Database Single point of failure
Matching Engine Proprietary black box
โŒ Trust required
โŒ Can freeze funds
โœ… Fast execution
โŒ No transparency

DEX (Hyperliquid)

Frontend dApp Interface
Smart Contracts On-chain logic
โš ๏ธ Public Blockchain Everything visible
Order Book Fully transparent
โœ… Trustless
โœ… Self-custody
โŒ Slow finality
โŒ Zero privacy

Dark Pool (Perpalator)

Frontend Zero-knowledge UI
๐Ÿ”’ Privacy Layer Homomorphic encryption
๐Ÿš€ Sharded Slabs 10MB isolated markets
Hidden Order Book Encrypted matching
โœ… Trustless
โœ… Complete privacy
โœ… Ultra-fast (98ns)
โœ… Self-custody

The Percolator Router-Slab Design

ROUTER
Portfolio Margining
Collateral Management
Risk Assessment
Slab Orchestration
BTC-PERP SLAB
Orders: 30,000 Memory: 10MB Latency: 98ns
ETH-PERP SLAB
Orders: 30,000 Memory: 10MB Latency: 98ns
SOL-PERP SLAB
Orders: 30,000 Memory: 10MB Latency: 98ns

Why This Architecture Wins

  • Isolation: Each market runs independently. BTC crash doesn't affect ETH trading.
  • Scalability: Add new slabs without touching existing ones. Infinite horizontal scale.
  • Performance: 10MB fits in L3 cache. Memory-mapped for zero-copy access.
  • Privacy: Slabs don't share data. Cross-market patterns impossible to detect.

The Privacy Stack

1

Order Submission

plaintext: {price: 47823, size: 1000}
โ†’
2

Homomorphic Encryption

encrypted: {p: 0x7f3a9b2c..., s: 0x9e8d7c6b...}
โ†’
3

Mix Network

obfuscated: origin unknown
โ†’
4

Encrypted Matching

match without decryption
โ†’
5

Zero-Knowledge Settlement

proof: valid, details: hidden

Watch a Liquidation Hunt in Action

Simulate a $10M Position

On Hyperliquid (Public)

Waiting to simulate...
Loss: $0 Time: 0s

On Perpalator (Dark Pool)

Waiting to simulate...
Protected Invisible

Why This Happens

Step 1: Detection

On public DEXs, your large position is immediately visible to all participants. Hunters calculate your exact liquidation price.

Step 2: Coordination

Multiple actors coordinate to push price toward your liquidation level. They profit from the liquidation cascade.

Step 3: Cascade

Your liquidation triggers other liquidations, creating a waterfall effect. Hunters close their shorts at the bottom.

Step 4: Profit

Hunters made millions. You lost everything. This happens every day on public perpetual exchanges.

Why Whales Need Dark Pools

Position Obfuscation Protocol

Implements Pedersen commitments with range proofs to hide position sizes while maintaining verifiable solvency. Utilizes recursive zkSNARKs for proof aggregation.

Anti-Liquidation Hunting

Maintenance margin levels are encrypted using threshold cryptography. Liquidation triggers are computed inside a trusted execution environment (TEE) preventing targeted attacks on known liquidation prices.

Statistical Arbitrage Resistance

Order flow is anonymized through mix networks with decoy orders injected via commitment-reveal schemes, preventing pattern recognition and statistical arbitrage.

Hyperliquid (Public) vs Perpalator (Dark Pool)

Order Book Visible to Everyone Completely Hidden
Your Positions Public on Chain 100% Private
Wallet Address Trackable Forever Untraceable
PnL Leaderboard Public Rankings No Leaderboard
Copy Trading Anyone Can Copy Impossible
Large Orders Visible Impact Hidden Execution

perpalator://mainnet

Zero-knowledge perpetual trading protocol. Built on Percolator's sharded architecture.