Glossary
Note
A private UTXO — an encrypted value container with 6 fields. Note commitments are stored in the on-chain Merkle tree; encrypted note data is emitted in contract events
Note Commitment
A Poseidon2 hash of a note's fields, stored on-chain in the Merkle tree
Note Nullifier
A unique identifier revealed when spending a note: Poseidon2(commitment, nk)
Transaction Nullifier
A unique identifier for each signed transaction: Poseidon2(nk, nonce*2^32 + chainId, pk_hash)
Nullifiers Hash
Hash of all 6 input note nullifiers: Poseidon2(nf1, ..., nf6)
Viewing Key
A tuple (pk, nk, ivk, ovk) derived from a wallet signature; grants view access to transaction history
Receiving Key
A triple (pk, pnk, ek) derived from the Viewing Key; registered on-chain for receiving funds
Nullifying Key (nk)
A secret field element used to derive deterministic note nullifiers
Public Nullifying Key (pnk)
Hash of the nullifying key: Poseidon2(nk)
Incoming Viewing Key (ivk)
Field element for trial decryption of incoming notes
Outgoing Viewing Key (ovk)
Field element for encrypting/decrypting outgoing note receipts
Encryption Key (ek)
Grumpkin curve point for note encryption: ivk * G
Access Token
A 16-byte base64url token derived from the user's signature, used to authenticate proxy requests
RPC Proxy
The JSON-RPC server that sits between the wallet and the blockchain, orchestrating shielded operations
Relayer
A server that submits shielded transactions to the blockchain, paying gas fees
Guard
A service that screens and approves/rejects deposits into the privacy pool
Virtual Network
The custom EVM network added to the wallet, routing RPC calls through the Nullmask proxy
Virtual Chain ID
A protocol-specific chain ID (e.g., 43615 for Ethereum Mainnet) used in the virtual network
Privacy Pool
The Nullmask smart contract that holds deposited funds and manages the note Merkle tree
LeanIMT
Lean Incremental Merkle Tree — a Merkle tree where nodes without siblings propagate directly
Poseidon2 T4
A zk-SNARK-friendly hash function with state width 4
BN254
The pairing-friendly curve that defines the scalar field used by the proof system
Grumpkin
The embedded curve (base field = BN254 scalar field) used for in-circuit EC operations
UltraHonk
The ZK proof system used by Barretenberg
Barretenberg
The C++ proving backend developed by Aztec Protocol
Noir
A domain-specific language for writing ZK circuits
UUPS
Universal Upgradeable Proxy Standard — the upgrade pattern used by the Nullmask contract
EIP-1559
The Ethereum transaction format with maxFeePerGas and maxPriorityFeePerGas
Shielded Transfer
A private transfer between two addresses within the Nullmask pool
Shielded Withdrawal
A withdrawal from the pool to an external address (amount and recipient are public)
Shielded Swap
A private Uniswap V2 swap within the pool
Faerie Gold Attack
An attack where duplicate note commitments allow spending the same value multiple times
Revocation Key
A key pair published with each approved deposit, enabling retrospective taint recovery
Gas Escrow
ETH sent with deposits to cover the guard's gas costs
Trial Decryption
The process of attempting to decrypt each note to find ones belonging to a specific viewing key
LMDB
Lightning Memory-Mapped Database — used for persistent proxy state storage
Last updated