Keychain

Solana Keychain cung cấp một giao diện thống nhất để ký các giao dịch Solana trên nhiều backend quản lý khóa. Phát triển cục bộ với khóa lưu trong bộ nhớ, sau đó chuyển sang hệ thống quản lý khóa doanh nghiệp, HSM trên đám mây hoặc các dịch vụ ví được quản lý trong môi trường production mà không cần viết lại mã ký của bạn.

Tại sao nên dùng Keychain?

  • Giao diện duy nhất: Một giao diện cơ sở SolanaSigner cho tất cả các backend, cùng một khả năng (capability) cho mỗi backend: ký, viết lại rồi ký, hoặc ký và phát sóng
  • Hoán đổi backend: Thay đổi nhà cung cấp quản lý khóa thông qua cấu hình; các vị trí gọi chỉ thay đổi khi backend mới có khả năng khác (chế độ native của Crossmint và Fordefi)
  • Chỉ trả cho những gì bạn dùng: Rust feature flag, các gói npm theo từng backend, Python extras và các module Go theo từng backend chỉ bao gồm những backend bạn cần
  • Đã được kiểm toán: Rust, TypeScript, Python và Go đã được OtterSec kiểm toán (backend Ledger tùy chọn nằm ngoài phạm vi); một cuộc kiểm toán trước đó của Accretion đã bao gồm Rust và TypeScript. Xem trạng thái kiểm toán.

Kiến trúc

  • Ngôn ngữ: Rust, TypeScript, Python và Go, tương đương nhau (backend Ledger chỉ có trên Rust)
  • Giao diện: Cơ sở SolanaSigner (pubkey, sign_message, is_available) cùng đúng một khả năng cho mỗi backend: TransactionSigner, ModifyingSigner hoặc SendingSigner
  • Backend: Memory, Vault, AWS KMS, GCP KMS, Privy, Turnkey, Fireblocks, CDP, Crossmint, Dfns, Openfort, Para, Utila, Fordefi, Ledger (chỉ Rust, tùy chọn, chưa được kiểm toán)
  • Khả năng tương thích: @solana/kit và @solana/signers 8.1+ (TypeScript) | solana-sdk 2.x, 3.x hoặc 4.x thông qua các feature sdk-v2 / sdk-v3 / sdk-v4 (Rust; giao dịch v1 cần sdk-v4) | solders (Python) | solana-go v2 (Go)

Các Backend được hỗ trợ

Các backend bao gồm môi trường phát triển cục bộ, quản lý khóa tự lưu trữ và trên đám mây, cũng như các dịch vụ ví được quản lý hoặc MPC. Xem Chọn backend để so sánh các mô hình lưu ký và chọn mô hình phù hợp.

BackendTrường hợp sử dụngRustTypeScriptPythonGo
MemoryPhát triển, kiểm thử✓✓✓✓
HashiCorp VaultQuản lý khóa tự lưu trữ✓✓✓✓
AWS KMSCloud-native (AWS)✓✓✓✓
GCP KMSCloud-native (GCP)✓✓✓✓
PrivyVí nhúng✓✓✓✓
TurnkeyQuản lý khóa không lưu ký✓✓✓✓
FireblocksLưu ký tổ chức✓✓✓✓
CDPCoinbase Developer Platform✓✓✓✓
CrossmintVí được quản lý bởi Crossmint✓✓✓✓
DfnsHạ tầng ví Dfns✓✓✓✓
OpenfortVí backend Openfort✓✓✓✓
ParaVí MPC Para✓✓✓✓
UtilaLưu ký MPC Utila✓✓✓✓
FordefiFordefi MPC custody✓✓✓✓
LedgerVí phần cứng (tùy chọn, chưa được kiểm toán)✓

Bắt Đầu Nhanh

Rust

Cài đặt Rust crate:

cargo add solana-keychain

Cách sử dụng cơ bản:

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

Cài đặt gói TypeScript:

pnpm add @solana/keychain

Cách sử dụng cơ bản:

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

Để cài đặt một signer Keychain trên client Kit làm payer hoặc identity, hãy dùng @solana/keychain-kit-plugin (chế độ native của Crossmint và Fordefi bị loại trừ, vì chúng viết lại giao dịch).

Python

Cài đặt gói (các backend nặng hơn được phát hành dưới dạng extras, ví dụ solana-keychain[aws-kms]):

pip install solana-keychain

Cách sử dụng cơ bản:

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)

Go

Mỗi backend là một module Go riêng, nên bạn chỉ kéo về những backend mà bạn import:

go get github.com/solana-foundation/solana-keychain/go/signers/vault/v2@latest

Cách sử dụng cơ bản:

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)

Các Bước Tiếp Theo

Nguồn

Được xây dựng và duy trì bởi Solana Foundation. Được cấp phép theo MIT.

Is this page helpful?

Mục lục

Chỉnh sửa trang