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ở
SolanaSignertrê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,ModifyingSignerhoặcSendingSigner - 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/kitvà@solana/signers8.1+ (TypeScript) |solana-sdk2.x, 3.x hoặc 4.x thông qua các tính năngsdk-v2/sdk-v3/sdk-v4(Rust; giao dịch v1 cầnsdk-v4) |solders(Python) |solana-gov2 (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.
| Backend | Trường hợp sử dụng | Rust | TypeScript | Python | Go |
|---|---|---|---|---|---|
| Memory | Phát triển, kiểm thử | ✓ | ✓ | ✓ | ✓ |
| HashiCorp Vault | Quản lý khóa tự lưu trữ | ✓ | ✓ | ✓ | ✓ |
| AWS KMS | Cloud-native (AWS) | ✓ | ✓ | ✓ | ✓ |
| GCP KMS | Cloud-native (GCP) | ✓ | ✓ | ✓ | ✓ |
| Privy | Ví nhúng | ✓ | ✓ | ✓ | ✓ |
| Turnkey | Quản lý khóa không lưu ký | ✓ | ✓ | ✓ | ✓ |
| Fireblocks | Lưu ký tổ chức | ✓ | ✓ | ✓ | ✓ |
| CDP | Coinbase Developer Platform | ✓ | ✓ | ✓ | ✓ |
| Crossmint | Ví được quản lý bởi Crossmint | ✓ | ✓ | ✓ | ✓ |
| Dfns | Hạ tầng ví Dfns | ✓ | ✓ | ✓ | ✓ |
| Openfort | Ví backend Openfort | ✓ | ✓ | ✓ | ✓ |
| Para | Ví MPC Para | ✓ | ✓ | ✓ | ✓ |
| Utila | Lưu ký MPC Utila | ✓ | ✓ | ✓ | ✓ |
| Fordefi | Fordefi MPC custody | ✓ | ✓ | ✓ | ✓ |
| Ledger | Ví 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 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?;
- Hướng Dẫn Rust - Cài đặt đầy đủ và cấu hình backend
- Crates.io - Rust crate
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 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);
- Hướng Dẫn TypeScript - Các
gói
@solana/keychain - Gói npm - gói npm
Để 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 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)
- Hướng Dẫn Python - Cài đặt đầy đủ, phần bổ sung và cấu hình backend
- PyPI - Gói Python
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 v2res, err := signer.SignTransaction(ctx, tx)
- Hướng Dẫn Go - Module, khả năng và cấu hình backend
- pkg.go.dev - Tài liệu tham khảo Go
Các Bước Tiếp Theo
Hướng dẫn Rust
Cài đặt crate và cấu hình từng backend.
Hướng dẫn TypeScript
Cài đặt các gói và cấu hình từng backend.
Hướng dẫn Python
Cài đặt gói cùng các phần bổ sung và cấu hình từng backend.
Hướng dẫn Go
Thêm các module theo từng backend và cấu hình từng backend.
Chọn backend
So sánh các mô hình lưu ký và chọn backend ký phù hợp.
Các phương pháp hay nhất cho môi trường production
Vận hành ký an toàn: phân tách hot/cold, xoay vòng khóa, giám sát.
Thêm các signer tùy chỉnh
Tích hợp backend quản lý khóa mới.
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?