# `Attesto.CNonceStore.ETS`
[🔗](https://github.com/XukuLLC/attesto/blob/v2.0.1/lib/attesto/c_nonce_store/ets.ex#L1)

Single-node ETS implementation of `Attesto.CNonceStore`.

Nonces are random 128-bit base64url strings held in a public ETS table
owned by a `GenServer` that sweeps expired entries. Validation (`valid?/1`) is
non-consuming, so a c_nonce may be used by several proofs in one batch;
`consume/1` atomically single-uses it (via `:ets.take/2`) once per request.

This is a per-node store; a multi-node deployment MUST back
`Attesto.CNonceStore` with a shared store. Like the other ETS stores it
refuses to boot on a clustered BEAM unless `multi_node_acknowledged?: true`.

Start options: `:sweep_interval_ms` (default `30_000`),
`:multi_node_acknowledged?` (default `false`).

# `reset`

```elixir
@spec reset() :: :ok
```

Clear every entry. Test-facing.

# `start_link`

```elixir
@spec start_link(keyword()) :: GenServer.on_start()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
