Keychain

Solana Keychain proporciona una interfaz unificada para firmar transacciones de Solana en múltiples backends de gestión de claves. Desarrolla localmente con una clave en memoria, y luego cambia a gestión de claves empresarial, HSMs en la nube o servicios de billetera gestionados en producción, sin reescribir tu código de firma.

¿Por qué Keychain?

  • Interfaz única: Una interfaz base SolanaSigner para todos los backends, más una capacidad por backend: firmar, reescribir y firmar, o firmar y transmitir
  • Intercambio de backends: Cambia de proveedor de gestión de claves mediante configuración; los puntos de llamada solo cambian cuando el nuevo backend tiene una capacidad distinta (modos nativos de Crossmint y Fordefi)
  • Paga solo por lo que usas: Los feature flags de Rust, los paquetes npm por backend, los extras de Python y los módulos de Go por backend incluyen solo los backends que necesitas
  • Auditado: Rust, TypeScript, Python y Go auditados por OtterSec (el backend opcional de Ledger quedó fuera del alcance); una auditoría anterior de Accretion cubrió Rust y TypeScript. Consulta el estado de la auditoría.

Arquitectura

  • Lenguajes: Rust, TypeScript, Python y Go, con paridad (el backend de Ledger es solo para Rust)
  • Interfaz: base SolanaSigner (pubkey, sign_message, is_available) más exactamente una capacidad por backend: TransactionSigner, ModifyingSigner o SendingSigner
  • Backends: Memory, Vault, AWS KMS, GCP KMS, Privy, Turnkey, Fireblocks, CDP, Crossmint, Dfns, Openfort, Para, Utila, Fordefi, Ledger (solo Rust, opcional, sin auditar)
  • Compatibilidad: @solana/kit y @solana/signers 8.1+ (TypeScript) | solana-sdk 2.x, 3.x o 4.x mediante las features sdk-v2 / sdk-v3 / sdk-v4 (Rust; las transacciones v1 requieren sdk-v4) | solders (Python) | solana-go v2 (Go)

Backends Soportados

Los backends abarcan el desarrollo local, la gestión de claves autohospedada y en la nube, y servicios de billetera gestionados o MPC. Consulta Cómo elegir un backend para comparar los modelos de custodia y elegir el más adecuado.

BackendCaso de usoRustTypeScriptPythonGo
MemoryDesarrollo, pruebas✓✓✓✓
HashiCorp VaultGestión de claves autohospedada✓✓✓✓
AWS KMSNativo en la nube (AWS)✓✓✓✓
GCP KMSNativo en la nube (GCP)✓✓✓✓
PrivyBilleteras integradas✓✓✓✓
TurnkeyGestión de claves sin custodia✓✓✓✓
FireblocksCustodia institucional✓✓✓✓
CDPCoinbase Developer Platform✓✓✓✓
CrossmintBilleteras gestionadas Crossmint✓✓✓✓
DfnsInfraestructura de billeteras Dfns✓✓✓✓
OpenfortBilleteras backend Openfort✓✓✓✓
ParaBilleteras MPC Para✓✓✓✓
UtilaCustodia MPC Utila✓✓✓✓
FordefiCustodia MPC de Fordefi✓✓✓✓
LedgerBilletera de hardware (opcional, sin auditar)✓

Inicio rápido

Rust

Instala el crate de Rust:

cargo add solana-keychain

Uso básico:

use solana_keychain::{Signer, SolanaSigner};
// Create a signer from any backend
let signer = Signer::from_memory("base58_private_key")?;
let pubkey = signer.pubkey();
// Transaction signing is a capability; `tx` is a VersionedTransaction
if let Some(tx_signer) = signer.as_transaction_signer() {
let result = tx_signer.sign_transaction(&mut tx).await?;
}
// Or let the umbrella route any backend shape and supply the RPC hop yourself
let signature = signer
.sign_and_send(&mut tx, |encoded| async move { broadcast(encoded).await })
.await?;

TypeScript

Instala el paquete de TypeScript:

pnpm add @solana/keychain

Uso básico:

import { createKeychainSigner } from "@solana/keychain";
import { signTransactionWithSigners } from "@solana/signers";
// Create any signer via the unified factory
const signer = await createKeychainSigner({
backend: "vault",
vaultAddr: "https://vault.example.com:8200",
vaultToken: "hvs.xxxxx",
keyName: "my-solana-key",
publicKey: "base58_public_key"
});
// Sign an already-compiled transaction
const signedTx = await signTransactionWithSigners(
[signer],
compiledTransaction
);

Para instalar un firmante de Keychain en un cliente Kit como su payer o identity, usa @solana/keychain-kit-plugin (los modos nativos de Crossmint y Fordefi quedan excluidos, ya que reescriben transacciones).

Python

Instala el paquete (los backends más pesados se distribuyen como extras, por ejemplo solana-keychain[aws-kms]):

pip install solana-keychain

Uso básico:

import os
from solana_keychain import VaultSignerConfig, create_vault_signer
signer = await create_vault_signer(
VaultSignerConfig(
api_base_url="https://vault.example.com:8200",
token=os.environ["VAULT_TOKEN"],
key_name="my-solana-key",
public_key="base58_public_key",
)
)
# tx is a solders VersionedTransaction
result = await signer.sign_transaction(tx)
  • Guía de Python - Instalación completa, extras y configuración de backends
  • PyPI - Paquete de Python

Go

Cada backend es su propio módulo de Go, así que solo descargas los backends que importas:

go get github.com/solana-foundation/solana-keychain/go/signers/vault/v2@latest

Uso básico:

import "github.com/solana-foundation/solana-keychain/go/signers/vault/v2"
signer, err := vault.New(vault.Config{
VaultAddr: "https://vault.example.com:8200",
Token: os.Getenv("VAULT_TOKEN"),
KeyName: "my-solana-key",
Pubkey: "base58_public_key",
})
if err != nil {
return err
}
// tx is a *solana.Transaction from solana-go v2
res, err := signer.SignTransaction(ctx, tx)

Próximos pasos

Fuente

Desarrollado y mantenido por la Solana Foundation. Con licencia MIT.

Is this page helpful?

Tabla de Contenidos

Editar Página