Shielded UTXO Pools: Managing Private Value as Unlinkable Cryptographic Notes
Account-based ledgers expose balances and update paths. A shielded UTXO pool uses a different model: value exists as separate notes hidden inside commitments. To spend, the owner proves that one or more notes belong to the commitment tree and have not been spent, without identifying the notes publicly.
New commitments are appended for the outputs, and nullifiers are published for consumed inputs. The resulting state transition preserves conservation of value while breaking the visible link between deposits, internal transfers, and withdrawals.
Private Notes, Commitments, and Nullifiers
A shielded UTXO pool is a contract or protocol state that stores commitments to private notes. Users generate zero-knowledge proofs of membership, ownership, and valid balance transitions; the protocol checks nullifiers to prevent double-spending and updates the Merkle root as new notes are created.
Operating the Note Lifecycle at Scale
The operational layer must index commitments, derive user notes, maintain current roots, handle concurrent spends, estimate proving resources, and synchronize nullifier status. Deposits and withdrawals also need controls to avoid obvious amount and timing links that reduce the effective anonymity set.
Infrastructure for Private Asset Pools
Neti architects shielded UTXO systems, note lifecycle services, indexers, relayers, and compliance-ready viewing models for payment and asset applications.
FAQ
Why not delete a note after it is spent?
Deleting the exact leaf would reveal which commitment was used. The tree remains append-only, while a separate nullifier marks the note as spent.
How does a wallet know which notes belong to it?
The wallet scans encrypted note data using incoming viewing keys or receives indexed note information from a trusted or privacy-preserving service.
Can multiple asset types share one pool?
Yes, but the circuit and note format must enforce asset conservation and prevent value from being incorrectly transferred between asset identifiers.


