Keychain

توفر سولانا Keychain واجهة موحدة لتوقيع معاملات سولانا عبر خلفيات إدارة مفاتيح متعددة. طوّر محلياً باستخدام مفتاح في الذاكرة، ثم انتقل إلى إدارة مفاتيح المؤسسات، أو وحدات أمان الأجهزة السحابية (HSM)، أو خدمات المحافظ المُدارة في بيئة الإنتاج، دون الحاجة إلى إعادة كتابة كود التوقيع الخاص بك.

لماذا Keychain؟

  • واجهة موحدة: واجهة SolanaSigner أساسية واحدة عبر جميع الخلفيات، بالإضافة إلى قدرة واحدة لكل خلفية: التوقيع، أو إعادة الكتابة والتوقيع، أو التوقيع والبث
  • تبديل الخلفيات: تغيير موفري إدارة المفاتيح من خلال الإعدادات؛ ولا تتغير مواضع الاستدعاء إلا عندما تختلف قدرة الخلفية الجديدة (الوضعان الأصليان لـ Crossmint وFordefi)
  • ادفع مقابل ما تستخدمه فقط: تتضمن أعلام الميزات في Rust وحزم npm لكل خلفية وإضافات Python الاختيارية ووحدات 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
  • الخلفيات: 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) | solana-sdk الإصدارات 2.x أو 3.x أو 4.x عبر الميزات sdk-v2 / sdk-v3 / sdk-v4 (Rust؛ تتطلب معاملات v1 الميزة sdk-v4) | solders (Python) | solana-go v2 (Go)

الخلفيات المدعومة

تمتد الخلفيات لتشمل التطوير المحلي، وإدارة المفاتيح الذاتية والسحابية، وخدمات المحافظ المُدارة أو MPC. راجع اختيار خلفية لمقارنة نماذج الحضانة واختيار الأنسب لك.

الخلفيةحالة الاستخدامRustTypeScriptPythonGo
Memoryالتطوير والاختبار✓✓✓✓
HashiCorp Vaultإدارة مفاتيح ذاتية الاستضافة✓✓✓✓
AWS KMSسحابي أصيل (AWS)✓✓✓✓
GCP KMSسحابي أصيل (GCP)✓✓✓✓
Privyمحافظ مضمّنة✓✓✓✓
Turnkeyإدارة مفاتيح غير حافظة✓✓✓✓
Fireblocksحضانة مؤسسية✓✓✓✓
CDPمنصة مطوري Coinbase✓✓✓✓
Crossmintمحافظ Crossmint المُدارة✓✓✓✓
Dfnsبنية تحتية لمحافظ Dfns✓✓✓✓
Openfortمحافظ خلفية Openfort✓✓✓✓
Paraمحافظ Para MPC✓✓✓✓
Utilaحضانة Utila MPC✓✓✓✓
Fordefiحضانة Fordefi 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?;
  • دليل Rust - التثبيت الكامل وإعداد الواجهة الخلفية
  • Crates.io - حزمة Rust

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

لتثبيت موقّع Keychain على عميل Kit بوصفه payer أو identity، استخدم @solana/keychain-kit-plugin (الوضعان الأصليان لـ Crossmint وFordefi مستثنيان، لأنهما يعيدان كتابة المعاملات).

Python

ثبّت الحزمة (تأتي الخلفيات الأثقل كإضافات اختيارية، على سبيل المثال 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 - التثبيت الكامل والإضافات الاختيارية وإعداد الواجهة الخلفية
  • 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)
  • دليل Go - الوحدات والقدرات وإعداد الواجهة الخلفية
  • pkg.go.dev - مرجع Go

الخطوات التالية

المصدر

تم البناء والصيانة بواسطة مؤسسة سولانا. مرخّص بموجب MIT.

Is this page helpful?

جدول المحتويات

تعديل الصفحة