Reference · inherited from DarkSwap v0.4

What is built, and what is only planned.

Read the status before the number. A figure from local tests is a measurement, not a mainnet quote. A proposed destination for fees is a direction, not a contract.

The ZK Darkpool mark inside nested frames of light.
Local-chain build. No public deployment.

Status

Tag Meaning on this site
Built Runs end to end on local chains with real proofs. Not deployed on a public network.
Held back The software exists and is intentionally not opened to user funds.
Proposed Direction is set. The contracts or parameters are not.
Separate Part of DarkSwap, not part of ZK Darkpool. Linked so the two are not confused.

Proof system

Item Value Status
Circuit language circom Built
Proof Groth16 on BN254, also written alt_bn128 or bn128. Eight public inputs. Built
Hash Poseidon for commitments, nullifiers, and the note tree Built
Prover snarkjs in the browser Built
Proving time 2 to 5 seconds per transaction on a 2-core test machine Local measurement
Shape Up to 2 notes in, 2 notes out, one asset Built

Note tree

Item Value
Depth 26
Slots per pool 67,108,864, shared across assets in that pool
Slots per shield or spend 2, so about 33.5 million such operations
When full Deposits stop. Withdrawals of whole notes continue.
Accepted roots Last 1,000 on Ethereum and Base. Last 256 on Solana.

Local cost measurements

These are measurements on local chains, not a fee quote for a public network.

Action Ethereum and Base Solana
Shield About 1.16 to 1.22 million gas Spend path measured at about 161,000 to 172,000 compute units. A separate shield figure was not published.
Private send About 1.32 million gas About 161,000 to 172,000 compute units
Unshield About 1.38 million gas Same spend range. Relayer rent for two small accounts is recovered in its fee.

Assets

Pool Accepts Does not accept
Solana program SOL and listed SPL tokens on the original Token program Token-2022 tokens. DarkSwap’s $DARK is Token-2022, so it cannot be shielded in this pool as built.
Ethereum and Base contract ETH and listed ERC-20 tokens Assets the admin has not listed. Unlisted assets have no books in the pool.

Listing an asset sets its minimum deposit, maximum deposit, and the cap on how much the pool may hold. Books are per asset. A bug or a loss in one asset’s accounting is not allowed, by design, to pay out from another.

Fees

Fee Amount Status
Protocol fee on shield 0.5% in tests. Admin may change it. Contract cap 1%. Built
Protocol fee on private send None Built
Protocol fee on unshield Same rate as shield Built
Relayer fee Separate. Taken from a relayed withdrawal. Private sends are relayed inside a rate limit without this fee. Built
Fee recipient One address, fixed at deployment. Sweep pays that address and no other. Built
Where fees go after the recipient Undecided in the contracts. An earlier DarkSwap note proposed converting fees onward. Those forwarding contracts are not written. Proposed

ZKDARK is the Solana token. Buy it on PumpSwap and read the market on DexScreener. This reference does not assign it a supply, a fee share, or a holder distribution. DarkSwap’s $DARK creator fee, wNEAR payouts, and ZEC-DARK liquidity belong to that token and that terminal. They are not ZKDARK economics.

Admin and upgrades

The admin can list assets, set deposit limits, disable deposits for an asset, pause all new deposits until a date fixed at deployment, change the protocol fee up to the cap, and hand the admin role to another key. Handover takes two steps on Ethereum and Base, and one step on Solana.

The admin cannot move user funds, pause withdrawals, change the fee recipient, or change the verifying key.

The Ethereum and Base pool has no upgrade path. The Solana program has an upgrade authority, as Solana programs do. Until that authority sits behind a multisig with a delay, or is removed, its holder can replace the program and every rule in it, including the rules about funds. That move is required before mainnet and has not been made. The signers are not chosen.

Keys in the client

  • One spending secret, from a wallet signature over a fixed message or from 24 words.
  • Held in memory only after unlock. Not written to storage.
  • Dropped on lock, or after 30 minutes idle.
  • While unlocked, that page can spend the notes.

Gates before user funds

Network lines across a dark range, with the ZK Darkpool mark above one peak.
Order of work. Not a launch date.
  1. Public testnets.
  2. The two circuit decisions that must be settled before a ceremony.
  3. Fee-recipient contracts, written and reviewed first, because the recipient is immutable after deployment.
  4. A setup ceremony with outside contributors, replacing development proving keys.
  5. An independent audit, with findings resolved.
  6. Mainnet with deposit caps. Solana upgrade authority delayed or removed.

Not built yet: viewing keys, a standalone recovery page, swaps inside the pool, and a path that funds the Ethereum and Base pools from Solana.

Also still open, and not assumed here: who would own any liquidity bought with fees, the exact launch fee inside the 1% cap, whether the Ethereum and Base pools check a sanctions list on depositors, and the licence under which source is published.

Risks

  • Development keys. Groth16 trusts the ceremony. Keys from a single development machine are not a ceremony. Forged proofs are possible until that changes.
  • No public deployment and no independent audit. Local tests and two internal reviews are the record so far. Reviews are not an audit.
  • The client holds the key. A bad or look-alike site that gets your signature or your 24 words can spend notes.
  • One relayer. If it is down, you submit yourself. That costs gas and, for a withdrawal, names your wallet.
  • Solana upgrade authority. Until it is constrained, the program can be replaced.
  • Edges leak. Deposits name a wallet and an amount. Withdrawals name an address and an amount. Unusual amounts and tight timing can reconnect them. Small pools hide less.
  • Network metadata. IP addresses and connection times are visible to the site, the relayer, and RPC providers.
  • Assets can freeze. A token issuer may still freeze or blacklist an address. The pool cannot undo that, and it also cannot undo its own acceptance of a deposit.
  • Legal. DarkSwap reported that no legal opinion had been obtained for this design. Privacy tools draw regulatory attention. This site does not add an opinion.

Sources

The numbers and limits above are restated from DarkSwap’s published description of its own ZK pools, so the successor protocol does not invent a second design.

Where a future deployment disagrees with this page, the deployment governs. Where DarkSwap’s terminal disagrees with this page about NEAR swaps, DarkSwap’s terminal governs those swaps.