El nullifier es la huella por nota que permite al programa de SolMask detectar dobles gastos sin enterarse de qué depósito estás gastando. Cuando depositas, tu navegador elige un nullifier_secret aleatorio y lo combina con Poseidon dentro del commitment que se publica en cadena. Más tarde, al retirar, tu prueba de conocimiento cero revela únicamente el hash Poseidon de ese mismo secreto: ese hash es el nullifier.
El programa mantiene en cadena un conjunto con todos los nullifiers que se han usado alguna vez. La instrucción de retiro rechaza cualquier prueba cuyo nullifier ya esté en el conjunto, de modo que cada nota solo puede gastarse una vez. Lo importante es que el nullifier es una función determinista del secreto: dos depósitos distintos producen dos nullifiers distintos, y un observador no puede vincular un nullifier a un commitment concreto sin romper la resistencia a la preimagen de Poseidon.
Como el nullifier se revela al retirar pero el vínculo entre nullifier y commitment queda oculto por la prueba, evitar el doble gasto no cuesta privacidad. Ese es justo el objetivo de la construcción.