Potek
Overitelj pripravi kodo
Iz 12 besed nastane skrit ključ, iz njega in naključnega števila pa odtis kode (commitment). Overitelj odtis vpiše na verigo in ga veže na eno stvar (
registerCommitment).Lastnik ustvari dokaz
Brskalnik iz 12 besed izračuna ključ in pripravi ZK dokaz (Groth16) — matematično potrdilo, da ključ ustreza odtisu. Besede ne zapustijo brskalnika.
Preverjalnik ustvari enote
verifyAndMintpreveri dokaz in ustvari enote v denarnico, ki je dokaz poslala.
Kaj preveri, preden ustvari enote
- dokaz je veljaven in odtis je vpisan za to stvar,
- koda še ni bila porabljena in stvar je odobrena,
- vrednost v dokazu ni višja od ocene overitelja,
- za to stvar enote še niso nastale — nastanejo lahko samo enkrat,
- sistem ni ustavljen.
Nato lastniku ustvari naročeno število enot, zmanjšano za 0,5 % pristojbine.
Znane pomanjkljivosti
| Skrbnik lahko vpiše odtis kode | smel bi samo overitelj — odpravljeno bo pred pravim omrežjem |
| Overitelj ne more sam preklicati napačne kode | to lahko le skrbnik |
Za pravo omrežje je predviden neodvisen varnostni pregled.
Tehnično
| Ključ | pk = SHA-256("rwa:v1:" + besede z vezaji) mod r |
| Odtis | commitment = Poseidon2([pk, nonce]) |
| Dokaz | Circom 2.1.6, snarkjs Groth16, krivulja BN254 |
| Koda | 12 besed BIP39 (≈128 bitov) |
