Keychain

Solana Keychainは、複数のキー管理バックエンドにわたってSolanaトランザクションに署名するための統一インターフェースを提供します。 インメモリキーを使用してローカルで開発し、署名コードを書き直すことなく、本番環境ではエンタープライズキー管理、クラウドHSM、またはマネージドウォレットサービスに切り替えることができます。

なぜKeychainなのか?

  • 単一インターフェース: すべてのバックエンドに共通の SolanaSigner 基本インターフェースに加え、バックエンドごとに1つの機能(署名、書き換えて署名、署名してブロードキャスト)を提供
  • バックエンドの切り替え: コードではなく設定によってキー管理プロバイダーを変更できます。 呼び出し側の変更が必要になるのは、新しいバックエンドの機能が異なる場合(CrossmintおよびFordefiのネイティブモード)のみです
  • 必要な分だけ利用: Rustのフィーチャーフラグ、バックエンドごとの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 のいずれか1つ
  • バックエンド: 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)| sdk-v2 / sdk-v3 / sdk-v4 フィーチャー経由で solana-sdk 2.x、3.x、4.x に対応 (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✓✓✓✓
CrossmintCrossmintマネージドウォレット✓✓✓✓
DfnsDfnsウォレットインフラ✓✓✓✓
OpenfortOpenfortバックエンドウォレット✓✓✓✓
ParaPara MPCウォレット✓✓✓✓
UtilaUtila MPCカストディ✓✓✓✓
FordefiFordefi MPCカストディ✓✓✓✓
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
);

Kit クライアントに Keychain シグナーを 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?

目次

ページを編集
© 2026 Solana Foundation. 無断転載を禁じます。