Keychain

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 SolanaSigner untuk 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, atau SendingSigner
  • 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/kit dan @solana/signers 8.1+ (TypeScript) | solana-sdk 2.x, 3.x, atau 4.x melalui fitur sdk-v2 / sdk-v3 / sdk-v4 (Rust; transaksi v1 memerlukan sdk-v4) | solders (Python) | solana-go v2 (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.

BackendKasus PenggunaanRustTypeScriptPythonGo
MemoryPengembangan, pengujian✓✓✓✓
HashiCorp VaultManajemen kunci self-hosted✓✓✓✓
AWS KMSCloud-native (AWS)✓✓✓✓
GCP KMSCloud-native (GCP)✓✓✓✓
PrivyDompet tertanam✓✓✓✓
TurnkeyManajemen kunci non-kustodial✓✓✓✓
FireblocksKustodi institusional✓✓✓✓
CDPCoinbase Developer Platform✓✓✓✓
CrossmintDompet terkelola Crossmint✓✓✓✓
DfnsInfrastruktur dompet Dfns✓✓✓✓
OpenfortDompet backend Openfort✓✓✓✓
ParaDompet MPC Para✓✓✓✓
UtilaKustodi MPC Utila✓✓✓✓
FordefiKustodi MPC Fordefi✓✓✓✓
LedgerHardware 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 backend
let signer = Signer::from_memory("base58_private_key")?;
let pubkey = signer.pubkey();
// Transaction signing is a capability; `tx` is a VersionedTransaction
if 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 yourself
let signature = signer
.sign_and_send(&mut tx, |encoded| async move { broadcast(encoded).await })
.await?;

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 factory
const 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 transaction
const signedTx = await signTransactionWithSigners(
[signer],
compiledTransaction
);

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 os
from solana_keychain import VaultSignerConfig, create_vault_signer
signer = 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 VersionedTransaction
result = await signer.sign_transaction(tx)

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 v2
res, err := signer.SignTransaction(ctx, tx)

Langkah Selanjutnya

Sumber

Dibangun dan dipelihara oleh Solana Foundation. Dilisensikan di bawah MIT.

Is this page helpful?

Daftar Isi

Edit Halaman
© 2026 Yayasan Solana. Semua hak dilindungi.