Técnico › Claves y direcciones

Claves privadas

La clave de gasto b, la clave de visualización a y sus mitades públicas B y A

En resumen

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:

  1. tomar 32 bytes aleatorios (o más, para que sea uniforme);
  2. leerlos como un número little-endian;
  3. 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:

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

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

B = b·G      A = a·G

Dos puntos de la curva, de 32 bytes cada uno. No son secretos: tu dirección está hecha de ellos.

bgasto privada avisualiz. privada Bgasto pública Avisualiz. pública Hs ·G ·G

Quién puede hacer qué

TienesPuedesNo puedes
A, B (dirección)enviar dinero a este monederover nada
a, B (solo lectura)encontrar las salidas entrantes y sus importesgastar; ver los gastos de forma fiable
a, btodo—
Qué cambia con Carrot

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.