Το Solana Keychain παρέχει ένα ενιαίο interface για την υπογραφή συναλλαγών Solana σε πολλαπλά backends διαχείρισης κλειδιών. Αναπτύξτε τοπικά με ένα κλειδί στη μνήμη, και στη συνέχεια μεταβείτε σε εταιρική διαχείριση κλειδιών, cloud HSMs ή διαχειριζόμενες υπηρεσίες πορτοφολιών στο περιβάλλον παραγωγής, χωρίς να ξαναγράψετε τον κώδικα υπογραφής σας.
Γιατί το Keychain;
- Ενιαίο Interface: Ένα βασικό interface
SolanaSignerσε όλα τα backends, συν μία δυνατότητα ανά backend: υπογραφή, τροποποίηση και υπογραφή, ή υπογραφή και broadcast - Εναλλαγή Backends: Αλλάξτε παρόχους διαχείρισης κλειδιών μέσω διαμόρφωσης· τα σημεία κλήσης αλλάζουν μόνο όταν το νέο backend έχει διαφορετική δυνατότητα (εγγενείς λειτουργίες Crossmint και Fordefi)
- Πληρώνετε μόνο για ό,τι χρησιμοποιείτε: Τα feature flags της Rust, τα πακέτα npm ανά backend, τα extras της Python και τα modules Go ανά backend περιλαμβάνουν μόνο τα backends που χρειάζεστε
- Ελεγμένο: Rust, TypeScript, Python και Go ελέγχθηκαν από την OtterSec (το προαιρετικό backend Ledger ήταν εκτός πεδίου εφαρμογής)· ένας προγενέστερος έλεγχος από την Accretion κάλυψε Rust και TypeScript. Δείτε την κατάσταση των ελέγχων.
Αρχιτεκτονική
- Γλώσσες: Rust, TypeScript, Python και Go, με ισοδυναμία (το backend Ledger υποστηρίζεται μόνο σε Rust)
- Interface: βασικό
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 μέσω των featuressdk-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 | Hardware wallet (προαιρετικό, χωρίς έλεγχο) | ✓ |
Γρήγορη Εκκίνηση
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 σε έναν client 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 και διαμόρφωση backend
- PyPI - Πακέτο Python
Go
Κάθε backend είναι ένα ξεχωριστό module 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 - Modules, δυνατότητες και διαμόρφωση backend
- pkg.go.dev - Αναφορά Go
Επόμενα Βήματα
Οδηγός Rust
Εγκαταστήστε το crate και διαμορφώστε κάθε backend.
Οδηγός TypeScript
Εγκαταστήστε τα πακέτα και διαμορφώστε κάθε backend.
Οδηγός Python
Εγκαταστήστε το πακέτο και τα extras του και διαμορφώστε κάθε backend.
Οδηγός Go
Προσθέστε τα modules ανά backend και διαμορφώστε κάθε backend.
Επιλογή backend
Συγκρίνετε μοντέλα θεματοφυλακής και επιλέξτε το κατάλληλο backend υπογραφής.
Βέλτιστες πρακτικές παραγωγής
Ασφαλής λειτουργία υπογραφής: διαχωρισμός hot/cold, εναλλαγή κλειδιών, παρακολούθηση.
Προσθήκη προσαρμοσμένων signers
Ενσωματώστε ένα νέο backend διαχείρισης κλειδιών.
Πηγή
Κατασκευάστηκε και συντηρείται από το Solana Foundation. Διατίθεται υπό άδεια MIT.
Is this page helpful?