Βέλτιστες πρακτικές παραγωγής

Το Keychain αφαιρεί την πολυπλοκότητα του signing backend, ωστόσο η λειτουργία ενός signer σε παραγωγή παραμένει δική σας ευθύνη. Αυτές οι πρακτικές εφαρμόζονται σε όλα τα backends· ανατρέξτε στο Επιλογή backend για την επιλογή του κατάλληλου.

Διαχωρίστε τους hot και cold signers

Χρησιμοποιήστε έναν λειτουργικό signer χαμηλού υπολοίπου ("hot") για συχνές, αυτοματοποιημένες συναλλαγές, και έναν ξεχωριστό signer υψηλής αξίας ("cold") για κινήσεις ταμείου. Υποστηρίξτε τον cold signer με MPC custody ή cloud HSM και απαιτήστε πολιτικές έγκρισης πριν υπογράψει. Επειδή η διεπαφή είναι πανομοιότυπη, κάθε ρόλος μπορεί να χρησιμοποιεί διαφορετικό backend χωρίς αλλαγές στα σημεία κλήσης.

Εναλλάσσετε κλειδιά με πρόθεση

Στο Solana το κλειδί υπογραφής είναι η διεύθυνση του λογαριασμού, επομένως η εναλλαγή κλειδιού παράγει νέα διεύθυνση. Σχεδιάστε την εναλλαγή ως μετεγκατάσταση: δημιουργήστε ένα νέο κλειδί, αναθέστε εκ νέου τις σχετικές εξουσίες (ή μεταφέρετε κεφάλαια) στη νέα διεύθυνση, και στη συνέχεια αποσύρετε το παλιό. Χρησιμοποιήστε διακριτά κλειδιά ανά περιβάλλον, ώστε τα κλειδιά devnet να μην επαναχρησιμοποιούνται ποτέ στο mainnet.

Παραχωρήστε πρόσβαση ελάχιστων δικαιωμάτων

Περιορίστε τα διαπιστευτήρια κάθε backend στο ελάχιστο που απαιτείται για την υπογραφή. Για το AWS KMS, αυτά είναι τα kms:Sign, kms:DescribeKey και kms:GetPublicKey στο συγκεκριμένο κλειδί (ο έλεγχος διαθεσιμότητας χρησιμοποιεί τα δύο τελευταία)· προτιμήστε ρόλους IAM αντί για στατικά διαπιστευτήρια. Εφαρμόστε την ίδια αρχή στις πολιτικές του Vault και στα κλειδιά API των διαχειριζόμενων πορτοφολιών.

Σχεδιάστε για διαθεσιμότητα

Τα απομακρυσμένα backends εξαρτώνται από μια υπηρεσία δικτύου. Ελέγξτε τη διαθεσιμότητα πριν βασιστείτε σε έναν υπογράφοντα (isAvailable() στην TypeScript, is_available() στις Rust και Python, IsAvailable(ctx) στη Go), επαναλάβετε με backoff τις αποτυχίες που αφορούν μόνο υπογραφή και ορίστε μια εναλλακτική διαδρομή για τις διακοπές λειτουργίας. Μην επαναλαμβάνετε τυφλά ένα backend που κάνει broadcast (Crossmint, εγγενής αυτόματη λειτουργία του Fordefi): δείτε Διαχείριση μη επιβεβαιωμένων broadcasts. Το Keychain επιβάλλει HTTPS στα διαμορφωμένα βασικά URL, απορρίπτει τις ανακατευθύνσεις και εφαρμόζει ένα προεπιλεγμένο χρονικό όριο αιτήματος.

Διαχείριση μη επιβεβαιωμένων broadcasts

