Μετάβαση στο κύριο περιεχόμενο

BSO Resolver

Το BSO Resolver μεταφράζει τα ονόματα τομέα .bso στα αντίστοιχα δημόσια κλειδιά τους διαβάζοντας τις εγγραφές Bitsocial TXT που είναι αποθηκευμένες στο ENS. Παρέχει κοινόχρηστο πρόγραμμα-πελάτη viem, μόνιμη προσωρινή αποθήκευση και λειτουργεί τόσο σε περιβάλλοντα Node.js όσο και σε περιβάλλον προγράμματος περιήγησης.

Εγκατάσταση

npm install @bitsocial/bso-resolver

Δημιουργία Resolver

Δημιουργήστε στιγμιότυπο τον αναλυτή περνώντας ένα αντικείμενο διαμόρφωσης στον κατασκευαστή:

const resolver = new BsoResolver({ key, provider, dataPath });
ΠαράμετροςΑπαιτείταιΠεριγραφή
keyΝαιΑναγνωριστικό για την περίπτωση επίλυσης.
providerΝαιΔιαμόρφωση μεταφοράς (δείτε παρακάτω).
dataPathΌχιΚατάλογος για το αρχείο προσωρινής μνήμης SQLite (μόνο Node.js).

Επιλογές παρόχου

Η παράμετρος provider δέχεται τρεις μορφές:

  • "viem" -- Χρησιμοποιεί την προεπιλεγμένη δημόσια συγκοινωνία που παρέχεται από το viem.
  • URL HTTP(S) -- Συνδέεται μέσω ενός τερματικού σημείου JSON-RPC (π.χ. https://mainnet.infura.io/v3/YOUR_KEY).
  • Διεύθυνση URL WebSocket -- Συνδέεται μέσω ενός τερματικού σημείου WebSocket RPC (π.χ. wss://mainnet.infura.io/ws/v3/YOUR_KEY).

Μέθοδοι

resolve({ name, abortSignal? })

Αναζητά ένα όνομα .bso και επιστρέφει το συσχετισμένο δημόσιο κλειδί. Ένα προαιρετικό AbortSignal μπορεί να μεταβιβαστεί για την ακύρωση μακροχρόνιων αιτημάτων.

canResolve({ name })

Επιστρέφει ένα boolean που υποδεικνύει εάν ο αναλυτής είναι σε θέση να χειριστεί το συγκεκριμένο όνομα. Χρησιμοποιήστε το για να ελέγξετε την υποστήριξη πριν επιχειρήσετε πλήρη ανάλυση.

destroy()

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

Προσωρινή αποθήκευση

Τα επιλυμένα ονόματα αποθηκεύονται αυτόματα στην προσωρινή μνήμη για να μειωθούν οι περιττές αναζητήσεις δικτύου. Το backend της προσωρινής αποθήκευσης επιλέγεται με βάση το περιβάλλον χρόνου εκτέλεσης:

ΠεριβάλλονBackendΣημειώσεις
Node.jsSQLiteΑποθηκευμένο στο dataPath. Χρησιμοποιεί τη λειτουργία WAL για ταυτόχρονη πρόσβαση.
Πρόγραμμα περιήγησηςIndexedDBΧρησιμοποιεί εγγενείς συναλλαγές IndexedDB.
ΕπιστροφήΕνσωματωμένη μνήμη MapΧρησιμοποιείται όταν δεν είναι διαθέσιμο ούτε το SQLite ούτε το IndexedDB.

Όλες οι καταχωρήσεις κρυφής μνήμης έχουν TTL μιας ώρας και εξαιρούνται αυτόματα μετά τη λήξη τους.

Ενσωμάτωση με pkc-js

Ο αναλυτής μπορεί να συνδεθεί απευθείας στο pkc-js μέσω της επιλογής nameResolvers, επιτρέποντας τη διαφανή ανάλυση ονόματος .bso κατά την αναζήτηση κλειδιών:

const pkc = new Pkc({
nameResolvers: [resolver],
// ...other options
});

Συγχρονισμός

Ο αναλυτής έχει σχεδιαστεί για να είναι ασφαλής υπό ταυτόχρονη χρήση:

  • Ένας κοινός πελάτης viem αποφεύγει τις περιττές συνδέσεις.
  • Το SQLite λειτουργεί σε λειτουργία WAL (Write-Ahead Logging), επιτρέποντας ταυτόχρονες αναγνώσεις χωρίς αποκλεισμό.
  • Η προσωρινή αποθήκευση του προγράμματος περιήγησης βασίζεται σε εγγενείς συναλλαγές IndexedDB για απομόνωση.

Σημεία Εισόδου Πλατφόρμας

Το πακέτο αποστέλλει ξεχωριστά σημεία εισόδου για Node.js και εκδόσεις προγράμματος περιήγησης. Οι ομάδες που υποστηρίζουν το πεδίο exports στο package.json θα επιλέξουν αυτόματα το σωστό.