**Solana Keychain 为跨多种密钥管理后端签署 Solana 交易提供了统一接口。**在本地开发时使用内存密钥,到生产环境再切换到企业级密钥管理、云 HSM 或托管钱包服务,无需重写签名代码。
为什么选择 Keychain?
- 单一接口:所有后端共用一个
SolanaSigner基础接口,并为每个后端提供一种能力:签名、改写并签名,或签名并广播 - 灵活切换后端:通过配置即可更换密钥管理提供商;只有当新后端的能力不同时(Crossmint 和 Fordefi 原生模式),调用处才需要修改
- 按需使用:Rust 特性标志(feature flags)、按后端拆分的 npm 包、Python extras 以及按后端拆分的 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)| 通过sdk-v2/sdk-v3/sdk-v4特性使用solana-sdk2.x、3.x 或 4.x(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 开发者平台 | ✓ | ✓ | ✓ | ✓ |
| Crossmint | Crossmint 托管钱包 | ✓ | ✓ | ✓ | ✓ |
| Dfns | Dfns 钱包基础设施 | ✓ | ✓ | ✓ | ✓ |
| Openfort | Openfort 后端钱包 | ✓ | ✓ | ✓ | ✓ |
| Para | Para MPC 钱包 | ✓ | ✓ | ✓ | ✓ |
| Utila | Utila MPC 托管 | ✓ | ✓ | ✓ | ✓ |
| Fordefi | Fordefi MPC 托管 | ✓ | ✓ | ✓ | ✓ |
| Ledger | 硬件钱包(可选启用,未经审计) | ✓ |
快速入门
Rust
安装 Rust crate:
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?;
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 包 - 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)
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 指南
安装 crate 并配置各后端。
TypeScript 指南
安装包并配置各后端。
Python 指南
安装该包及其 extras,并配置各个后端。
Go 指南
添加按后端拆分的模块,并配置各个后端。
选择后端
比较托管模式,选择合适的签名后端。
生产环境最佳实践
安全操作签名:冷热分离、密钥轮换与监控。
添加自定义签名者
集成新的密钥管理后端。
源码
由 Solana Foundation 构建和维护。基于 MIT 许可证授权。
Is this page helpful?