Skip to main content
Deep Dive
// SEGMENT: TECHNOLOGY// UTXO_PRIVACY_POOL.V1

How NixProtocol Works

A UTXO-based privacy pool using Noir ZK circuits, Grumpkin curve cryptography, and UltraHonk proofs to enable private ERC-20 transfers on EVM chains.

CIR
3
ZK Circuits
MRK
20
Merkle Depth
UTX
2:2
UTXO In/Out
HIS
100
Root History

Modular Privacy Infrastructure

Five modular components that work together to enable UTXO-based private payments on any EVM chain.

Noir Circuits

offchain

Zero-Knowledge Proof System

Three Noir ZK circuits (deposit, registration, transact) compiled to UltraHonk proofs via Barretenberg. Proofs authorize transactions instead of signatures, enabling gas abstraction through relayers.

Deposit Circuit

Proves noteHash integrity: Poseidon2(ownerPk, amount, salt, token)

Registration Circuit

Proves identity commitment knowledge with auditor encryption and replay protection

Transact Circuit

2-in/2-out UTXO transfers with Merkle inclusion, nullifier derivation, and balance proofs

In-Browser Proving

WASM-based proof generation via Barretenberg UltraHonk in the browser

Technical Specifications

LanguageNoir v1.0.0-beta.9
Proving BackendBarretenberg UltraHonk
Proof Time15-60 seconds (browser)
Transact Inputs27 public, 34 private

NixPool Contract

onchain

On-Chain Privacy Pool

Solidity smart contract managing the UTXO privacy pool. Handles deposits, transfers, withdrawals, and registration with on-chain Merkle trees and UltraHonk proof verification.

UTXO Note Management

Incremental Merkle tree forest (depth 20) storing note commitments

Nullifier Tracking

Prevents double-spending via nullifier set with Poseidon2 derivation

Proof Verification

Three on-chain UltraHonk verifiers for deposit, registration, and transact

ERC-20 Integration

Supports any ERC-20 token with ERC-2612 permit for streamlined approvals

Technical Specifications

Solidity0.8.28 with via_ir optimizer
Tree Capacity1M notes per tree (depth 20)
Root History100 most recent roots
SecurityCEI pattern + nonReentrant

Nix Wallet

offchain

Client Wallet Library

TypeScript library providing wallet operations and cryptographic primitives: deterministic key derivation via Poseidon2, Grumpkin elliptic curve operations, ECIES encryption, NixAddress encoding, balance tracking, and ZK proof generation. Private keys are derived from EVM wallet signatures and never persisted.

Poseidon2 Key Derivation

Deterministic Grumpkin keys from EVM wallet signatures via Poseidon2 hashing

ECIES Encryption

Elliptic curve encryption on Grumpkin for recipient notes and auditor data

NixAddress

Encodes commitment + public key (nix:'<'commitment>:'<'pk.x>:'<'pk.y>) for private payments

Balance Tracking

Event scanning, trial decryption, and encrypted balance reconstruction

Technical Specifications

CurveGrumpkin (embedded in BN254)
HashPoseidon2 (254-bit output)
Key DerivationPoseidon2(sig chunks) from EVM wallet
Address Formatnix:'<'commitment>:'<'pk.x>:'<'pk.y>

Nix Relayer

offchain

Gas Abstraction Layer

Express.js relay service that submits ZK-proven transactions on behalf of users. Since proofs authorize transactions (not signatures), users never reveal their address. Dynamic fee calculation via Chainlink.

ZK Authorization

Proofs authorize transactions, not signatures. Relayer cannot steal or modify.

Dynamic Fees

Chainlink-based fee calculation with 30% margin and $0.50 minimum

Rate Limiting

20 requests/min per IP with gas price caps (reject > 100 Gwei)

Proof Validation

Pre-validates proofs and simulates transactions before submission

Technical Specifications

RuntimeExpress.js + TypeScript
Fee ModelgasCost * 1.3, min $0.50
Rate Limit20 req/min per IP
Trust ModelUntrusted (can only censor)

Nix SDK

offchain

Client Library & Developer Interface

TypeScript SDK for building on NixProtocol. Handles note management, Merkle tree reconstruction, proof generation, event scanning, and contract interactions.

Note Management

Event scanning, trial decryption, and UTXO note selection

Proof Generation

Client-side ZK proof creation via Barretenberg WASM in browser

Merkle Tree

Client-side Poseidon2 Merkle tree for witness generation

Event Cache

IndexedDB-based event cache for efficient note discovery

Technical Specifications

RuntimeBrowser (WASM) & Node.js
Key Functions20+ API functions
Proof BackendBarretenberg UltraHonk
Type SafetyFull TypeScript support

Multi-Chain Support

Deploy on any EVM-compatible blockchain. Same privacy guarantees everywhere.

Avalanche Fuji

Testnet Live

Base Sepolia

Testnet Live

Avalanche

Coming Soon

Ethereum

Planned

Arbitrum

Planned

Security Model

Built on peer-reviewed cryptographic primitives with defense-in-depth security.

Proven Primitives

Built on Grumpkin curve, Poseidon2 hashing, ECIES encryption, and UltraHonk ZK proofs.

Security Audit In Progress

Formal security audit underway, with on-chain contract verification on testnet. Licensed partners receive full source access for independent review.

Testnet Deployed

Live on Avalanche Fuji & Base Sepolia testnets. Mainnet deployment planned after formal security audit completion.

Defense in Depth

Checks-Effects-Interactions pattern, reentrancy guards, u64 range checks, replay protection via chain_id.

// SYSTEM: READY

Start Building Today

Testnet live on Avalanche Fuji & Base Sepolia. Explore the docs, try the demo, or talk to our team about integration.