Keypairs & Signers
Los signers (firmantes) abstraen quién puede firmar transacciones y mensajes en @solana/kit.
Busca en todas las páginas de la documentación
Los signers (firmantes) abstraen quién puede firmar transacciones y mensajes en @solana/kit.
Tarjeta de receta de referencia rápida, lista para copiar y pegar.
import { generateKeyPairSigner, createKeyPairSignerFromBytes } from "@solana/kit";
const dev = await generateKeyPairSigner();
// o cargar bytes JSON de solana-keygenCuándo usar esto:
import {
generateKeyPairSigner,
createTransactionMessage,
setTransactionMessageFeePayerSigner,
setTransactionMessageLifetimeUsingBlockhash,
appendTransactionMessageInstruction,
signTransactionMessageWithSigners,
createSolanaRpc,
} from "@solana/kit";
import { getTransferSolInstruction } from "@solana-program/system";
const rpc = createSolanaRpc("https://api.devnet.solana.com");
const payer = await generateKeyPairSigner();
const recipient = await generateKeyPairSigner();
const { value: bh } = await rpc.getLatestBlockhash().send();
let msg = createTransactionMessage({ version: 0 });
msg = setTransactionMessageFeePayerSigner(payer, msg);
msg = setTransactionMessageLifetimeUsingBlockhash(bh, msg);
msg = appendTransactionMessageInstruction(
getTransferSolInstruction({ source: payer, destination: recipient.address, amount: 1_000n }),
msg
);
const signed = await signTransactionMessageWithSigners(msg);Lo que esto demuestra:
Signer, no una cadena de clave pública en bruto.signTransactionMessageWithSigners resuelve los signers incrustados en el mensaje.Address (clave pública base58).KeyPairSigner contiene material secreto para scripts de Node.TransactionSendingSigner sin revelar secretos.CryptoKey para integraciones de Web Crypto.| Tipo | Se expone el secreto | Fuente Típica |
|---|---|---|
| Key pair | Sí (servidor) | Archivo keypair JSON |
| Wallet | No | Phantom, Solflare |
| No-op | N/A | Marcador de posición en compilaciones parciales |
// Nunca registres ni serialices los bytes de la clave secreta
const { address } = await generateKeyPairSigner();setTransactionMessageFeePayerSigner.| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| Signers del Estándar de Wallet | dApps del navegador | Scripts de CI sin cabeza |
| Wallet de hardware | Claves de alto valor | Iteración local rápida |
| Servicio KMS/HSM | Servidores de producción | Solo desarrollo local |
Sí - apunta el RPC y la wallet al mismo clúster.
Evítalo en un módulo - migra completamente por ruta.
Las wallets proporcionan signers; el kit construye mensajes.
Bloquea 7.0.0 en package.json y CI.
Instrucciones de presupuesto de cómputo antes de enviar.
Surfpool 0.12.0 o validador local con clones de devnet.
Siempre lamports bigint en el código del kit.
Confirmado para UI; finalizado para tesorería.
Lecturas en el servidor; firma en componentes cliente.
Simular, leer logs, verificar propietarios de cuentas.
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.
Revisado por Chris St. John·Última actualización: 16 jul 2026