Step by step
1
User signs a transaction
The wallet is connected to Veilify Network. The user signs a standard EIP-1559 transaction, for example “Send 0.5 ETH to 0xAlice”. The wallet shows its normal confirmation screen. There is no special UI and no change of workflow.
2
Proxy intercepts
The Veilify RPC proxy receives
eth_sendTransaction (or the raw signed transaction). It parses the intent: recipient, amount and token. It checks whether the recipient has a registered inbox key. Then it selects funding notes (UTXOs) from the sender’s veiled balance.3
Zero-knowledge proof
A Noir circuit proves, without revealing private data:
- the transaction was authorized by a valid ECDSA signature
- every input note exists in the note tree (Merkle membership)
- every input note is unspent (nullifier derivation)
- inputs cover outputs plus fees (balance conservation)
- output notes are correctly encrypted to the recipient
4
Relayer submission
An allowlisted relayer submits the proof to the pool contract and pays gas. It is reimbursed from the transaction’s fee allocation. The sender’s address and IP never touch the chain.
5
On-chain verification
The pool contract:
- verifies the proof against the verifier’s key
- records each note nullifier, which blocks double-spending
- records the transaction nullifier, which blocks replay
- appends new note commitments to the Merkle tree
- emits the encrypted note data in
NoteAddedevents
6
Recipient scans
The recipient’s proxy trial-decrypts new notes with their incoming viewing key. Matching notes are added to their veiled balance.
The UTXO model
Like Bitcoin and Zcash, Veilify tracks value as unspent outputs, not account balances. Each output is a note: an encrypted container that holds- the owner (a commitment to the hashed inbox key)
- the value and token (
coinId) - random trapdoors that blind both
- a link to the nullifiers of the notes that created it
Withdrawals and rounds
A withdrawal has two modes:- Instant: the exit is proven and sent as soon as you sign.
- Round: the exit is queued and sent at the next round. Withdrawals scheduled for the same round leave together. A staggered exit can spread its legs across several rounds.