Your bags are nobody’s business.

Veil Layer is a privacy Layer 2 on Solana. Send $VEYL or SOL with the amount, token and recipient hidden.

Solana, with a private side.

Veil Layer runs next to Solana and settles back to it. Same programs, same tools, plus a pool where transfers stay private.

  • Real Solana VM

    Agave’s solana-svm, embedded in the node. Your Solana programs run as is.

  • A private pool

    A zero-knowledge pool for $VEYL and SOL. Amount, token and recipient stay hidden.

  • Gas in $VEYL

    $VEYL is the native unit on Veil Layer. Every fee is paid in it.

  • Settles to Solana

    State roots and batch data will be posted to Solana mainnet.

In, across, out.

Three moves. Only the middle one is private, and that’s where your payments happen.

Shield

Move $VEYL or SOL from your account into the private pool. Alice puts in 250 VEYL, and going in is public.

Send privately

Pay anyone in the pool. Alice spends two notes, the new 250 and a 50 already in the pool, and makes two new ones: 180 for Bob, 120 back to her. A zero-knowledge proof shows the math adds up, and nothing more.

Unshield

Take funds out to any public account, whenever you like. Bob takes his 180 out, readable again.

What the chain seesSample data
  1. shield7Hc4…k2Pq → pool · 250 VEYL · $VEYL
  2. transferproof · 2 nullifiers · 2 commitments
  3. fee payer7Hc4…k2Pq, public in v1 until the relayer ships
  4. unshieldpool → 9mWe…Lr2c · 180 VEYL · $VEYL

Privacy needs a crowd. While the pool is small, timing and matching amounts, like 250 in and 250 out, can link an exit to a deposit.

Under the hood
  • A note is asset, amount, owner key and a random blinding. The chain stores only its Poseidon hash, the commitment.
  • Each private transfer is a 2-in, 2-out join-split proof: Merkle inclusion, ownership, correct nullifiers, value in equals value out.
  • Spending a note reveals its nullifier, so the same note can never be spent twice.
  • Notes are encrypted to the recipient. Wallets find theirs by trial decryption. Proofs are verified natively in the node.

Nothing minted. Nothing lost.

The bridge is the only thing that converts between 6 and 9 decimals, and it always rounds in the protocol’s favor.

  1. 1Deposit: ×1,000

    12.345678 SPL $VEYL arrives as 12.345678000 native $VEYL. Three places added, nothing invented.

    12,345,678 × 1,000 = 12,345,678,000 base units

  2. 2Hold: all nine places

    On Veil Layer every amount carries 9 decimals. Say your balance is now 12.345678912.

    12,345,678,912 base units

  3. 3Exit: ÷1,000, rounded down

    Only whole 1,000s of base units cross. 12.345678 goes back to Solana. The last 0.000000912 stays on Veil Layer, still yours.

    ⌊ 12,345,678,912 ÷ 1,000 ⌋ = 12,345,678 · 912 stay

Try any amount.

Same integer math as the bridge, done exactly in your browser.

VEYL

Exits move whole multiples of 1,000 base units. The rest stays yours.

Try
You get on Solana12.345678 VEYL
Stays on Veil Layer0.000000912 VEYL

⌊ 12,345,678,912 ÷ 1,000 ⌋ = 12,345,678 SPL base units · remainder 912

Escape hatch. If the operator stops or censors you, withdraw on Solana against the last valid root, under the same whole-unit rule.

SOL moves 1:1 with 9 decimals on both sides, and arrives on Veil Layer as wrapped SOL.

Calculator only. No funds move. The bridge opens to real value after the security gate, under deposit caps.

Run a full deposit and exit in the app

$VEYL. One token, two homes.

Trade it on Solana. Use it on Veil Layer. Same token, different decimals, converted only by the bridge.

6 decimals

On Solana

The SPL token. Tradeable, pump.fun-compatible, and what you bridge.

1 $VEYL = 1,000,000 base units

9 decimals

On Veil Layer

Native. Pays every fee, holds your balance, moves in the private pool.

1 $VEYL = 1,000,000,000 base units

Contract address

Announced at launch

Only trust the address posted through the official links on this site.

Buy $VEYL

Your Solana code runs as is.

Veil Layer embeds Agave’s solana-svm and speaks the Solana JSON-RPC. web3.js, wallet-adapter and the solana CLI work unchanged.

Sample session
Sample session.
# sample session: point the standard solana CLI at Veil Layer
$ solana config set --url $VEIL_RPC_URL
Config File: ~/.config/solana/cli/config.yml
RPC URL: $VEIL_RPC_URL
Keypair Path: ~/.config/solana/id.json
Commitment: confirmed
$ solana balance
12.345678912 SOL
# same CLI, so it says SOL. Here that unit is native $VEYL.
$ solana program deploy target/deploy/counter.so
Program Id: Cnt7r9QvZkW3pXh2MbYsL5aEdF8uGjN4oTqR1cVwKxBe
# fees and rent are paid in $VEYL
$ npx tsx balance.ts
12345678912
# base units: 12.345678912 $VEYL, 9 decimals

