Tecnico › Chiavi e indirizzi

Chiavi private

La chiave di spesa b, la chiave di visualizzazione a e le loro metà pubbliche B e A

In breve

Un wallet Monero è una coppia di scalari: b (chiave privata di spesa, spend key) e a = Hs(b) (chiave privata di visualizzazione, view key). Le loro versioni pubbliche: B = b·G e A = a·G. Un indirizzo non è altro che B e A scritti insieme.

La chiave di spesa

La chiave privata di spesa b è uno scalare casuale modulo l. Nel formato classico, il seed di 25 parole è b, solo scritto in parole. Generazione:

  1. prendi 32 byte casuali (o di più, per uniformità);
  2. leggili come numero little-endian;
  3. riducili modulo l (sc_reduce32).

La spend key serve per due cose: calcolare la chiave privata di un output monouso (per firmare una spesa) e calcolare la key image.

La chiave di visualizzazione

La chiave privata di visualizzazione potrebbe essere un numero casuale indipendente, ma i wallet standard la derivano dalla spend key:

a = Hs(b) = Keccak256(b) mod l

Ecco perché basta un solo seed per ripristinare entrambe le chiavi. La view key si usa durante la scansione della blockchain: per ogni transazione il wallet calcola il segreto condiviso 8·a·R e controlla se un output è indirizzato a lui (dettagli in indirizzi monouso).

Chiavi pubbliche

B = b·G      A = a·G

Due punti della curva, da 32 byte ciascuno. Non sono segreti: il tuo indirizzo è fatto di loro.

bspesa privata avisual. privata Bspesa pubblica Avisual. pubblica Hs ·G ·G

Chi può fare cosa

PossiediPuoiNon puoi
A, B (indirizzo)inviare denaro a questo walletvedere alcunché
a, B (sola visualizzazione)trovare gli output in entrata e i loro importispendere; vedere con certezza le spese
a, btutto—
Cosa cambia con Carrot

Con Carrot la gerarchia delle chiavi diventa più profonda: chiavi separate per "vedere le entrate", "vedere tutto", "generare key image". Per i wallet esistenti, a e b continuano a funzionare.