Solana Keychain menyediakan antarmuka terpadu untuk menandatangani transaksi Solana di berbagai backend manajemen kunci. Kembangkan secara lokal dengan kunci in-memory, lalu beralih ke manajemen kunci enterprise, HSM cloud, atau layanan wallet terkelola di lingkungan produksi, tanpa perlu menulis ulang kode penandatanganan Anda.
Mengapa Keychain?
- Antarmuka Tunggal: Satu antarmuka dasar
SolanaSigneruntuk semua backend, ditambah satu kapabilitas per backend: sign, rewrite-and-sign, atau sign-and-broadcast - Ganti Backend dengan Mudah: Ubah penyedia manajemen kunci melalui konfigurasi; titik pemanggilan hanya berubah jika backend baru memiliki kapabilitas yang berbeda (mode native Crossmint dan Fordefi)
- Bayar sesuai pemakaian: Rust feature flag, paket npm per backend, extras Python, dan modul Go per backend hanya menyertakan backend yang Anda butuhkan
- Telah diaudit: Rust, TypeScript, Python, dan Go diaudit oleh OtterSec (backend Ledger yang bersifat opt-in tidak termasuk dalam cakupan); audit sebelumnya oleh Accretion mencakup Rust dan TypeScript. Lihat status audit.
Arsitektur
- Bahasa: Rust, TypeScript, Python, dan Go, dengan paritas fitur (backend Ledger hanya tersedia untuk Rust)
- Antarmuka: basis
SolanaSigner(pubkey,sign_message,is_available) ditambah tepat satu kapabilitas per backend:TransactionSigner,ModifyingSigner, atauSendingSigner - Backend: Memory, Vault, AWS KMS, GCP KMS, Privy, Turnkey, Fireblocks, CDP, Crossmint, Dfns, Openfort, Para, Utila, Fordefi, Ledger (hanya Rust, opt-in, belum diaudit)
- Kompatibilitas:
@solana/kitdan@solana/signers8.1+ (TypeScript) |solana-sdk2.x, 3.x, atau 4.x melalui fitursdk-v2/sdk-v3/sdk-v4(Rust; transaksi v1 memerlukansdk-v4) |solders(Python) |solana-gov2 (Go)
Backend yang Didukung
Backend mencakup pengembangan lokal, manajemen kunci yang di-host sendiri dan berbasis cloud, serta layanan dompet terkelola atau MPC. Lihat Memilih backend untuk membandingkan model kustodi dan memilih yang tepat.
| Backend | Kasus Penggunaan | Rust | TypeScript | Python | Go |
|---|---|---|---|---|---|
| Memory | Pengembangan, pengujian | ✓ | ✓ | ✓ | ✓ |
| HashiCorp Vault | Manajemen kunci self-hosted | ✓ | ✓ | ✓ | ✓ |
| AWS KMS | Cloud-native (AWS) | ✓ | ✓ | ✓ | ✓ |
| GCP KMS | Cloud-native (GCP) | ✓ | ✓ | ✓ | ✓ |
| Privy | Dompet tertanam | ✓ | ✓ | ✓ | ✓ |
| Turnkey | Manajemen kunci non-kustodial | ✓ | ✓ | ✓ | ✓ |
| Fireblocks | Kustodi institusional | ✓ | ✓ | ✓ | ✓ |
| CDP | Coinbase Developer Platform | ✓ | ✓ | ✓ | ✓ |
| Crossmint | Dompet terkelola Crossmint | ✓ | ✓ | ✓ | ✓ |
| Dfns | Infrastruktur dompet Dfns | ✓ | ✓ | ✓ | ✓ |
| Openfort | Dompet backend Openfort | ✓ | ✓ | ✓ | ✓ |
| Para | Dompet MPC Para | ✓ | ✓ | ✓ | ✓ |
| Utila | Kustodi MPC Utila | ✓ | ✓ | ✓ | ✓ |
| Fordefi | Kustodi MPC Fordefi | ✓ | ✓ | ✓ | ✓ |
| Ledger | Hardware wallet (opt-in, belum diaudit) | ✓ |
Mulai Cepat
Rust
Instal crate Rust:
cargo add solana-keychain
Penggunaan dasar:
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?;
- Panduan Rust - Instalasi lengkap dan konfigurasi backend
- Crates.io - Rust crate
TypeScript
Instal paket TypeScript:
pnpm add @solana/keychain
Penggunaan dasar:
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);
- Panduan TypeScript - paket
@solana/keychain - Paket npm - paket npm
Untuk memasang signer Keychain pada klien Kit
sebagai payer atau identity, gunakan @solana/keychain-kit-plugin (mode native Crossmint dan
Fordefi tidak disertakan, karena keduanya menulis ulang transaksi).
Python
Pasang paketnya (backend yang lebih berat tersedia sebagai extras, misalnya
solana-keychain[aws-kms]):
pip install solana-keychain
Penggunaan dasar:
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)
- Panduan Python - Instalasi lengkap, extras, dan konfigurasi backend
- PyPI - Paket Python
Go
Setiap backend merupakan modul Go tersendiri, sehingga Anda hanya mengambil backend yang Anda impor:
go get github.com/solana-foundation/solana-keychain/go/signers/vault/v2@latest
Penggunaan dasar:
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)
- Panduan Go - Modul, kapabilitas, dan konfigurasi backend
- pkg.go.dev - Referensi Go
Langkah Selanjutnya
Panduan Rust
Instal crate dan konfigurasikan setiap backend.
Panduan TypeScript
Instal paket dan konfigurasikan setiap backend.
Panduan Python
Pasang paket beserta extras-nya, lalu konfigurasikan setiap backend.
Panduan Go
Tambahkan modul per backend, lalu konfigurasikan setiap backend.
Memilih backend
Bandingkan model kustodi dan pilih backend penandatanganan yang tepat.
Praktik terbaik produksi
Operasikan penandatanganan dengan aman: pemisahan hot/cold, rotasi, pemantauan.
Menambahkan penanda tangan kustom
Integrasikan backend manajemen kunci baru.
Sumber
Dibangun dan dipelihara oleh Solana Foundation. Dilisensikan di bawah MIT.
Is this page helpful?