Live on Solana devnet

Settle in the dark.
Prove in the light.

Nyx is a privacy-preserving on-chain darkpool for Solana. Order intent stays inside an attested ephemeral rollup. Settlement lands as shielded UTXO notes verified by Groth16 zero-knowledge proofs — every balance reconciles, no individual order is exposed.

privacy ledgerslot 0x…f3
  • submit_orderhidden in ER
  • match_id0x7a3f…9c2d
  • note_c (BASE buyer)Poseidon(mint, amt, owner, …)
  • note_d (QUOTE seller)Poseidon(mint, amt, owner, …)
  • settle_root0xd1b2…84a0
What Nyx gives you

A darkpool you can audit without compromising privacy.

Four properties define the system. Each one is verifiable on-chain today on Solana devnet — no off-protocol indexer required for correctness.

01 · Hidden intent

Orders never touch the L1 mempool.

submit_order is signed and stored exclusively inside MagicBlock's Ephemeral Rollup. Side, price, amount, and your collateral note commitment all stay off-chain until a batch matches.

02 · Verifiable settlement

Every fill is a Groth16 proof.

Withdrawals require a VALID_SPEND zk-SNARK proving you own a leaf in the vault's Merkle tree.

03 · Attested executor

TEE-signed atomic settlement.

Settlement is written by a TEE-attested Ed25519 key into vault::tee_forced_settle. The on-chain instruction enforces the conservation law `note.amount = trade + change + fee` exactly before any state mutation.

04 · UTXO accounting

Shielded notes, public roots.

Balances live as Poseidon-hashed UTXO leaves (mint, amount, owner_commitment, nonce, blinding). The tree's leaf-count and current_root are public; individual ownership stays cryptographically opaque.

How a private trade flows

Three stages. Two clusters.
One verifiable settlement.

  1. 01L1

    Identity & deposit

    Sign a deterministic seed in your wallet, prove VALID_WALLET_CREATE in the browser, and shield SPL tokens into the vault as a UTXO note.

    Phantom signMessageVALID_WALLET_CREATEvault::deposit
  2. 02ER

    Submit & match privately

    Your trading key signs submit_order on the Ephemeral Rollup. run_batch clears the book at a uniform price. L1 sees only an aggregate snapshot.

    delegate_pending_ordersubmit_orderrun_batch
  3. 03L1 + ER

    Settle & withdraw

    An attested TEE settles atomically on L1 — locking input notes, appending output notes. Withdraw whenever, with a fresh VALID_SPEND proof.

    undelegate_markettee_forced_settleVALID_SPEND

Want to see every PDA, every cryptographic primitive, and every instruction the on-chain programs accept?

Architecture deep-dive
Built onv1 · devnet
  • SolanaL1 custody + ZK verifier
  • Anchor 0.32vault + matching engine
  • MagicBlock PERdelegated order PDAs
  • Groth16 / BN254VALID_WALLET_CREATE · VALID_SPEND
  • Poseidon2depth-20 incremental Merkle
  • Ed25519 precompileTEE-signed settlement
  • snarkjsbrowser-side prover
  • @darknyx/sdkno-Anchor-runtime client

Try it on devnet.
Every step is verifiable.

Connect a Phantom wallet on Solana devnet and run the full flow — identity derivation, shielded deposit, ER-private order, TEE settlement, and proof-backed withdraw. Every receipt is an explorer link.