Μια συναλλαγή εκτελείται μόνο εάν φέρει έγκυρη
υπογραφή από κάθε
απαιτούμενο υπογράφοντα. Κατά την τοπική ανάπτυξη, συνήθως διατηρείτε αυτό το
κλειδί ως Keypair και
υπογράφετε απευθείας. Στην παραγωγή, το σημαντικό ερώτημα είναι διαφορετικό:
πού βρίσκεται το ιδιωτικό κλειδί και ποιος έχει δικαίωμα να εξουσιοδοτήσει μια
υπογραφή με αυτό;
Μην ενσωματώνετε ποτέ ιδιωτικά κλειδιά σε κώδικα πλευράς πελάτη, μην τα συμπεριλαμβάνετε σε ένα frontend και μην τα υποβάλλετε στον έλεγχο πηγής. Οποιοσδήποτε αποκτά ένα κλειδί αποκτά πλήρη έλεγχο των κεφαλαίων αυτού του λογαριασμού.
Προσεγγίσεις υπογραφής
| Προσέγγιση | Πού βρίσκεται το κλειδί | Ποιος υπογράφει | Κατάλληλο για |
|---|---|---|---|
| Τοπικό keypair | Ένα αρχείο ή μεταβλητή περιβάλλοντος στο μηχάνημα | Ο κώδικάς σας, απευθείας | Τοπική ανάπτυξη, δοκιμές, CI |
| Πορτοφόλι περιηγητή | Το πορτοφόλι του τελικού χρήστη (π.χ. Phantom, Solflare) | Ο τελικός χρήστης, ανά συναλλαγή | Frontend dApps όπου οι χρήστες υπογράφουν τις δικές τους συναλλαγές |
| Cloud KMS / HSM | Μια υπηρεσία κλειδιών υποστηριζόμενη από υλικό (AWS KMS, GCP KMS, Vault) | Το backend σας ζητά υπογραφή από την υπηρεσία | Υπηρεσίες backend, διαχείριση ταμείου, ρυθμιζόμενα περιβάλλοντα |
| Διαχειριζόμενα / MPC πορτοφόλια | Κατανεμημένα ή υπό θεματοφυλακή στις υποδομές ενός παρόχου | Ο πάροχος συνυπογράφει σύμφωνα με την πολιτική σας | Ενσωματωμένα πορτοφόλια, ροές έγκρισης, θεσμική θεματοφυλακή |
Το τοπικό keypair είναι η μόνη προσέγγιση που τοποθετεί το ακατέργαστο υλικό κλειδιού μέσα στην εφαρμογή σας. Κάθε προσέγγιση παραγωγής διατηρεί το κλειδί σε αποκλειστική υποδομή και ζητά από αυτή την υποδομή να υπογράφει για λογαριασμό σας.
Υπογραφή από backend
Όταν ένας διακομιστής χρειάζεται να υπογράψει — πληρώνοντας τέλη, στέλνοντας
συναλλαγές προγράμματος ή διαχειριζόμενος ένα ταμείο — χρησιμοποιήστε ένα
αποκλειστικό backend διαχείρισης κλειδιών αντί για ένα ακατέργαστο keypair. Το
Solana Foundation διατηρεί το Keychain, μια ενοποιημένη
βιβλιοθήκη υπογραφής (Rust και TypeScript) που εκθέτει ένα SolanaSigner
interface σε κάθε backend του παραπάνω πίνακα: Memory, HashiCorp Vault, AWS KMS,
GCP KMS, Fireblocks, Privy, Turnkey, CDP, Crossmint, Dfns, Para, Openfort και
Utila.
Επειδή το interface είναι πανομοιότυπο σε όλα τα backend, μπορείτε να
αναπτύσσετε τοπικά με ένα κλειδί στη μνήμη και να μεταβαίνετε σε backend
παραγωγής μέσω διαμόρφωσης, χωρίς να ξαναγράφετε τον κώδικα της εφαρμογής. Το
Keychain είναι συμβατό με @solana/kit και
το Rust SDK.
Keychain
Ενοποιημένη υπογραφή σε τοπικά κλειδιά, KMS, HSM και backends διαχειριζόμενων πορτοφολιών.
Επιλογή backend
Συγκρίνετε μοντέλα θεματοφυλακής και επιλέξτε το κατάλληλο backend υπογραφής για την εφαρμογή σας.
Για την πλήρη λίστα ελέγχου παραγωγής — διαχείριση κλειδιών, ασφάλεια RPC και παρακολούθηση — δείτε Ετοιμότητα Παραγωγής.
Is this page helpful?