Solana Keychain biedt een uniforme interface voor het ondertekenen van Solana-transacties via meerdere sleutelbeheer-backends. Ontwikkel lokaal met een in-memory sleutel en schakel vervolgens over naar enterprise sleutelbeheer, cloud-HSM's of beheerde wallet-services in productie, zonder uw ondertekeningscode te herschrijven.
Waarom Keychain?
- Enkele interface: Eén
SolanaSigner-basisinterface voor alle backends, plus één capability per backend: ondertekenen, herschrijven en ondertekenen, of ondertekenen en verzenden - Backends wisselen: Wijzig sleutelbeheer-providers via configuratie; aanroepen in uw code hoeven alleen te veranderen wanneer de nieuwe backend een andere capability heeft (native modi van Crossmint en Fordefi)
- Betaal voor wat u gebruikt: Rust feature flags, npm-pakketten per backend, Python-extras en Go-modules per backend bevatten alleen de backends die u nodig hebt
- Geaudit: Rust, TypeScript, Python en Go geaudit door OtterSec (de opt-in Ledger-backend viel buiten de scope); een eerdere audit door Accretion omvatte Rust en TypeScript. Zie auditstatus.
Architectuur
- Talen: Rust, TypeScript, Python en Go, op gelijk niveau (de Ledger-backend is alleen beschikbaar voor Rust)
- Interface:
SolanaSigner-basis (pubkey,sign_message,is_available) plus precies één capability per backend:TransactionSigner,ModifyingSignerofSendingSigner - Backends: Memory, Vault, AWS KMS, GCP KMS, Privy, Turnkey, Fireblocks, CDP, Crossmint, Dfns, Openfort, Para, Utila, Fordefi, Ledger (alleen Rust, opt-in, niet geaudit)
- Compatibiliteit:
@solana/kiten@solana/signers8.1+ (TypeScript) |solana-sdk2.x, 3.x of 4.x via de featuressdk-v2/sdk-v3/sdk-v4(Rust; v1-transacties vereisensdk-v4) |solders(Python) |solana-gov2 (Go)
Ondersteunde backends
Backends omvatten lokale ontwikkeling, zelf-gehoste en cloud-sleuteloplossingen, en beheerde of MPC-walletservices. Bekijk Een backend kiezen om bewaarmodellen te vergelijken en de juiste keuze te maken.
| Backend | Gebruiksgeval | Rust | TypeScript | Python | Go |
|---|---|---|---|---|---|
| Memory | Ontwikkeling, testen | ✓ | ✓ | ✓ | ✓ |
| HashiCorp Vault | Zelf-gehoste sleuteloplossing | ✓ | ✓ | ✓ | ✓ |
| AWS KMS | Cloud-native (AWS) | ✓ | ✓ | ✓ | ✓ |
| GCP KMS | Cloud-native (GCP) | ✓ | ✓ | ✓ | ✓ |
| Privy | Embedded wallets | ✓ | ✓ | ✓ | ✓ |
| Turnkey | Niet-custodiaal sleutelbeheer | ✓ | ✓ | ✓ | ✓ |
| Fireblocks | Institutionele bewaring | ✓ | ✓ | ✓ | ✓ |
| CDP | Coinbase Developer Platform | ✓ | ✓ | ✓ | ✓ |
| Crossmint | Crossmint beheerde wallets | ✓ | ✓ | ✓ | ✓ |
| Dfns | Dfns wallet-infrastructuur | ✓ | ✓ | ✓ | ✓ |
| Openfort | Openfort backend wallets | ✓ | ✓ | ✓ | ✓ |
| Para | Para MPC-wallets | ✓ | ✓ | ✓ | ✓ |
| Utila | Utila MPC-bewaring | ✓ | ✓ | ✓ | ✓ |
| Fordefi | Fordefi MPC-bewaring | ✓ | ✓ | ✓ | ✓ |
| Ledger | Hardwarewallet (opt-in, niet geaudit) | ✓ |
Snel aan de slag
Rust
Installeer de Rust crate:
cargo add solana-keychain
Basisgebruik:
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?;
- Rust-handleiding - Volledige installatie en backendconfiguratie
- Crates.io - Rust crate
TypeScript
Installeer het TypeScript-pakket:
pnpm add @solana/keychain
Basisgebruik:
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);
- TypeScript-handleiding -
@solana/keychainpakketten - npm-pakket - npm-pakket
Om een Keychain-signer te installeren op een Kit-client
als payer of identity, gebruikt u @solana/keychain-kit-plugin (de native modi van Crossmint en
Fordefi zijn uitgesloten, omdat ze transacties herschrijven).
Python
Installeer het pakket (zwaardere backends worden geleverd als extras, bijvoorbeeld
solana-keychain[aws-kms]):
pip install solana-keychain
Basisgebruik:
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)
- Python-handleiding - Volledige installatie, extras en backendconfiguratie
- PyPI - Python-pakket
Go
Elke backend is een eigen Go-module, dus u haalt alleen de backends binnen die u importeert:
go get github.com/solana-foundation/solana-keychain/go/signers/vault/v2@latest
Basisgebruik:
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)
- Go-handleiding - Modules, capabilities en backendconfiguratie
- pkg.go.dev - Go-referentie
Volgende stappen
Rust-handleiding
Installeer de crate en configureer elke backend.
TypeScript-handleiding
Installeer de pakketten en configureer elke backend.
Python-handleiding
Installeer het pakket en de extras en configureer elke backend.
Go-handleiding
Voeg de modules per backend toe en configureer elke backend.
Een backend kiezen
Vergelijk custody-modellen en kies de juiste signing-backend.
Best practices voor productie
Beheer signing veilig: hot/cold-scheiding, rotatie en monitoring.
Aangepaste ondertekenaars toevoegen
Integreer een nieuw sleutelbeheer-backend.
Bron
Gebouwd en onderhouden door de Solana Foundation. Gelicentieerd onder MIT.
Is this page helpful?