توفر سولانا 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/signers8.1+ (TypeScript) |solana-sdkالإصدارات 2.x أو 3.x أو 4.x عبر الميزاتsdk-v2/sdk-v3/sdk-v4(Rust؛ تتطلب معاملات v1 الميزةsdk-v4) |solders(Python) |solana-gov2 (Go)
الخلفيات المدعومة
تمتد الخلفيات لتشمل التطوير المحلي، وإدارة المفاتيح الذاتية والسحابية، وخدمات المحافظ المُدارة أو MPC. راجع اختيار خلفية لمقارنة نماذج الحضانة واختيار الأنسب لك.
| الخلفية | حالة الاستخدام | Rust | TypeScript | Python | Go |
|---|---|---|---|---|---|
| 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 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?;
TypeScript
قم بتثبيت حزمة TypeScript:
pnpm add @solana/keychain
الاستخدام الأساسي:
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);
- دليل TypeScript -
@solana/keychainالحزم - حزمة npm - حزمة npm
لتثبيت موقّع Keychain على عميل Kit
بوصفه payer أو identity، استخدم @solana/keychain-kit-plugin (الوضعان الأصليان لـ Crossmint
وFordefi مستثنيان، لأنهما يعيدان كتابة المعاملات).
Python
ثبّت الحزمة (تأتي الخلفيات الأثقل كإضافات اختيارية، على سبيل المثال
solana-keychain[aws-kms]):
pip install solana-keychain
الاستخدام الأساسي:
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)
- دليل 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 v2res, err := signer.SignTransaction(ctx, tx)
- دليل Go - الوحدات والقدرات وإعداد الواجهة الخلفية
- pkg.go.dev - مرجع Go
الخطوات التالية
دليل Rust
قم بتثبيت الحزمة وإعداد كل واجهة خلفية.
دليل TypeScript
قم بتثبيت الحزم وإعداد كل واجهة خلفية.
دليل Python
قم بتثبيت الحزمة وإضافاتها الاختيارية، وإعداد كل واجهة خلفية.
دليل Go
أضف الوحدات الخاصة بكل خلفية، وقم بإعداد كل واجهة خلفية.
اختيار الواجهة الخلفية
قارن بين نماذج الحضانة واختر واجهة التوقيع المناسبة.
أفضل الممارسات في الإنتاج
إدارة التوقيع بأمان: الفصل بين البارد والساخن، والتدوير، والمراقبة.
إضافة موقّعين مخصصين
دمج واجهة خلفية جديدة لإدارة المفاتيح.
المصدر
تم البناء والصيانة بواسطة مؤسسة سولانا. مرخّص بموجب MIT.
Is this page helpful?