Keypairs con solana-keygen
Genera keypairs Ed25519, recupera wallets a partir de frases semilla y crea direcciones "vanity" con solana-keygen.
Receta
Tarjeta de referencia rápida - lista para copiar y pegar.
# Nuevo keypair (contraseña opcional)
solana-keygen new --outfile ~/.config/solana/id.json
# Recuperar desde una frase semilla de 12/24 palabras
solana-keygen recover -o recovered.json
# Prefijo "vanity" (lento - aumenta --num-threads)
solana-keygen grind --starts-with abc:1 --ignore-caseCuándo usar esto:
- Configuración inicial de la CLI antes de
solana config set --keypair. - Recuperar una wallet en una máquina nueva a partir de una frase semilla.
- Crear llaves separadas para despliegue, autoridad de actualización o tesorería.
- Generar un prefijo "vanity" para branding (espera tiempos de ejecución largos).
Ejemplo Funcional
mkdir -p ~/.config/solana
solana-keygen new --outfile ~/.config/solana/id.json --no-bip39-passphrase
solana config set --keypair ~/.config/solana/id.json
solana address
# Haz una copia de seguridad de la frase semilla cuando se te solicite - guárdala offline, nunca en git
chmod 600 ~/.config/solana/id.jsonLo que esto demuestra:
- Crea un archivo de keypair Ed25519 estándar que la CLI lee para firmar.
--no-bip39-passphraseomite una capa de cifrado adicional (solo para desarrollo).chmod 600restringe el acceso de lectura a tu cuenta de usuario.solana addressconfirma que la clave pública coincide con las expectativas.
Análisis Detallado
Cómo Funciona
- Solana usa Ed25519; el archivo de keypair es un array JSON de clave secreta de 64 bytes.
solana-keygen newpuede emitir una frase semilla BIP39 para recuperación.- Las claves públicas son direcciones de 32 bytes codificadas en base58 que muestra
solana address. - La generación "vanity" busca llaves aleatorias hasta que un patrón de prefijo coincide.
Estructura del Archivo Keypair
| Campo | Formato | Notas |
|---|---|---|
| Clave secreta | Array de bytes JSON (64 bytes) | Contiene los bytes de la semilla + clave pública |
| Contraseña | BIP39 Opcional | Cifra el archivo en disco cuando se establece |
| Frase semilla | 12 o 24 palabras | Ruta de respaldo independiente a la misma llave |
Notas de bash
# Verifica la clave pública sin exponer el contenido del archivo secreto
solana-keygen pubkey ~/.config/solana/id.json
# Solicita la llave protegida por contraseña durante la recuperación
solana-keygen recover prompt:// -o recovered.jsonErrores Comunes
- Confirmar archivos de keypair - los archivos de llave JSON en git filtran fondos instantáneamente. Solución: añade
*.jsona las rutas de llaves en.gitignorey usa hardware o secretos de CI para producción. - Omitir la copia de seguridad de la frase semilla - el fallo del disco significa llaves irrecuperables. Solución: escribe la frase offline antes de fondear la wallet.
- Reutilizar un keypair para todo - la autoridad de despliegue y el desarrollo diario comparten la misma superficie de riesgo. Solución: separa keypairs por rol y clúster.
- Generación "vanity" en portátiles - los prefijos largos tardan horas o días. Solución: limita la longitud del prefijo, usa
--num-threads, o acepta una coincidencia más corta. - Sobrescribir el archivo de salida incorrecto -
solana-keygen newsobrescribe rutas existentes sin preguntar en scripts. Solución: verificatest -fantes de generar en automatización.
Alternativas
| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| Wallet de hardware (Ledger) | Tesorería de Mainnet y autoridad de actualización | Iteración rápida en localnet |
solana-keygen recover | Restaurando desde frase semilla | Generando llaves completamente nuevas |
| Wallet del navegador (Phantom) | Firma de usuario final en dApps | Pipelines de despliegue de CI sin cabeza |
Ayudantes de llaves mucho | Flujos de trabajo de scaffolding de la Fundación | Solo necesitas una única llave de desarrollo |
Preguntas Frecuentes
¿En qué formato está el archivo keypair?
Un array JSON de 64 bytes sin signo que representa la clave secreta Ed25519. La CLI y Anchor leen este formato de forma nativa.
¿La frase semilla es lo mismo que el archivo JSON?
Codifican el mismo material de llave cuando se crean juntos. Puedes recuperar el JSON a partir de la frase con solana-keygen recover, pero no puedes derivar la frase del JSON solo si omitiste registrarla.
¿Debo usar una contraseña en el archivo keypair?
Sí, para cualquier llave que contenga fondos en mainnet. Para llaves de desarrollo desechables, --no-bip39-passphrase es común, pero nunca confirmes esos archivos.
¿Cómo imprimo solo la clave pública?
solana-keygen pubkey path/to/keypair.json¿Pueden dos máquinas compartir un keypair de forma segura?
Solo a través de un gestor de secretos o un canal cifrado - nunca Slack o email. Prefiere llaves separadas por máquina para desarrollo y una única llave respaldada por hardware para roles de producción.
¿Cuánto cuesta la generación "vanity"?
El tiempo de CPU crece exponencialmente con la longitud del prefijo. Un prefijo de 3 caracteres es rápido; 6+ caracteres pueden necesitar hardware dedicado o ejecuciones nocturnas.
¿Cómo recupero con una semilla protegida por contraseña?
Ejecuta solana-keygen recover prompt:// e introduce la frase cuando se te solicite. Usa las formas ASK o prompt:// documentadas en solana-keygen recover --help.
¿Funciona solana-keygen en Windows?
Sí, a través de WSL o compilaciones nativas del instalador de Agave. Las rutas difieren - usa equivalentes de %USERPROFILE%\.config\solana\.
¿Qué permisos debe tener el archivo de llave?
chmod 600 en Unix para que solo tu usuario pueda leer los bytes secretos.
¿En qué se diferencia esto de un keypair de programa?
Los keypairs de despliegue de programas firman transacciones de despliegue; los IDs de programa provienen de la clave pública del keypair del programa. Almacena las llaves del programa con el mismo cuidado que las llaves de tesorería.
Relacionado
- Conceptos Básicos de Solana CLI - configuración de keypair por defecto
- Airdrops y Saldos - fondear una nueva clave pública
- Despliegue de Programas - keypairs de despliegue de programas
- Mejores Prácticas de Solana CLI - reglas de higiene de llaves
Versiones de Stack: Esta página fue escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, y LiteSVM 0.6.x.