Claves privadas
La clave de gasto b, la clave de visualización a y sus mitades públicas B y A
Un monedero de Monero es un par de escalares: b (clave privada de gasto) y a = Hs(b) (clave privada de visualización). Sus versiones públicas: B = b·G y A = a·G. Una dirección es simplemente B y A escritas juntas.
La clave de gasto
La clave privada de gasto (spend key) b es un escalar aleatorio módulo l. En el formato clásico, la seed de 25 palabras es b, solo que escrita con palabras. Generación:
- tomar 32 bytes aleatorios (o más, para que sea uniforme);
- leerlos como un número little-endian;
- reducir módulo
l(sc_reduce32).
La clave de gasto se necesita para dos cosas: calcular la clave privada de una salida de un solo uso (para firmar un gasto) y calcular la key image.
La clave de visualización
La clave privada de visualización (view key) podría ser un número aleatorio independiente, pero los monederos estándar la derivan de la clave de gasto:
Por eso basta una sola seed para restaurar ambas claves. La clave de visualización se usa al escanear la blockchain: para cada transacción el monedero calcula el secreto compartido 8·a·R y comprueba si alguna salida va dirigida a él (detalles en direcciones de un solo uso).
Claves públicas
Dos puntos de la curva, de 32 bytes cada uno. No son secretos: tu dirección está hecha de ellos.
Quién puede hacer qué
| Tienes | Puedes | No puedes |
|---|---|---|
A, B (dirección) | enviar dinero a este monedero | ver nada |
a, B (solo lectura) | encontrar las salidas entrantes y sus importes | gastar; ver los gastos de forma fiable |
a, b | todo | — |
Con Carrot la jerarquía de claves se vuelve más profunda: claves separadas para «ver lo entrante», «verlo todo» y «generar key images». En los monederos existentes, a y b siguen funcionando.