Solana Keychain, birden fazla anahtar yönetimi arka ucu üzerinden Solana işlemlerini imzalamak için birleşik bir arayüz sunar. Yerelde bellek içi bir anahtarla geliştirin, ardından imzalama kodunuzu yeniden yazmadan üretimde kurumsal anahtar yönetimine, bulut HSM'lerine veya yönetilen cüzdan hizmetlerine geçin.
Neden Keychain?
- Tek Arayüz: Tüm arka uçlar için tek bir
SolanaSignertemel arayüzü ve her arka uç için bir yetenek: imzalama, yeniden yazıp imzalama veya imzalayıp yayınlama - Arka Uçları Değiştirin: Anahtar yönetimi sağlayıcılarını yapılandırma üzerinden değiştirin; çağrı noktaları yalnızca yeni arka ucun farklı bir yeteneği olduğunda değişir (Crossmint ve Fordefi yerel modları)
- Yalnızca kullandığınız kadar ödeyin: Rust özellik bayrakları, arka uç başına npm paketleri, Python ekstraları ve arka uç başına Go modülleri yalnızca ihtiyaç duyduğunuz arka uçları içerir
- Denetlenmiş: Rust, TypeScript, Python ve Go, OtterSec tarafından denetlendi (isteğe bağlı Ledger arka ucu kapsam dışındaydı); daha önceki bir Accretion denetimi Rust ve TypeScript'i kapsıyordu. Bkz. denetim durumu.
Mimari
- Diller: Rust, TypeScript, Python ve Go, eşdeğer düzeyde (Ledger arka ucu yalnızca Rust'ta mevcuttur)
- Arayüz:
SolanaSignertemeli (pubkey,sign_message,is_available) ve her arka uç için tam olarak bir yetenek:TransactionSigner,ModifyingSignerveyaSendingSigner - Arka Uçlar: Memory, Vault, AWS KMS, GCP KMS, Privy, Turnkey, Fireblocks, CDP, Crossmint, Dfns, Openfort, Para, Utila, Fordefi, Ledger (yalnızca Rust, isteğe bağlı, denetlenmemiş)
- Uyumluluk:
@solana/kitve@solana/signers8.1+ (TypeScript) |sdk-v2/sdk-v3/sdk-v4özellikleri üzerindensolana-sdk2.x, 3.x veya 4.x (Rust; v1 işlemleri içinsdk-v4gerekir) |solders(Python) |solana-gov2 (Go)
Desteklenen Altyapılar
Arka uçlar yerel geliştirme, kendi kendine barındırılan ve bulut tabanlı anahtar yönetimi ile yönetilen veya MPC cüzdan hizmetlerini kapsamaktadır. Velayet modellerini karşılaştırmak ve en uygun olanı seçmek için Arka uç seçimi sayfasına bakın.
| Arka Uç | Kullanım Durumu | Rust | TypeScript | Python | Go |
|---|---|---|---|---|---|
| Memory | Geliştirme, test | ✓ | ✓ | ✓ | ✓ |
| HashiCorp Vault | Kendi barındırmalı anahtar yönetimi | ✓ | ✓ | ✓ | ✓ |
| AWS KMS | Bulut tabanlı (AWS) | ✓ | ✓ | ✓ | ✓ |
| GCP KMS | Bulut tabanlı (GCP) | ✓ | ✓ | ✓ | ✓ |
| Privy | Gömülü cüzdanlar | ✓ | ✓ | ✓ | ✓ |
| Turnkey | Vedasiz anahtar yönetimi | ✓ | ✓ | ✓ | ✓ |
| Fireblocks | Kurumsal saklama | ✓ | ✓ | ✓ | ✓ |
| CDP | Coinbase Developer Platform | ✓ | ✓ | ✓ | ✓ |
| Crossmint | Crossmint yönetilen cüzdanlar | ✓ | ✓ | ✓ | ✓ |
| Dfns | Dfns cüzdan altyapısı | ✓ | ✓ | ✓ | ✓ |
| Openfort | Openfort arka uç cüzdanları | ✓ | ✓ | ✓ | ✓ |
| Para | Para MPC cüzdanları | ✓ | ✓ | ✓ | ✓ |
| Utila | Utila MPC saklama | ✓ | ✓ | ✓ | ✓ |
| Fordefi | Fordefi MPC saklama | ✓ | ✓ | ✓ | ✓ |
| Ledger | Donanım cüzdanı (isteğe bağlı, denetlenmemiş) | ✓ |
Hızlı Başlangıç
Rust
Rust crate'ini yükleyin:
cargo add solana-keychain
Temel kullanım:
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 Kılavuzu - Tam kurulum ve arka uç yapılandırması
- Crates.io - Rust crate
TypeScript
TypeScript paketini yükleyin:
pnpm add @solana/keychain
Temel kullanım:
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 Kılavuzu -
@solana/keychainpaketleri - npm Paketi - npm paketi
Bir Keychain imzalayıcısını payer veya identity olarak bir Kit istemcisine kurmak için @solana/keychain-kit-plugin kullanın (Crossmint ve Fordefi yerel modları, işlemleri yeniden yazdıkları için hariç tutulmuştur).
Python
Paketi yükleyin (daha ağır arka uçlar ekstra olarak sunulur, örneğin solana-keychain[aws-kms]):
pip install solana-keychain
Temel kullanım:
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 Kılavuzu - Tam kurulum, ekstralar ve arka uç yapılandırması
- PyPI - Python paketi
Go
Her arka uç kendi Go modülüdür, böylece yalnızca içe aktardığınız arka uçları çekersiniz:
go get github.com/solana-foundation/solana-keychain/go/signers/vault/v2@latest
Temel kullanım:
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 Kılavuzu - Modüller, yetenekler ve arka uç yapılandırması
- pkg.go.dev - Go referansı
Sonraki Adımlar
Rust kılavuzu
Crate'i yükleyin ve her arka ucu yapılandırın.
TypeScript kılavuzu
Paketleri yükleyin ve her arka ucu yapılandırın.
Python kılavuzu
Paketi ve ekstralarını yükleyin, ardından her arka ucu yapılandırın.
Go kılavuzu
Arka uç başına modülleri ekleyin ve her arka ucu yapılandırın.
Arka uç seçimi
Saklama modellerini karşılaştırın ve doğru imzalama arka ucunu seçin.
Üretim ortamı en iyi uygulamaları
İmzalamayı güvenli şekilde yönetin: sıcak/soğuk ayrımı, rotasyon, izleme.
Özel imzalayıcı ekleme
Yeni bir anahtar yönetim arka ucu entegre edin.
Kaynak
Solana Foundation tarafından geliştirilmekte ve sürdürülmektedir. MIT lisansı altında yayımlanmıştır.
Is this page helpful?