Το Crossmint και η εγγενής αυτόματη λειτουργία του Fordefi υπογράφουν και κάνουν broadcast από την πλευρά του διακομιστή, επομένως μια αποτυχημένη κλήση δεν σημαίνει ότι δεν καταχωρήθηκε τίποτα. Όταν ο πάροχος ενδέχεται να έχει αποδεχθεί τη συναλλαγή, το Keychain αναφέρει BROADCAST_UNCONFIRMED (SignerError::BroadcastUnconfirmed στη Rust). Το σφάλμα περιλαμβάνει το αναγνωριστικό συναλλαγής του παρόχου όταν η δημιουργία έγινε αποδεκτή και περιλαμβάνει πάντα το κλειδί idempotency με το οποίο στάλθηκε η δημιουργία, το οποίο προκύπτει από το μήνυμα.

  • Συμφιλιώστε την κατάσταση με τον πάροχο χρησιμοποιώντας το αναγνωριστικό συναλλαγής πριν κάνετε οτιδήποτε άλλο.
  • Η επαναποστολή της πανομοιότυπης (byte προς byte) συναλλαγής είναι ασφαλής: το κλειδί idempotency την αποδιπλασιάζει.
  • Η αναδόμηση της συναλλαγής (για παράδειγμα, με νέο blockhash) παράγει νέο κλειδί και επομένως νέα μεταφορά.

Προστατέψτε μυστικά και μεταφορά

  • Τα απομακρυσμένα backends επιβάλλουν HTTPS στα διαμορφωμένα βασικά URL και απορρίπτουν τις ανακατευθύνσεις. Η μόνη εξαίρεση είναι το Vault, που δέχεται απλό HTTP στο loopback ώστε να λειτουργεί ένα τοπικό vault server -dev.
  • Παρέχετε API keys, tokens και διαπιστευτήρια από έναν secret manager ή μεταβλητές περιβάλλοντος — μην τα κωδικοποιείτε ποτέ σε στατικό κώδικα ούτε να τα υποβάλλετε σε source control.
  • Το Keychain εξυγιαίνει τις αποκρίσεις σφαλμάτων για να αποφύγει τη διαρροή μυστικών στα logs· διατηρείτε τα δικά σας logs απαλλαγμένα από ακατέργαστα διαπιστευτήρια και υλικό κλειδιών.

Παρακολουθήστε και ελέγξτε τις υπογραφές

Παρακολουθήστε τον ρυθμό επιτυχίας υπογραφής, την καθυστέρηση και τον αριθμό αποτυχιών, και δημιουργήστε ειδοποιήσεις για αιχμές — δείτε τις μετρικές στο Production Readiness. Ενεργοποιήστε τα logs ελέγχου από την πλευρά του παρόχου (KMS, Vault ή custodian) και συσχετίστε τα με τις συναλλαγές που υποβάλλει η εφαρμογή σας.

Γνωρίστε τι ελέγχει το Keychain

  • Το Keychain επικυρώνει το βήμα της υπογραφής, όχι τη συναλλαγή σας: δεν υπάρχει προσομοίωση, έλεγχος του περιεχομένου της συναλλαγής ούτε μηχανισμός πολιτικών. Επιβάλετε αυτά στην εφαρμογή σας ή στους ελέγχους πολιτικής του παρόχου.
  • Η εγγενής χειροκίνητη λειτουργία του Fordefi ξαναγράφει τη συναλλαγή (blockhash, εντολές χρέωσης Compute Budget) πριν την υπογράψει. Συνεχίστε από τη συναλλαγή που επιστρέφει, ποτέ από αυτήν που υποβάλατε, και εκτελέστε την πριν από οποιονδήποτε άλλο υπογράφοντα.
  • Η Rust μηδενίζει (zeroize) τα ενδιάμεσα buffers κλειδιών· η Python και η Go δεν μπορούν. Με το backend Memory σε αυτές τις γλώσσες, αντιμετωπίστε ολόκληρη τη μνήμη της διεργασίας ως ευαίσθητη.
  • Με το Ledger, η οθόνη της συσκευής είναι η μόνη αξιόπιστη περιγραφή του τι υπογράφεται. Μην ενεργοποιείτε τη λειτουργία unsafe-debug ούτε την καταγραφή TRACE για το solana_remote_wallet στην παραγωγή, καθώς και οι δύο καταγράφουν λεπτομέρειες της συσκευής και της συναλλαγής.

Δείτε το μοντέλο ασφάλειας για ολοκληρωμένη εικόνα.

Is this page helpful?

© 2026 Ίδρυμα Solana. Με επιφύλαξη παντός δικαιώματος.