{"version":1,"id":"nullmask","title":"Nullmask","summary":"Nullmask is a privacy protocol that enables shielded deposits, transfers, withdrawals and swaps across multiple chains while integrating into standard EVM wallets without requiring a new seed or dedicated wallet app.","content":"**Nullmask** is a zero-knowledge (ZK) privacy protocol that lets users make transactions on [Ethereum Virtual Machine (EVM)](https://iq.wiki/wiki/ethereum-virtual-machine-evm) [blockchains](https://iq.wiki/wiki/blockchain) private by shielding assets into a pool and transacting inside it without leaving an on-chain link between deposits and withdrawals.[\\[1\\]](#cite-id-b9xwt6asdl)​[\\[2\\]](#cite-id-xcnyvw2b0a) Introduced on 17 March 2026 as a protocol designed and authored by cryptographer Tomas Krnak, its cryptographic architecture and technical documentation are published under his name rather than a named corporate entity.[\\[8\\]](#cite-id-duyy5p48hj) The protocol is distinguished by installing as a \"virtual network\" inside a user's existing wallet rather than requiring a separate application, dedicated wallet, or new [seed phrase](https://iq.wiki/wiki/seed-phrase).[\\[1\\]](#cite-id-b9xwt6asdl) Its central design claim is that spending authority never leaves the user's wallet, because shielded actions are authorized with standard [Ethereum](https://iq.wiki/wiki/ethereum) transactions.[\\[3\\]](#cite-id-544e20pe42) The project summarizes its own purpose with the phrase \"Make any wallet and any transaction private — in one click.\"[\\[4\\]](#cite-id-m89t8z89i7)​\n\n## Overview\n\nNullmask is a privacy layer for [EVM](https://iq.wiki/wiki/ethereum-virtual-machine-evm)-compatible [blockchains](https://iq.wiki/wiki/blockchain). Users deposit, or \"shield,\" assets into a zero-knowledge pool, conduct transfers and swaps privately within it, and later \"unshield\" funds to any address, with the protocol designed so that no observable on-chain relationship exists between the original deposit and the eventual withdrawal.[\\[1\\]](#cite-id-b9xwt6asdl)​[\\[2\\]](#cite-id-xcnyvw2b0a) The protocol supports four private operations: shielded deposits, shielded transfers, shielded withdrawals, and shielded swaps.[\\[6\\]](#cite-id-fxpp8ee4yn)​\n\nThe protocol does not run its own [blockchain](https://iq.wiki/wiki/blockchain). Instead it builds on existing [layer 2](https://iq.wiki/wiki/layer-2) (L2) infrastructure to attach a shielded account to a user's wallet, and it treats actions on its own network as \"intents for shielded actions\" that are ultimately executed on the underlying [EVM](https://iq.wiki/wiki/ethereum-virtual-machine-evm) chains.[\\[3\\]](#cite-id-544e20pe42) The project is tagged by third-party trackers under the \"zk\" and \"Privacy\" categories.[\\[1\\]](#cite-id-b9xwt6asdl)​[\\[5\\]](#cite-id-ytaaf9vyt9)​\n\n## Design and Architecture\n\n### Privacy Pool and Proofs\n\nFunds shielded into Nullmask are held in a UTXO-based privacy pool, a model in which balances are represented as discrete unspent outputs rather than a single mutable account balance. The pool is secured using Poseidon2 commitments and Merkle membership proofs, cryptographic structures that let the protocol confirm a deposit belongs to the pool without revealing which specific deposit it is.[\\[6\\]](#cite-id-fxpp8ee4yn) When a user initiates an action, the protocol intercepts the transaction, generates a [zero-knowledge proof](https://iq.wiki/wiki/zero-knowledge-proofs-zkps) on the client side, and submits it through a relayer, an intermediary that broadcasts the transaction so the original sender's identity is not exposed on-chain.[\\[6\\]](#cite-id-fxpp8ee4yn)​\n\nShielded Transfers allow tokens to be sent without revealing the sender, recipient, or amount on-chain. Shielded Swaps execute [Uniswap](https://iq.wiki/wiki/uniswap) V2 trades without exposing the user's identity, and private deposits and withdrawals are each validated by [zero-knowledge proofs](https://iq.wiki/wiki/zero-knowledge-proofs-zkps).[\\[6\\]](#cite-id-fxpp8ee4yn) Private transfer amounts are hidden by design, which the project's analytics methodology notes means they are not included in reported volume figures.[\\[2\\]](#cite-id-xcnyvw2b0a)​\n\n### Virtual Network and Wallet Integration\n\nRather than operating as a standalone application, Nullmask installs into a user's wallet as a virtual network, a one-time setup the project describes as taking about 20 seconds.[\\[3\\]](#cite-id-544e20pe42) The virtual network uses Nullmask RPC middleware to decrypt shielded balances and to translate outgoing transactions into their shielded equivalents. This middleware can run remotely for faster onboarding or locally for what the project describes as maximum privacy.[\\[3\\]](#cite-id-544e20pe42) Once installed, the protocol states that users can send, withdraw, and interact with decentralized applications directly from their existing [web3](https://iq.wiki/wiki/web3) wallet without a separate app.[\\[3\\]](#cite-id-544e20pe42)​\n\nThe protocol is designed to work with [MetaMask](https://iq.wiki/wiki/metamask) and any wallet compatible with EIP-1559, the [Ethereum](https://iq.wiki/wiki/ethereum) transaction fee standard, and it preserves a standard wallet user experience.[\\[6\\]](#cite-id-fxpp8ee4yn) Nullmask uses standard 0x addresses and [Ethereum Name Service (ENS)](https://iq.wiki/wiki/ens) names rather than a separate shielded address scheme, and because it is backed by a wallet's existing seed, the project states no additional [seed phrase](https://iq.wiki/wiki/seed-phrase) must be stored.[\\[3\\]](#cite-id-544e20pe42) It also supports [hardware wallets](https://iq.wiki/wiki/hardware-wallet), and the project states it provides full security without extracting spending authority from the device.[\\[6\\]](#cite-id-fxpp8ee4yn)​\n\n### Approach to Spending Authority\n\nA recurring theme in Nullmask's self-published design documentation is its handling of spending authority. The project contrasts its approach with other privacy solutions it names directly — [Railgun](https://iq.wiki/wiki/railgun), [0xbow](https://iq.wiki/wiki/0xbow), [Hinkal](https://iq.wiki/wiki/hinkal), zERC20, and [Zcash](https://iq.wiki/wiki/zcash) — which it claims rely on extracting spending authority from the wallet.[\\[3\\]](#cite-id-544e20pe42) According to the documentation, extracting spending authority makes those approaches prone to phishing attacks and violates what it calls the fundamental principle of [hardware wallets](https://iq.wiki/wiki/hardware-wallet), that spending authority never leaves the device.[\\[3\\]](#cite-id-544e20pe42)​\n\nThe documentation states that [Railgun](https://iq.wiki/wiki/railgun) and [Zcash](https://iq.wiki/wiki/zcash) addressed this by requiring an additional signature over the shielded transaction, but that both rely on custom hash functions — it names Zcash Orchard's Sinsemilla and Railgun's \"various-rate Poseidon\" — which it claims require large precomputed lookup tables that are impractical for the constrained environment of a [hardware wallet](https://iq.wiki/wiki/hardware-wallet).[\\[3\\]](#cite-id-544e20pe42) Nullmask instead authorizes shielded transactions with standard EIP-1559 transactions, which it states are already implemented in every hardware wallet, allowing shielded transactions from a hardware wallet with no change to the wallet's code. The project summarizes its position with the statement that \"privacy wins when it stops feeling like a tradeoff.\"[\\[3\\]](#cite-id-544e20pe42)​\n\n### Compliance Features\n\nNullmask includes built-in compliance tooling intended to limit abuse of the privacy pool. The protocol performs deposit screening and offers retrospective taint recovery through revocation keys, a mechanism the documentation presents as allowing previously accepted deposits to be traced back if they are later found to be illicit.[\\[6\\]](#cite-id-fxpp8ee4yn) The project's analytics methodology notes that funds pending screening are excluded from reported total value locked.[\\[2\\]](#cite-id-xcnyvw2b0a)​\n\n### Governance and Control\n\nNullmask's pool contracts are deployed behind an ERC1967 wrapper using the UUPS proxy pattern, so users interact with a proxy address while contract logic can be upgraded through an authorized upgrade controller.[\\[9\\]](#cite-id-567rgxvdjr) At launch, upgrade permission is held by an `AdminUpgradeController` contract, which functions as a single upgrade admin and is initially controlled by the deployer.[\\[9\\]](#cite-id-567rgxvdjr) The upgrade authority itself is upgradeable through the `setUpgradeController()` function, which can transfer the `upgradeController` role to alternative arrangements such as a timelock contract, a multisignature wallet, or a DAO governance contract, with only the current `upgradeController` authorized to perform this migration.[\\[9\\]](#cite-id-567rgxvdjr)​\n\nCompliance-related parameters are also tied to this upgrade controller. The guard address, which is a privileged contract state variable, can be changed either by the existing guard or by the upgrade controller via `setGuard()`, while the verifier contracts and whitelist manager are updated through functions that require upgrade-controller approval.[\\[9\\]](#cite-id-567rgxvdjr)​[\\[10\\]](#cite-id-d1hha4rbk6) The guard operates as a backend service that monitors deposits into the privacy pool and is the only address permitted to call `approveDeposit()` and `rejectDeposit()`, and with each approved deposit it publishes a revocation key pair whose public components and hash are embedded in the deposit event and commitment.[\\[10\\]](#cite-id-d1hha4rbk6)​[\\[11\\]](#cite-id-huhkcj0mgs) These revocation keys enable retrospective taint recovery by allowing participants to detect whether their notes are funded by a subsequently flagged deposit, prove disassociation from tainted funds, or selectively clean affected balances, with control over the revocation mechanism mediated through the guard service and the upgrade controller described in the smart-contract specification.[\\[11\\]](#cite-id-huhkcj0mgs)​[\\[9\\]](#cite-id-567rgxvdjr)​\n\n## Supported Chains and Assets\n\nNullmask's documentation lists deployments on [Ethereum](https://iq.wiki/wiki/ethereum), [Arbitrum](https://iq.wiki/wiki/arbitrum), [MegaETH](https://iq.wiki/wiki/megaeth), [Base](https://iq.wiki/wiki/base), and BSC (BNB Smart Chain), and the protocol supports native ETH alongside any supported [ERC-20](https://iq.wiki/wiki/erc-20) token.[\\[6\\]](#cite-id-fxpp8ee4yn) The project's analytics dashboard, which reflects live operation, records the [privacy pools](https://iq.wiki/wiki/privacy-pools) as active on two chains: Ethereum, supporting ETH and [USDT](https://iq.wiki/wiki/tether) and live since 1 October 2026, and [Base](https://iq.wiki/wiki/base), supporting [ETH](https://iq.wiki/wiki/ether-eth) and [USDC](https://iq.wiki/wiki/usdc) and live since 7 October 2026.[\\[2\\]](#cite-id-xcnyvw2b0a) The pool contract is deployed at the same address on both chains, with activity viewable through the [Etherscan](https://iq.wiki/wiki/etherscan) and Basescan [block explorers](https://iq.wiki/wiki/block-explorer).[\\[2\\]](#cite-id-xcnyvw2b0a)​\n\n## MASK Token\n\nThe MASK token is issued on the [Solana](https://iq.wiki/wiki/solana) [blockchain](https://iq.wiki/wiki/blockchain) and is tracked by data aggregators under the Solana ecosystem.[\\[5\\]](#cite-id-ytaaf9vyt9)​[\\[2\\]](#cite-id-xcnyvw2b0a) Supply figures reported by data providers differ slightly: [CoinMarketCap](https://iq.wiki/wiki/coinmarketcap) lists a total and maximum supply of 990,994,347 MASK, which the project self-reports as a fully [circulating supply](https://iq.wiki/wiki/circulating-supply), while [CoinGecko](https://iq.wiki/wiki/coingecko) lists a total supply of about 986.3 million against a maximum supply of 1 billion.[\\[7\\]](#cite-id-rlvy8ucfio)​[\\[5\\]](#cite-id-ytaaf9vyt9) The token trades on both [decentralized exchanges](https://iq.wiki/wiki/decentralized-exchange), including [Meteora](https://iq.wiki/wiki/meteora), [Raydium](https://iq.wiki/wiki/raydium), and Manifest, and [centralized exchanges](https://iq.wiki/wiki/cex-centralized-exchange) such as [LBank](https://iq.wiki/wiki/lbank), [MEXC](https://iq.wiki/wiki/mexc), and KCEX, with [liquidity pools](https://iq.wiki/wiki/liquidity-pool) priced against SOL, [USDC](https://iq.wiki/wiki/usdc), and [USDT](https://iq.wiki/wiki/tether).[\\[5\\]](#cite-id-ytaaf9vyt9)​[\\[7\\]](#cite-id-rlvy8ucfio)​\n\nThe token is linked to the protocol's economics through a rewards and buyback system tied to [Zcash](https://iq.wiki/wiki/zcash) (ZEC). According to the project's dashboard, ZEC is distributed to MASK holders by StonkFun, with cumulative holder rewards of about $1.01 million recorded in early October 2026.[\\[2\\]](#cite-id-xcnyvw2b0a) Separately, ZEC earned by the development wallet — about $514,000 in total, valued at the daily ZEC price — is used to buy back MASK, and the dashboard reports that MASK burned on-chain amounted to roughly 1.22% of the token's 1 billion initial supply.[\\[2\\]](#cite-id-xcnyvw2b0a)​\n\nAs of October 2026, available protocol documentation and smart-contract references do not describe any on-chain governance rights for MASK over the Nullmask pool contracts, where upgrade authority instead resides with the [EVM](https://iq.wiki/wiki/ethereum-virtual-machine-evm)-side upgrade controller contracts.[\\[9\\]](#cite-id-567rgxvdjr) Public materials characterize MASK's economic role primarily through its linkage to ZEC-denominated rewards for holders and ZEC-funded buybacks that permanently burn tokens, rather than through fee-sharing mechanisms or [staking](https://iq.wiki/wiki/staking)-based governance over protocol parameters.[\\[2\\]](#cite-id-xcnyvw2b0a)​\n\n## Usage and Metrics\n\nThe project maintains a public analytics dashboard on [Dune](https://iq.wiki/wiki/dune) that derives its figures by decoding the pool contracts' on-chain events on each chain since launch, combining both chains for totals while also showing per-chain breakdowns. The dashboard notes that its data is not real-time, with widgets refreshed on schedules ranging from every 30 minutes to every 6 hours.[\\[2\\]](#cite-id-xcnyvw2b0a) In its methodology, volume is defined as the US dollar value of all shields and unshields priced at the minute of each transaction; [total value locked (TVL)](https://iq.wiki/wiki/tvl) is the funds currently shielded in the pools, excluding unclaimed protocol fees and deposits awaiting screening; and total transfers counts all pool operations, including deposits, withdrawals, private transfers, and swaps.[\\[2\\]](#cite-id-xcnyvw2b0a)​\n\nThe protocol charges a fee of 0.5% on each deposit and 0.5% on each withdrawal, and it states that relayer [gas](https://iq.wiki/wiki/gas) compensation is not counted as a protocol fee.[\\[2\\]](#cite-id-xcnyvw2b0a) From the [Ethereum](https://iq.wiki/wiki/ethereum) launch on 1 October 2026 through 8 October 2026, the dashboard recorded cumulative volume rising from about $1.07 million on the first day to roughly $15.97 million, generating cumulative fees of about $79,800.[\\[2\\]](#cite-id-xcnyvw2b0a) Daily activity peaked on 4 October 2026 with about $3.64 million in volume and 1,000 total transfers, before declining later in the week. [Base](https://iq.wiki/wiki/base) activity first appeared in the figures on 7 October 2026, contributing about $256,000 in volume that day.[\\[2\\]](#cite-id-xcnyvw2b0a) Across both chains, the dashboard reported total platform volume of about $16.03 million and total platform fees of about $80,100.[\\[2\\]](#cite-id-xcnyvw2b0a)​\n\n## Technology Stack\n\nNullmask is built as a monorepo spanning several components. Its zero-knowledge circuits use Noir, a language for writing ZK programs, together with the Barretenberg proving backend.[\\[6\\]](#cite-id-fxpp8ee4yn) The [smart contracts](https://iq.wiki/wiki/smart-contract) are written in [Solidity](https://iq.wiki/wiki/solidity) 0.8.28 and developed with the Hardhat v3 framework and [OpenZeppelin](https://iq.wiki/wiki/openzeppelin) v5 libraries.[\\[6\\]](#cite-id-fxpp8ee4yn) The frontend uses Next.js 15, React 19, and TailwindCSS 4, while backend services run on Fastify 5 and Node.js 24. The [web3](https://iq.wiki/wiki/web3) integration layer uses the Viem and Wagmi libraries, persistent storage uses LMDB, and the monorepo is managed with Turborepo and the pnpm package manager, alongside code-quality tooling that includes Biome, TypeScript 5.9, and knip.[\\[6\\]](#cite-id-fxpp8ee4yn)​\n\nThe protocol's documentation is published through GitBook and is organized into sections covering an introduction to the protocol, how it works, a protocol specification detailing cryptographic algorithms and proofs, a [Smart Contract](https://iq.wiki/wiki/smart-contract) Reference giving the [Solidity](https://iq.wiki/wiki/solidity) API for deposits, transfers, and swaps, an RPC API Reference describing the JSON-RPC methods exposed by the proxy, a Developer Guide for building and running the protocol locally, and a User Guide with step-by-step instructions.[\\[6\\]](#cite-id-fxpp8ee4yn) Each page is available in Markdown form, and the documentation can be queried programmatically through a GitBook API that returns direct answers with excerpts and sources drawn from the documentation.[\\[6\\]](#cite-id-fxpp8ee4yn)​","categories":[{"id":"projects-and-protocols","title":"projects-and-protocols"}],"tags":[{"id":"Privacy"},{"id":"DeFi"},{"id":"Infrastructure"},{"id":"Identity"},{"id":"Ethereum"}],"images":[{"id":"QmUbpXp7UJ6P954cv2LS242iffpoxmV9XtqqerG23813wJ","type":"image/jpeg, image/png"}],"media":[{"id":"QmUrkdzoYoXP64DaRNwiYqd7J5LyTPQG93Lru23jnk7uAu","name":"Cópia de Design sem nome (12).png","source":"IPFS_IMG","thumbnail":"QmUrkdzoYoXP64DaRNwiYqd7J5LyTPQG93Lru23jnk7uAu","caption":""}],"metadata":[{"id":"rootdata_profile","value":"https://www.rootdata.com/Projects/detail/Nullmask?k=MjYxMDA="},{"id":"website","value":"https://nullmask.io/"},{"id":"twitter_profile","value":"https://x.com/nullmaskio"},{"id":"coingecko_profile","value":"https://www.coingecko.com/en/coins/nullmask"},{"id":"contract_url","value":"https://docs.nullmask.io/"},{"id":"references","value":"[{\"id\":\"b9xwt6asdl\",\"url\":\"https://www.rootdata.com/projects/detail/Nullmask?k=MjYxMDA%3D\",\"description\":\"RootData describes Nullmask as a ZK privacy protocol\",\"timestamp\":1791511014404},{\"id\":\"xcnyvw2b0a\",\"url\":\"https://dune.com/nullmask/nullmask-official\",\"description\":\"Dune describes shield, transact, unshield workflow\",\"timestamp\":1791511014404},{\"id\":\"544e20pe42\",\"url\":\"https://hackmd.io/@krnak/Sy5zROAFWx\",\"description\":\"Design note on spending authority remaining in the wallet\",\"timestamp\":1791511014404},{\"id\":\"m89t8z89i7\",\"url\":\"https://nullmask.io/\",\"description\":\"Website states its one-click privacy claim\",\"timestamp\":1791511014404},{\"id\":\"ytaaf9vyt9\",\"url\":\"https://www.coingecko.com/en/coins/nullmask?chart=type%3Dprice%26mode%3Dline%26timeframe%3Dd7\",\"description\":\"CoinGecko classifies MASK in the Solana ecosystem\",\"timestamp\":1791511014404},{\"id\":\"fxpp8ee4yn\",\"url\":\"https://docs.nullmask.io/\",\"description\":\"Documentation lists the four shielded operations\",\"timestamp\":1791511014404},{\"id\":\"rlvy8ucfio\",\"url\":\"https://coinmarketcap.com/currencies/nullmask/\",\"description\":\"CoinMarketCap lists supply of 990.99M MASK\",\"timestamp\":1791511014404},{\"id\":\"duyy5p48hj\",\"url\":\"https://nullmask.io/NM%20WP%20Shareable.pdf\",\"description\":\"Nullmask whitepaper authored by Tomas Krnak\",\"timestamp\":1791511119571},{\"id\":\"567rgxvdjr\",\"url\":\"https://docs.nullmask.io/smart-contract-reference/contracts\",\"description\":\"Smart Contract Reference describing upgrade controller\",\"timestamp\":1791511119571},{\"id\":\"d1hha4rbk6\",\"url\":\"https://docs.nullmask.io/compliance/guard-service\",\"description\":\"Guard Service describes privileged guard address\",\"timestamp\":1791511119571},{\"id\":\"huhkcj0mgs\",\"url\":\"https://docs.nullmask.io/compliance/revocation-keys\",\"description\":\"Revocation keys describe retrospective taint recovery\",\"timestamp\":1791511119571}]"},{"id":"main-image-origin","value":"{\"imageId\":\"QmUbpXp7UJ6P954cv2LS242iffpoxmV9XtqqerG23813wJ\",\"originalId\":\"QmUbpXp7UJ6P954cv2LS242iffpoxmV9XtqqerG23813wJ\"}"},{"id":"commit-message","value":"Create Nullmask wiki"}],"events":[{"title":"Nullmask introduced and live on Ethereum","date":"2026-03-01","type":"DEFAULT","description":"Nullmask is introduced and becomes live on Ethereum as a privacy protocol.","link":"","country":"","continent":"","multiDateStart":null,"multiDateEnd":null,"id":"260d433d-f5e9-4113-9fc1-2366fa24c71b"},{"title":"Nullmask privacy pool live on Ethereum","date":"2026-10-01","type":"DEFAULT","description":"Nullmask deploys its Ethereum privacy pool for shielded transactions.","link":"","country":"","continent":"","multiDateStart":null,"multiDateEnd":null,"id":"80d9d3ff-feab-4161-bf22-5c4b8d1bf849"},{"title":"Nullmask privacy pool live on Base","date":"2026-10-01","type":"DEFAULT","description":"Nullmask launches its privacy pool on Base network.","link":"","country":"","continent":"","multiDateStart":null,"multiDateEnd":null,"id":"70ab30ec-057f-41a1-b453-d260f230fe5f"}],"linkedWikis":{"founders":[],"blockchains":["ethereum","arbitrum","megaeth","base","binance-smart-chain"],"speakers":[]},"user":{"id":"0x8af7a19a26d8fbc48defb35aefb15ec8c407f889"},"author":{"id":"0xd5893989b9952c6568a99F854795AcC5Ae480D56"},"language":"en","operator":{"id":"0xd5893989b9952c6568a99F854795AcC5Ae480D56"}}