Μέθοδοι RPC & Τεκμηρίωση της Solana

Αλληλεπιδράστε απευθείας με τους κόμβους της Solana μέσω του JSON RPC API χρησιμοποιώντας τις μεθόδους HTTP και Websocket.

Διαμόρφωση δέσμευσης κατάστασης

Για προκαταρκτικούς ελέγχους και επεξεργασία συναλλαγών, οι κόμβοι της Solana επιλέγουν ποια κατάσταση τράπεζας θα ερωτηθεί με βάση μια απαίτηση δέσμευσης που ορίζεται από τον πελάτη. Η δέσμευση περιγράφει πόσο οριστικοποιημένο είναι ένα μπλοκ σε εκείνο το χρονικό σημείο. Κατά την αναζήτηση της κατάστασης του καθολικού, συνιστάται η χρήση χαμηλότερων επιπέδων δέσμευσης για την αναφορά προόδου και υψηλότερων επιπέδων για να διασφαλιστεί ότι η κατάσταση δεν θα αναιρεθεί.

Σε φθίνουσα σειρά δέσμευσης (από την πιο οριστικοποιημένη στη λιγότερο οριστικοποιημένη), οι πελάτες μπορούν να καθορίσουν:

  • finalized - ο κόμβος θα ερωτήσει το πιο πρόσφατο μπλοκ που επιβεβαιώθηκε από την πλειοψηφία του συμπλέγματος ως έχοντας φτάσει το μέγιστο κλείδωμα, που σημαίνει ότι το σύμπλεγμα έχει αναγνωρίσει αυτό το μπλοκ ως οριστικοποιημένο
  • confirmed - ο κόμβος θα ερωτήσει το πιο πρόσφατο μπλοκ για το οποίο έχει ψηφίσει η πλειοψηφία του συμπλέγματος.
    • Ενσωματώνει ψήφους από το gossip και το replay.
    • Δεν μετρά ψήφους σε απογόνους ενός μπλοκ, μόνο άμεσες ψήφους σε αυτό το μπλοκ.
    • Αυτό το επίπεδο επιβεβαίωσης υποστηρίζει επίσης εγγυήσεις "αισιόδοξης επιβεβαίωσης" στην έκδοση 1.3 και μεταγενέστερες.
  • processed - ο κόμβος θα ερωτήσει το πιο πρόσφατο μπλοκ του. Σημειώστε ότι το μπλοκ μπορεί ακόμα να παραλειφθεί από το σύμπλεγμα.

Για την επεξεργασία πολλών εξαρτώμενων συναλλαγών σε σειρά, συνιστάται η χρήση δέσμευσης confirmed, η οποία εξισορροπεί την ταχύτητα με την ασφάλεια αναίρεσης. Για πλήρη ασφάλεια, συνιστάται η χρήση δέσμευσης finalized.

Προεπιλεγμένη δέσμευση

Εάν δεν παρέχεται διαμόρφωση δέσμευσης, ο κόμβος θα χρησιμοποιήσει ως προεπιλογή τη finalized δέσμευση

Μόνο οι μέθοδοι που εκτελούν ερωτήματα στην κατάσταση της τράπεζας δέχονται την παράμετρο δέσμευσης. Αυτές επισημαίνονται στην Αναφορά API παρακάτω.

Δομή RpcResponse

Πολλές μέθοδοι που δέχονται μια παράμετρο δέσμευσης επιστρέφουν ένα αντικείμενο JSON RpcResponse που αποτελείται από δύο μέρη:

  • context : Μια δομή JSON RpcResponseContext που περιλαμβάνει ένα πεδίο slot στο οποίο αξιολογήθηκε η λειτουργία.
  • value : Η τιμή που επιστρέφεται από την ίδια τη λειτουργία.

Αναλυμένες απαντήσεις

Ορισμένες μέθοδοι υποστηρίζουν μια παράμετρο encoding και μπορούν να επιστρέψουν δεδομένα λογαριασμού ή οδηγιών σε αναλυμένη μορφή JSON εάν ζητηθεί το "encoding":"jsonParsed" και ο κόμβος διαθέτει αναλυτή για το πρόγραμμα ιδιοκτησίας. Οι κόμβοι Solana υποστηρίζουν επί του παρόντος ανάλυση JSON για τα ακόλουθα εγγενή και SPL προγράμματα:

ΠρόγραμμαΚατάσταση λογαριασμούΟδηγίες
Address Lookupv1.15.0v1.15.0
BPF Loadern/astable
BPF Upgradeable Loaderstablestable
Configstable
SPL Associated Token Accountn/astable
SPL Memon/astable
SPL Tokenstablestable
SPL Token 2022stablestable
Stakestablestable
Votestablestable

Ο κατάλογος των αναλυτών λογαριασμών μπορεί να βρεθεί εδώ, και οι αναλυτές οδηγιών εδώ.

Κριτήρια φιλτραρίσματος

Ορισμένες μέθοδοι υποστηρίζουν την παροχή ενός αντικειμένου filters για να ενεργοποιήσουν το προ-φιλτράρισμα των δεδομένων που επιστρέφονται μέσα στο αντικείμενο JSON RpcResponse. Υπάρχουν τα ακόλουθα φίλτρα:

  • memcmp: object - συγκρίνει μια παρεχόμενη σειρά από bytes με τα δεδομένα του program account σε συγκεκριμένη θέση. Πεδία:

    • offset: usize - θέση μέσα στα δεδομένα του program account για την έναρξη της σύγκρισης
    • bytes: string - δεδομένα προς αντιστοίχιση, ως κωδικοποιημένο string
    • encoding: string - κωδικοποίηση για το φίλτρο bytes δεδομένων, είτε "base58" είτε "base64". Τα δεδομένα περιορίζονται σε μέγεθος 128 ή λιγότερα αποκωδικοποιημένα bytes.
      ΝΕΟ: Αυτό το πεδίο, και η υποστήριξη base64 γενικά, είναι διαθέσιμα μόνο στην έκδοση solana-core v1.14.0 ή νεότερη. Παρακαλώ παραλείψτε το όταν κάνετε ερωτήματα σε κόμβους με παλαιότερες εκδόσεις
  • dataSize: u64 - συγκρίνει το μέγεθος των δεδομένων του program account με το παρεχόμενο μέγεθος δεδομένων

Is this page helpful?

Πίνακας Περιεχομένων

Επεξεργασία Σελίδας