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/signers8.1+ (TypeScript) |solana-sdk2.x, 3.x або 4.x через функціїsdk-v2/sdk-v3/sdk-v4(Rust; транзакції v1 потребуютьsdk-v4) |solders(Python) |solana-gov2 (Go)
Підтримувані бекенди
Бекенди охоплюють локальну розробку, самостійне та хмарне управління ключами, а також керовані сервіси та MPC-гаманці. Перегляньте Вибір бекенду, щоб порівняти моделі зберігання та обрати відповідну.
| Бекенд | Сценарій використання | Rust | TypeScript | Python | Go |
|---|---|---|---|---|---|
| Memory | Розробка, тестування | ✓ | ✓ | ✓ | ✓ |
| HashiCorp Vault | Самостійне управління ключами | ✓ | ✓ | ✓ | ✓ |
| AWS KMS | Хмарний (AWS) | ✓ | ✓ | ✓ | ✓ |
| GCP KMS | Хмарний (GCP) | ✓ | ✓ | ✓ | ✓ |
| Privy | Вбудовані гаманці | ✓ | ✓ | ✓ | ✓ |
| Turnkey | Некастодіальне управління | ✓ | ✓ | ✓ | ✓ |
| Fireblocks | Інституційне зберігання | ✓ | ✓ | ✓ | ✓ |
| CDP | Coinbase Developer Platform | ✓ | ✓ | ✓ | ✓ |
| Crossmint | Керовані гаманці Crossmint | ✓ | ✓ | ✓ | ✓ |
| Dfns | Інфраструктура гаманців Dfns | ✓ | ✓ | ✓ | ✓ |
| Openfort | Бекенд-гаманці Openfort | ✓ | ✓ | ✓ | ✓ |
| Para | MPC-гаманці Para | ✓ | ✓ | ✓ | ✓ |
| Utila | MPC-зберігання Utila | ✓ | ✓ | ✓ | ✓ |
| Fordefi | Fordefi MPC custody | ✓ | ✓ | ✓ | ✓ |
| Ledger | Апаратний гаманець (опційно, без аудиту) | ✓ |
Швидкий старт
Rust
Встановіть крейт Rust:
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 - Повна інсталяція та налаштування бекенду
- 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 Package - npm пакет
Щоб встановити підписувач Keychain на клієнт Kit
як його payer або identity, використовуйте @solana/keychain-kit-plugin (нативні режими Crossmint і
Fordefi виключені, оскільки вони переписують транзакції).
Python
Встановіть пакет (важчі бекенди постачаються як додатки (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) та налаштування бекендів
- 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 v2res, err := signer.SignTransaction(ctx, tx)
- Посібник з Go - Модулі, можливості та налаштування бекендів
- pkg.go.dev - довідник Go
Наступні кроки
Посібник з Rust
Встановіть крейт та налаштуйте кожен бекенд.
Посібник з TypeScript
Встановіть пакети та налаштуйте кожен бекенд.
Посібник з Python
Встановіть пакет та його додатки (extras) і налаштуйте кожен бекенд.
Посібник з Go
Додайте модулі для кожного бекенда та налаштуйте кожен бекенд.
Вибір бекенду
Порівняйте моделі зберігання та оберіть відповідний бекенд для підпису.
Найкращі практики для продакшену
Безпечна робота з підписами: розділення гарячих/холодних ключів, ротація, моніторинг.
Додавання власних підписувачів
Інтегруйте новий бекенд для управління ключами.
Джерело
Розроблено та підтримується Solana Foundation. Ліцензовано за умовами MIT.
Is this page helpful?