> For the complete documentation index, see [llms.txt](https://unirep.gitbook.io/unirep/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://unirep.gitbook.io/unirep/protocol/glossary/epoch-key.md).

# Epoch Key

Definition of epoch key in UniRep

* *Epoch keys* are temporary personas which users use them to interact with others.
* Instead of giving attestations to an `identityCommitment`, a random-value-like `epochKey` is the **receiver** of an attestation.
* Epoch key is computed by

```typescript
hash(identityNullifier, epoch, nonce) % epochTreeDepth
```

where `nonce` and be any value between `0` and `numEpochKeyNoncePerEpoch - 1`, so that a user can have `numEpochKeyNoncePerEpoch` epoch keys per epoch.

* Only the user knows his `identityNullifier` so only he knows if he is receiving an attestation, others would see an attestation attesting to a random value.
* In the [epoch key proof](/unirep/protocol/circuits/epoch-key-proof.md) circuit user can prove that he knows the `epochKey` and can rightfully receive and process the attestations attested to this `epochKey`.

{% hint style="info" %}
See also

* [Epoch](/unirep/protocol/glossary/epoch.md)
* [Epoch Transition](/unirep/protocol/glossary/epoch-transition.md)
* [User State Transition](/unirep/protocol/glossary/user-state-transition.md)
* [Epoch Key Proof](/unirep/protocol/circuits/epoch-key-proof.md)
  {% endhint %}
