Supported Networks

Deployments

Network
Virtual Chain ID
Contract (Proxy)
App URL

Ethereum Sepolia (testnet)

43611

0x8D7E5c312eFeb54124C4966005F923D3A3b0E04D

Hardhat (local development)

43613

0xF9884b1ceF2AadFcFec536191679ee4240a8C6c9

localhost

Ethereum Mainnet

43615

0x88888888Eb71E1D68aD0C471C6893EdEEa00B026

MegaETH

43616

0x8888888838DFf5A522118E461a2B926bB8Bfb4A2

Arbitrum One

43617

0x8888888838DFf5A522118E461a2B926bB8Bfb4A2

Coming soon

Base

43618

0x8888888838DFf5A522118E461a2B926bB8Bfb4A2

BSC

43619

0x8888888838DFf5A522118E461a2B926bB8Bfb4A2

Virtual Chain IDs

Nullmask uses virtual chain IDs to distinguish its network from the underlying chain. These IDs are used in:

  • The wallet's network configuration

  • Transaction nullifier computation

  • The ZK circuit's public inputs

The virtual chain ID is set as an immutable in the Nullmask contract constructor and verified during proof validation.

Deploying to a New Network

To deploy Nullmask on a new EVM chain:

The deployment script deploys in order:

  1. ZKTranscriptLib (shared library)

  2. ShieldedTransferVerifier, ShieldedWithdrawalVerifier, ShieldedSwapVerifier (with library linking)

  3. AdminUpgradeController (admin = deployer)

  4. Poseidon2T4Unrolled (hash library)

  5. Nullmask implementation (with Poseidon2T4Unrolled library linking)

  6. NullmaskProxy (ERC1967Proxy pointing to implementation)

  7. Call initialize() on proxy

The proxy address is the canonical Nullmask address for all interactions.

Last updated