Virtual Network
Concept
Nullmask introduces itself to the user's wallet as a virtual private EVM network. This is not a real blockchain — it is a mechanism that places a custom RPC proxy between the wallet and the actual blockchain node.
When the user adds the Nullmask network to their wallet, they are configuring the wallet to send all RPC requests to the Nullmask proxy server instead of directly to a blockchain node.
Why a Virtual Network?
The virtual network approach solves the fundamental UX problem of privacy protocols:
Dedicated wallet (Railgun)
New wallet, new seed phrase
Poor — fragmented experience
Web app (Tornado Cash)
Browser interaction, note management
Moderate — extra steps
SDK integration (Kohaku)
Wallet code changes
Blocked — requires wallet adoption
Virtual network (Nullmask)
Add network to existing wallet
Seamless — no behavior change
How It Works
Adding the Network
During onboarding, the user's wallet is prompted to add a new network with:
Network Name: Nullmask (or chain-specific name)
RPC URL: The proxy server URL with an embedded access token
Chain ID: A virtual chain ID (e.g., 43615 for Ethereum Mainnet)
Currency Symbol: ETH (same as the underlying chain)
All these parameters are preconfigured by the app — the user only confirms a wallet dialog.
Transaction Interception
When the user sends a transaction on the Nullmask network:
The wallet constructs and signs a standard EIP-1559 transaction
The wallet sends
eth_sendTransaction(oreth_sendRawTransaction) to the proxyThe proxy detects it as a value transfer and shields it:
Generates a ZK proof
Submits via the relayer
The proxy returns a transaction status to the wallet
Balance Queries
When the wallet queries eth_getBalance or ERC-20 balanceOf:
The proxy intercepts the call
Instead of querying the blockchain, it returns the user's shielded balance from local note storage
The wallet displays the shielded balance as if it were a normal balance
Access Token
Unlike a traditional RPC node where all data is public, the Nullmask proxy must restrict data access. An access token is embedded in the RPC URL and stored as an HTTP-only cookie. This token:
Derives from the user's ECDSA signature (deterministic)
Isolates each user's private data (keys, notes, transactions)
Persists across sessions via secure cookies
Local vs Remote Deployment
The proxy can run in two modes:
Remote Server
Accessed via a web page (the default deployment)
Full on-chain privacy is maintained
The server operator can observe user transfers
No installation required
Local Device
Runs on the user's mobile device or as a browser extension
Full privacy — no third party sees transfers
Requires installation
Last updated