Keychain

Solana Keychain 为跨多种密钥管理后端的 Solana 交易签名提供统一接口。 在本地开发时使用内存密钥,在生产环境中无缝切换至企业级密钥管理、云端 HSM 或托管钱包服务 —— 无需重写签名代码。

为什么选择 Keychain?

  • 单一接口:一个 SolanaSigner trait 适用于所有后端
  • 灵活切换后端:通过配置而非修改代码来更换密钥管理提供商
  • 零成本抽象:通过 Feature Flag 按需引入所需功能
  • 经过审计:由 Accretion 完成安全审查

架构

  • 语言:Rust 与 TypeScript,功能完全对等
  • Trait:统一的 SolanaSigner 接口
  • 后端:Memory、Vault、AWS KMS、GCP KMS、Privy、Turnkey、Fireblocks、CDP、Crossmint、Dfns、Openfort、Para、Utila
  • 兼容性:兼容 @solana/kit@solana/signers(TypeScript)| 兼容 solana-sdksolana-sdk-v3(Rust)

支持的后端

后端涵盖本地开发、自托管与云端密钥管理,以及托管型或 MPC 钱包服务。请参阅 选择后端,对比各托管模式并选择最适合的方案。

后端使用场景RustTypeScript
Memory开发、测试
HashiCorp Vault自托管密钥管理
AWS KMS云原生(AWS)
GCP KMS云原生(GCP)
Privy嵌入式钱包
Turnkey非托管密钥管理
Fireblocks机构级托管
CDPCoinbase 开发者平台
CrossmintCrossmint 托管钱包
DfnsDfns 钱包基础设施
OpenfortOpenfort 后端钱包
ParaPara MPC 钱包
UtilaUtila MPC 托管

快速入门

Rust

安装 Rust crate:

cargo add solana-keychain

基本用法:

use solana_keychain::{Signer, SolanaSigner};
// Create a signer from any backend
let signer = Signer::from_memory("base58_private_key")?;
// All signers share the same interface
let pubkey = signer.pubkey();
let signature = signer.sign_transaction(&mut tx).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
);

后续步骤

源码

Solana Foundation 构建和维护。基于 MIT 许可证授权。

Is this page helpful?

Table of Contents

Edit Page
©️ 2026 Solana 基金会版权所有