Podpisywanie w środowisku produkcyjnym

Transakcja zostaje wykonana tylko wtedy, gdy zawiera prawidłowy podpis od każdego wymaganego podpisującego. Podczas lokalnego tworzenia zazwyczaj przechowujesz ten klucz jako Keypair i podpisujesz bezpośrednio. W środowisku produkcyjnym kluczowe pytanie jest inne: gdzie przechowywany jest klucz prywatny i kto jest uprawniony do autoryzowania podpisu?

Nigdy nie umieszczaj kluczy prywatnych w kodzie po stronie klienta, nie dołączaj ich do frontendu ani nie przechowuj w kontroli wersji. Każdy, kto uzyska dostęp do klucza, przejmuje pełną kontrolę nad środkami na tym koncie.

Metody podpisywania

MetodaGdzie przechowywany jest kluczKto podpisujeNajlepsze zastosowanie
Lokalna para kluczyPlik lub zmienna środowiskowa na maszynieTwój kod, bezpośrednioLokalne tworzenie, testy, CI
Portfel przeglądarkowyPortfel użytkownika końcowego (np. Phantom, Solflare)Użytkownik końcowy, per transakcjaFrontendowe dApps, gdzie użytkownicy podpisują własne transakcje
Cloud KMS / HSMSprzętowa usługa zarządzania kluczami (AWS KMS, GCP KMS, Vault)Twój backend żąda podpisu od usługiUsługi backendowe, operacje skarbcowe, środowiska regulowane
Portfele zarządzane / MPCPodzielone lub przechowywane w infrastrukturze dostawcyDostawca współpodpisuje zgodnie z Twoją politykąWbudowane portfele, przepływy zatwierdzania, instytucjonalna opieka nad aktywami

Lokalna para kluczy to jedyna metoda, która umieszcza surowy materiał klucza bezpośrednio w Twojej aplikacji. Każde podejście produkcyjne przechowuje klucz w dedykowanej infrastrukturze i zleca tej infrastrukturze podpisywanie w Twoim imieniu.

Podpisywanie po stronie backendu

Gdy serwer musi podpisywać transakcje (opłacanie opłat, wysyłanie transakcji programów lub zarządzanie skarbcem), użyj dedykowanego backendu do zarządzania kluczami zamiast surowego keypair. Solana Foundation utrzymuje Keychain, ujednoliconą bibliotekę podpisywania (Rust, TypeScript, Python i Go), która udostępnia jeden interfejs SolanaSigner dla każdego backendu z powyższej tabeli: Memory, HashiCorp Vault, AWS KMS, GCP KMS, Fireblocks, Privy, Turnkey, CDP, Crossmint, Dfns, Para, Openfort, Utila i Fordefi.

Ponieważ interfejs jest wspólny dla wszystkich backendów, możesz rozwijać aplikację lokalnie z kluczem przechowywanym w pamięci, a następnie przełączyć się na backend produkcyjny za pomocą konfiguracji, bez przepisywania kodu aplikacji (backendy, które same rozgłaszają transakcje, takie jak Crossmint, są wywoływane za pomocą ścieżki „podpisz i wyślij”). Keychain jest zgodny z @solana/kit, Rust SDK, solders (Python) i solana-go v2 (Go).

Pełną listę kontrolną dla środowiska produkcyjnego — zarządzanie kluczami, bezpieczeństwo RPC i monitorowanie — znajdziesz w Production Readiness.

Is this page helpful?

Spis treści

Edytuj stronę