Runs unchanged

  • solana CLIPoint it at the Veil Layer RPC URL.
  • Your BPF programsDeploy them with the same command.
  • web3.jsSame JSON-RPC over HTTP and WebSocket.
  • wallet-adapterYour dapp connects as it does on Solana.
  • Preloaded programsSystem, SPL Token, Token-2022, ATA, Memo, Compute Budget.

Program state is public, like on Solana. The public RPC endpoint is published in Stage 9. The session above is a sample.

Try the JSON-RPC playground

Know exactly what you trust.

v1 is a Stage-0 rollup with a single operator. Here is what that means today, and what removes each trust.

What you trust today

One sequencer
Orders transactions and can censor or reorder them.
What fixes it: Escape hatch from day one. A sequencer set in Stage 10.
Alarm, not veto
Anyone can recompute the data and raise an alarm. Invalid roots aren’t rejected on-chain yet.
What fixes it: Enforced fraud proofs in Stage 10.
Visible fee payer
The public fee path can link whoever pays the fee to a private transfer.
What fixes it: The relayer, built in Stage 7.

Real value waits for all four.

  1. 01Escape hatch tested end to end
  2. 02Deposit caps in place
  3. 03Sound proof setup published
  4. 04External audit of the bridge and the private pool

Checked at the Stage 8 security gate. Until then, the bridge and the pool take no real value.

Ten stages. Real value comes last.

A sequence, not a schedule. Every stage is built to production grade.

  1. Stage 1

    Prove Solana programs run

    Show the Solana VM running inside Veil Layer.

    • solana-svm on pinned Agave crates
    • A System transfer, proven in a test
  2. Stage 2

    A real chain

    Blocks, state and a Solana-compatible RPC.

    • Mempool and block production
    • Solana JSON-RPC over HTTP and WebSocket
    • Standard programs preloaded
  3. Stage 3

    Lock it down

    Protect the keys and keep the single sequencer healthy.

    • Sequencer key in an HSM
    • Rate limits and DDoS protection
    • Monitoring and a failover plan
  4. Stage 4

    See every block

    Index the chain and make it browsable in an explorer.

    • Indexer from slot 0
    • Explorer with live updates
  5. Stage 5

    Anchor to Solana

    Write Veil Layer’s record onto Solana mainnet.

    • Settlement program on Solana
    • State roots and batch data posted
    • Rollup status in the explorer
  6. Stage 6

    Bridge and exit door

    Move SOL and $VEYL between chains, with a forced exit built in. No real value yet.

    • Deposits, withdrawals and claims
    • 6 to 9 decimal scaling
    • Escape hatch, deposit caps kept closed
  7. Stage 7

    Turn on the veil

    The private pool, the client that finds your notes, and the relayer.

    • Circuits and the proof system
    • Shielded pool inside the node
    • Shielded client and relayer
  8. Stage 8

    Prove it’s safe first

    Audit, publish the proof setup, test the escape hatch.

    • Internal review, then an external audit
    • Proof setup published
    • Escape hatch tested end to end

Security gate Real value opens only after this point.

  1. Stage 9

    Open the doors, carefully

    Real value goes in, slowly and under caps.

    • Bridge opens under conservative caps
    • Private pool: $VEYL first, then wSOL
    • Public RPC and explorer published
  2. Stage 10

    Harden and decentralize

    Remove trust from the operator and widen what the bridge carries.

    • Relayer for everyone, encrypted mempool
    • Enforced fraud proofs, then a sequencer set
    • More assets over the bridge

Straight answers.

Something missing? Ask on Telegram

Is Veil Layer trustless?

Not in v1, and we say so up front. It starts as a Stage-0 rollup: one sequencer that can censor or reorder, and a challenge window where anyone can raise an alarm but bad roots aren’t rejected on-chain yet. The escape hatch lets you exit on Solana if the sequencer fails you.

Do I need SOL for gas?

Not on Veil Layer. Every fee there is paid in $VEYL, and SOL only exists on the L2 as bridged wrapped SOL. Deposits and withdrawal claims happen on Solana, so those transactions pay Solana’s own fees in SOL.

Does Phantom work?

On Solana, yes: SPL $VEYL is a standard SPL token. On Veil Layer, the RPC is built so wallet-adapter works unchanged, and a wallet can connect if it lets you set a custom network. Private notes need a shielded client, like the one in the Veil Layer SDK.

What if the sequencer goes offline or blocks me?

Use the escape hatch: a forced-withdrawal path on Solana that pays out against the last valid posted root, with the same whole-unit rule as a normal exit. It must pass an end-to-end test at the security gate before any real value goes in.

Is it audited?

Not yet. Stage 8 runs an internal review, then an external audit of the bridge and the private pool. Neither opens to real value before that.

When is mainnet?

There’s no date. Veil Layer follows a sequence of stages, and the bridge and private pool open to real value only after the Stage 8 security gate. The contract address will be announced at launch through the official links on this site.

Watch it get built. Stage by stage.

Contract address: announced at launch