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
SolanaSignerpara 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,ModifyingSigneroSendingSigner - 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/kity@solana/signers8.1+ (TypeScript) |solana-sdk2.x, 3.x o 4.x mediante las featuressdk-v2/sdk-v3/sdk-v4(Rust; las transacciones v1 requierensdk-v4) |solders(Python) |solana-gov2 (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.
| Backend | Caso de uso | Rust | TypeScript | Python | Go |
|---|---|---|---|---|---|
| Memory | Desarrollo, pruebas | ✓ | ✓ | ✓ | ✓ |
| HashiCorp Vault | Gestión de claves autohospedada | ✓ | ✓ | ✓ | ✓ |
| AWS KMS | Nativo en la nube (AWS) | ✓ | ✓ | ✓ | ✓ |
| GCP KMS | Nativo en la nube (GCP) | ✓ | ✓ | ✓ | ✓ |
| Privy | Billeteras integradas | ✓ | ✓ | ✓ | ✓ |
| Turnkey | Gestión de claves sin custodia | ✓ | ✓ | ✓ | ✓ |
| Fireblocks | Custodia institucional | ✓ | ✓ | ✓ | ✓ |
| CDP | Coinbase Developer Platform | ✓ | ✓ | ✓ | ✓ |
| Crossmint | Billeteras gestionadas Crossmint | ✓ | ✓ | ✓ | ✓ |
| Dfns | Infraestructura de billeteras Dfns | ✓ | ✓ | ✓ | ✓ |
| Openfort | Billeteras backend Openfort | ✓ | ✓ | ✓ | ✓ |
| Para | Billeteras MPC Para | ✓ | ✓ | ✓ | ✓ |
| Utila | Custodia MPC Utila | ✓ | ✓ | ✓ | ✓ |
| Fordefi | Custodia MPC de Fordefi | ✓ | ✓ | ✓ | ✓ |
| Ledger | Billetera 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 backendlet signer = Signer::from_memory("base58_private_key")?;let pubkey = signer.pubkey();// Transaction signing is a capability; `tx` is a VersionedTransactionif 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 yourselflet signature = signer.sign_and_send(&mut tx, |encoded| async move { broadcast(encoded).await }).await?;
- Guía de Rust - Instalación completa y configuración del backend
- Crates.io - Crate de Rust
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 factoryconst 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 transactionconst signedTx = await signTransactionWithSigners([signer],compiledTransaction);
- Guía de TypeScript -
Paquetes
@solana/keychain - Paquete npm - Paquete npm
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 osfrom solana_keychain import VaultSignerConfig, create_vault_signersigner = 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 VersionedTransactionresult = 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 v2res, err := signer.SignTransaction(ctx, tx)
- Guía de Go - Módulos, capacidades y configuración de backends
- pkg.go.dev - Referencia de Go
Próximos pasos
Guía de Rust
Instala el crate y configura cada backend.
Guía de TypeScript
Instala los paquetes y configura cada backend.
Guía de Python
Instala el paquete y sus extras, y configura cada backend.
Guía de Go
Añade los módulos por backend y configura cada backend.
Elegir un backend
Compara los modelos de custodia y elige el backend de firma adecuado.
Buenas prácticas en producción
Opera la firma de forma segura: separación en caliente/frío, rotación y monitoreo.
Añadir firmantes personalizados
Integra un nuevo backend de gestión de claves.
Fuente
Desarrollado y mantenido por la Solana Foundation. Con licencia MIT.
Is this page helpful?