Keychain

Solana Keychain надає уніфікований інтерфейс для підписання транзакцій Solana через кілька бекендів управління ключами. Розробляйте локально з ключем у пам'яті, а потім переходьте до корпоративного управління ключами, хмарних HSM або керованих гаманців у продакшені, без переписування коду підписання.

Чому Keychain?

  • Єдиний інтерфейс: Один базовий інтерфейс SolanaSigner для всіх бекендів, плюс одна можливість на кожен бекенд: підписання, переписування й підписання або підписання й трансляція
  • Зміна бекендів: Змінюйте провайдерів управління ключами через конфігурацію; місця викликів змінюються лише тоді, коли новий бекенд має іншу можливість (нативні режими Crossmint і Fordefi)
  • Платіть лише за те, що використовуєте: Прапорці функцій Rust, окремі npm-пакети для кожного бекенда, додатки (extras) Python і окремі модулі Go для кожного бекенда включають лише ті бекенди, які вам потрібні
  • Аудит пройдено: Rust, TypeScript, Python і Go пройшли аудит OtterSec (опційний бекенд Ledger не входив до обсягу аудиту); раніше аудит Accretion охопив Rust і TypeScript. Див. статус аудиту.

Архітектура

  • Мови: Rust, TypeScript, Python і Go, з повною паритетністю (бекенд Ledger доступний лише для Rust)
  • Інтерфейс: базовий SolanaSigner (pubkey, sign_message, is_available) плюс рівно одна можливість на кожен бекенд: TransactionSigner, ModifyingSigner або SendingSigner
  • Бекенди: Memory, Vault, AWS KMS, GCP KMS, Privy, Turnkey, Fireblocks, CDP, Crossmint, Dfns, Openfort, Para, Utila, Fordefi, Ledger (лише Rust, опційно, без аудиту)
  • Сумісність: @solana/kit та @solana/signers 8.1+ (TypeScript) | solana-sdk 2.x, 3.x або 4.x через функції sdk-v2 / sdk-v3 / sdk-v4 (Rust; транзакції v1 потребують sdk-v4) | solders (Python) | solana-go v2 (Go)

Підтримувані бекенди

Бекенди охоплюють локальну розробку, самостійне та хмарне управління ключами, а також керовані сервіси та MPC-гаманці. Перегляньте Вибір бекенду, щоб порівняти моделі зберігання та обрати відповідну.

БекендСценарій використанняRustTypeScriptPythonGo
MemoryРозробка, тестування✓✓✓✓
HashiCorp VaultСамостійне управління ключами✓✓✓✓
AWS KMSХмарний (AWS)✓✓✓✓
GCP KMSХмарний (GCP)✓✓✓✓
PrivyВбудовані гаманці✓✓✓✓
TurnkeyНекастодіальне управління✓✓✓✓
FireblocksІнституційне зберігання✓✓✓✓
CDPCoinbase Developer Platform✓✓✓✓
CrossmintКеровані гаманці Crossmint✓✓✓✓
DfnsІнфраструктура гаманців Dfns✓✓✓✓
OpenfortБекенд-гаманці Openfort✓✓✓✓
ParaMPC-гаманці Para✓✓✓✓
UtilaMPC-зберігання Utila✓✓✓✓
FordefiFordefi MPC custody✓✓✓✓
LedgerАпаратний гаманець (опційно, без аудиту)✓

Швидкий старт

Rust

Встановіть крейт Rust:

cargo add solana-keychain

Базове використання:

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

Встановіть пакет TypeScript:

pnpm add @solana/keychain

Базове використання:

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
);

Щоб встановити підписувач Keychain на клієнт Kit як його payer або identity, використовуйте @solana/keychain-kit-plugin (нативні режими Crossmint і Fordefi виключені, оскільки вони переписують транзакції).

Python

Встановіть пакет (важчі бекенди постачаються як додатки (extras), наприклад solana-keychain[aws-kms]):

pip install solana-keychain

Базове використання:

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)
  • Посібник з Python - Повна інсталяція, додатки (extras) та налаштування бекендів
  • PyPI - пакет Python

Go

Кожен бекенд є окремим модулем Go, тож ви підтягуєте лише ті бекенди, які імпортуєте:

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

Наступні кроки

Джерело

Розроблено та підтримується Solana Foundation. Ліцензовано за умовами MIT.

Is this page helpful?

Зміст

Редагувати сторінку