> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mojdelez.si/llms.txt
> Use this file to discover all available pages before exploring further.

# ZK dokazi (zasebnost)

> Kako stranka dokaže lastništvo kode brez razkritja skrivnosti.

## Zakaj ZK

Pri izdaji mora stranka **dokazati**, da pozna 12 besed (in s tem zasebni ključ), vezane na registrirano sredstvo — **ne da bi besede ali ključ razkrila** komurkoli, niti verigi. To omogoča **dokaz brez razkritja znanja (zero-knowledge)**.

<Note>
  Veriga vidi le dokaz, da stranka pozna pravo skrivnost — nikoli same skrivnosti.
</Note>

## Kako poteka (poenostavljeno)

<Steps>
  <Step title="12 besed → ključ">
    Iz 12 besed se izpelje zasebni ključ (`pk`).
  </Step>

  <Step title="Nonce iz oracle">
    Iz zadnjega zapisa `EntropyOracle` se izračuna `nonce`.
  </Step>

  <Step title="Commitment">
    `commitment = Poseidon([pk, nonce])` — to je javni "pečat", ki ga UORS registrira vnaprej.
  </Step>

  <Step title="ZK dokaz">
    Stranka ustvari Groth16 dokaz, da pozna `pk` za registriran commitment — brez razkritja `pk`.
  </Step>

  <Step title="Izdaja">
    `ZKVerifier` preveri dokaz in izda žetone. Commitment se porabi (enkratna uporaba).
  </Step>
</Steps>

## Uporabljena tehnologija

| Element         | Tehnologija                        |
| --------------- | ---------------------------------- |
| Vezje (circuit) | Circom 2.1.6                       |
| Sistem dokazov  | Groth16 (snarkjs)                  |
| Hash funkcija   | Poseidon (circomlib)               |
| Naključnost     | `EntropyOracle` (block.prevrandao) |

Tehnične podrobnosti: [Tehnična referenca → ZKVerifier in izdaja](/arhitektura/zk-verifier).
