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 khác nhau. Phát triển cục bộ với khóa trong bộ nhớ, sau đó chuyển sang quản lý khóa doanh nghiệp, HSM đám mây hoặc dịch vụ ví được quản lý trong môi trường sản xuất, 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 trên tất cả các backend, cộng với một khả năng cho mỗi backend: ký, viết lại và 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ế độ gốc của Crossmint và Fordefi)
  • Chỉ trả cho những gì bạn dùng: Cờ tính năng của Rust, các gói npm theo từng backend, phần bổ sung (extras) của Python 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, với mức độ tương đương (backend Ledger chỉ có trên Rust)
  • Giao diện: Cơ sở SolanaSigner (pubkey, sign_message, is_available) cộng với đú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)
  • 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 tính năng 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ế độ gốc 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 cung cấp dưới dạng phần bổ sung, 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, vì vậy 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