> For the complete documentation index, see [llms.txt](https://valargroup.gitbook.io/shielded-vote-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://valargroup.gitbook.io/shielded-vote-docs/circuit-components/share-nullifier.md).

# Share Nullifier

**Used in:** ZKP #3 (condition 5)

## What it does

Derives a nullifier for an individual vote share, preventing the same share from being counted twice.

## Circuit

```
share_nullifier = H("share spend", vote_commitment, share_index, blind)
```

Where:

* `"share spend"` — a domain-specific personalization string
* `vote_commitment` — the VC this share belongs to (private witness)
* `share_index` — which of the 16 shares (0..15)
* `blind` — the per-share blind factor (reused with the share commitment corresponding to this nullifier)

## Properties

* **Deterministic** — the same share always produces the same nullifier
* **Unlinkable** — `vote_commitment` is private, so the nullifier cannot be linked to a specific VC without knowledge of the commitment
* **Unique** — different shares in the same VC produce different nullifiers (different `share_index` and `blind`)

## Out-of-circuit check

The vote chain verifies that `share_nullifier` has not been seen before, preventing double-counting.
