Keypairs e signers
Signers abstraem quem pode assinar transações e mensagens no @solana/kit.
Busque em todas as páginas da documentação
Signers abstraem quem pode assinar transações e mensagens no @solana/kit.
Cartão de receita de referência rápida - pronto para copiar e colar.
import { generateKeyPairSigner, createKeyPairSignerFromBytes } from "@solana/kit";
const dev = await generateKeyPairSigner();
// ou carregue bytes JSON do solana-keygenQuando usar:
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);O que isso demonstra:
Signer, não string de public key bruta.signTransactionMessageWithSigners resolve signers embutidos na mensagem.Address (public key base58).KeyPairSigner mantém material secreto para scripts Node.TransactionSendingSigner sem revelar segredos.CryptoKey existem para integrações Web Crypto.| Tipo | Segredo exposto | Fonte típica |
|---|---|---|
| Key pair | Sim (servidor) | Arquivo keypair JSON |
| Wallet | Não | Phantom, Solflare |
| No-op | N/A | Placeholder em builds parciais |
// Nunca logue ou serialize bytes de chave secreta
const { address } = await generateKeyPairSigner();setTransactionMessageFeePayerSigner.| Alternativa | Use quando | Não use quando |
|---|---|---|
| Signers Wallet Standard | dApps browser | Scripts CI headless |
| Hardware wallet | Chaves de alto valor | Iteração local rápida |
| Serviço KMS/HSM | Servidores produção | Apenas dev local |
Sim - aponte RPC e carteira para o mesmo cluster.
Evite em um módulo - migre por rota inteira.
Carteiras fornecem signers; kit constrói mensagens.
Trave 7.0.0 no package.json e CI.
Instruções compute budget antes do envio.
Surfpool 0.12.0 ou validador local com clones devnet.
Sempre lamports bigint no código kit.
confirmed para UI; finalized para tesouraria.
Leituras no servidor; assinatura em client components.
Simule, leia logs, verifique owners de conta.
Versões da stack: Esta página foi 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 e LiteSVM 0.6.x.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026