Το Solana Keychain παρέχει μια ενιαία διεπαφή για την υπογραφή συναλλαγών Solana σε πολλαπλά backends διαχείρισης κλειδιών. Αναπτύξτε τοπικά με ένα κλειδί στη μνήμη και στη συνέχεια μεταβείτε σε εταιρική διαχείριση κλειδιών, cloud HSM ή υπηρεσίες διαχειριζόμενων πορτοφολιών σε περιβάλλον παραγωγής, χωρίς να ξαναγράψετε τον κώδικα υπογραφής σας.
Γιατί το Keychain;
- Ενιαία διεπαφή: Μία βασική διεπαφή
SolanaSignerγια όλα τα backends, συν μία δυνατότητα ανά backend: υπογραφή, αναδιατύπωση και υπογραφή ή υπογραφή και αποστολή - Εναλλαγή backends: Αλλάξτε τους παρόχους διαχείρισης κλειδιών μέσω ρυθμίσεων· τα σημεία κλήσης αλλάζουν μόνο όταν το νέο backend έχει διαφορετική δυνατότητα (εγγενείς λειτουργίες Crossmint και Fordefi)
- Πληρώστε μόνο για ό,τι χρησιμοποιείτε: Τα Rust feature flags, τα πακέτα npm ανά backend, τα extras της Python και οι ενότητες Go ανά backend περιλαμβάνουν μόνο τα backends που χρειάζεστε
- Ελεγμένο: Οι υλοποιήσεις Rust, TypeScript, Python και Go έχουν ελεγχθεί από την OtterSec (το προαιρετικό backend Ledger δεν συμπεριλαμβανόταν στον έλεγχο)· ένας προηγούμενος έλεγχος της Accretion κάλυπτε τις υλοποιήσεις Rust και TypeScript. Δείτε την κατάσταση ελέγχων.
Αρχιτεκτονική
- Γλώσσες: Rust, TypeScript, Python και Go, με πλήρη ισοδυναμία (το backend Ledger υποστηρίζεται μόνο στη Rust)
- Διεπαφή: Βασική διεπαφή
SolanaSigner(pubkey,sign_message,is_available) συν ακριβώς μία δυνατότητα ανά backend:TransactionSigner,ModifyingSignerήSendingSigner - Backends: Memory, Vault, AWS KMS, GCP KMS, Privy, Turnkey, Fireblocks, CDP, Crossmint, Dfns, Openfort, Para, Utila, Fordefi, Ledger (μόνο Rust, προαιρετικό, χωρίς έλεγχο)
- Συμβατότητα:
@solana/kitκαι@solana/signers8.1+ (TypeScript) |solana-sdk2.x, 3.x ή 4.x μέσω των λειτουργιώνsdk-v2/sdk-v3/sdk-v4(Rust· οι συναλλαγές v1 απαιτούνsdk-v4) |solders(Python) |solana-gov2 (Go)
Υποστηριζόμενα Συστήματα
Τα backends καλύπτουν την τοπική ανάπτυξη, αυτο-φιλοξενούμενη και cloud διαχείριση κλειδιών, καθώς και διαχειριζόμενες ή MPC υπηρεσίες πορτοφολιών. Δείτε Επιλογή backend για σύγκριση μοντέλων φύλαξης και επιλογή του κατάλληλου.
| Backend | Περίπτωση Χρήσης | Rust | TypeScript | Python | Go |
|---|---|---|---|---|---|
| Memory | Ανάπτυξη, δοκιμές | ✓ | ✓ | ✓ | ✓ |
| HashiCorp Vault | Αυτο-φιλοξενούμενη διαχείριση κλειδιών | ✓ | ✓ | ✓ | ✓ |
| AWS KMS | Cloud-native (AWS) | ✓ | ✓ | ✓ | ✓ |
| GCP KMS | Cloud-native (GCP) | ✓ | ✓ | ✓ | ✓ |
| Privy | Ενσωματωμένα πορτοφόλια | ✓ | ✓ | ✓ | ✓ |
| Turnkey | Μη-θεματοφυλακική διαχείριση κλειδιών | ✓ | ✓ | ✓ | ✓ |
| Fireblocks | Θεσμική θεματοφυλακή | ✓ | ✓ | ✓ | ✓ |
| CDP | Coinbase Developer Platform | ✓ | ✓ | ✓ | ✓ |
| Crossmint | Διαχειριζόμενα πορτοφόλια Crossmint | ✓ | ✓ | ✓ | ✓ |
| Dfns | Υποδομή πορτοφολιών Dfns | ✓ | ✓ | ✓ | ✓ |
| Openfort | Backend πορτοφόλια Openfort | ✓ | ✓ | ✓ | ✓ |
| Para | MPC πορτοφόλια Para | ✓ | ✓ | ✓ | ✓ |
| Utila | MPC θεματοφυλακή Utila | ✓ | ✓ | ✓ | ✓ |
| Fordefi | Fordefi MPC custody | ✓ | ✓ | ✓ | ✓ |
| Ledger | Πορτοφόλι υλικού (προαιρετικό, χωρίς έλεγχο) | ✓ |
Γρήγορη Εκκίνηση
Rust
Εγκαταστήστε το Rust crate:
cargo add solana-keychain
Βασική χρήση:
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 - Πλήρης εγκατάσταση και διαμόρφωση backend
- Crates.io - Rust crate
TypeScript
Εγκαταστήστε το πακέτο TypeScript:
pnpm add @solana/keychain
Βασική χρήση:
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 -
@solana/keychainπακέτα - Πακέτο npm - πακέτο npm
Για να εγκαταστήσετε έναν signer του Keychain σε έναν πελάτη Kit
ως payer ή identity, χρησιμοποιήστε το @solana/keychain-kit-plugin (οι εγγενείς λειτουργίες Crossmint και
Fordefi εξαιρούνται, καθώς αναδιατυπώνουν τις συναλλαγές).
Python
Εγκαταστήστε το πακέτο (τα βαρύτερα backends διατίθενται ως extras, για παράδειγμα
solana-keychain[aws-kms]):
pip install solana-keychain
Βασική χρήση:
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 - Πλήρης εγκατάσταση, extras και ρύθμιση των backends
- PyPI - Πακέτο Python
Go
Κάθε backend είναι ξεχωριστή ενότητα Go, ώστε να κατεβάζετε μόνο τα backends που εισάγετε:
go get github.com/solana-foundation/solana-keychain/go/signers/vault/v2@latest
Βασική χρήση:
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 - Ενότητες, δυνατότητες και ρύθμιση των backends
- pkg.go.dev - Αναφορά Go
Επόμενα Βήματα
Οδηγός Rust
Εγκαταστήστε το crate και διαμορφώστε κάθε backend.
Οδηγός TypeScript
Εγκαταστήστε τα πακέτα και διαμορφώστε κάθε backend.
Οδηγός Python
Εγκαταστήστε το πακέτο και τα extras του και ρυθμίστε κάθε backend.
Οδηγός Go
Προσθέστε τις ενότητες ανά backend και ρυθμίστε κάθε backend.
Επιλογή backend
Συγκρίνετε μοντέλα θεματοφυλακής και επιλέξτε το κατάλληλο backend υπογραφής.
Βέλτιστες πρακτικές παραγωγής
Ασφαλής λειτουργία υπογραφής: διαχωρισμός hot/cold, εναλλαγή κλειδιών, παρακολούθηση.
Προσθήκη προσαρμοσμένων signers
Ενσωματώστε ένα νέο backend διαχείρισης κλειδιών.
Πηγή
Κατασκευάστηκε και συντηρείται από το Solana Foundation. Διατίθεται υπό άδεια MIT.
Is this page helpful?